⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zhuzhu_config.c

📁 Effect vibrate in main menu. BREW SIEMENS SXG75.
💻 C
字号:
#include "zhuzhu.h"

const int MAX_CONFIG_LINE_LENGTH = 256; 

void zhuzhu_LoadConfig(zhuzhu* pApp)
{
    // Variables 
    IFileMgr * pIFileMgr	= NULL;
    IFile *    pIFile		= NULL;
    FileInfo   fileInfo;
    char *     pszBuf;
    ISourceUtil * pisu;
    ISource * pISource;
    IGetLine * piGetLine;
    GetLine gl;
    int rv;

    pszBuf = MALLOC(STRLEN(AEEFS_SHARED_DIR) + STRLEN(CONFIG_DIRECTORY) + STRLEN(DIRECTORY_STR) + STRLEN(WORKING_DIRECTORY) + STRLEN(DIRECTORY_STR) + MAX_FILE_NAME);
    if (!pszBuf)
        return;

    STRCPY(pszBuf, AEEFS_SHARED_DIR CONFIG_DIRECTORY DIRECTORY_STR WORKING_DIRECTORY DIRECTORY_STR CONFIG_FILE);

    ISHELL_CreateInstance(pApp->a.m_pIShell, AEECLSID_FILEMGR, (void **)&pIFileMgr);
    pIFile = IFILEMGR_OpenFile(pIFileMgr, pszBuf, _OFM_READ);

	if (pIFile) {
   
        if (ISHELL_CreateInstance(pApp->a.m_pIShell, AEECLSID_SOURCEUTIL, (void **)&pisu) == SUCCESS) 
        {
            if (ISOURCEUTIL_SourceFromAStream(pisu, (IAStream*)pIFile, &pISource) == SUCCESS)
            {
                if (ISOURCEUTIL_GetLineFromSource(pisu, pISource, MAX_CONFIG_LINE_LENGTH, &piGetLine) == SUCCESS)
                {
                    IFILE_GetInfo(pIFile, &fileInfo);

                    rv = IGETLINE_GetLine(piGetLine, &gl, IGETLINE_LF);

                    if (!IGETLINE_Exhausted(rv))
                    {
                        zhuzhu_ParseConfigLine(pApp, gl.psz);

                        while (!IGETLINE_Exhausted(rv)) 
                        {
                            rv = IGETLINE_GetLine(piGetLine, &gl, IGETLINE_LF);
                            if (STRLEN(gl.psz) != 0)
                                zhuzhu_ParseConfigLine(pApp, gl.psz);
                        }
                    }
                    IGETLINE_Release(piGetLine);
                }
                ISource_Release(pISource);
            }
            ISOURCEUTIL_Release(pisu);
        }
    }

    FREE(pszBuf);
    if (pIFile)
        IFILE_Release(pIFile);
    if (pIFileMgr)
        IFILEMGR_Release(pIFileMgr);
}

void zhuzhu_ParseConfigLine(zhuzhu* pApp, char * psz)
{
    char * str;
    char * key;
	int i = 1;
    struct _Config * pConfig = pApp->pConfig;

    str = STRCHR(psz, ';'); 
    if (str) 
        psz[STRLEN(psz) - STRLEN(str) - 1] = '\0';

    str = STRCHR(psz, '='); 
    if (!str) 
        return;

    key = MALLOC(STRLEN(psz) - STRLEN(str) + 1);
    STRNCPY(key, psz, STRLEN(psz) - STRLEN(str));

    if (key)
    {
		if (STRIBEGINS(CONFIG_KEEP_ACTIVE_APPLETS_KEY, key))
        {
            str = STRCHR( str, '=' ) + 1;
            pConfig->m_lKeepActiveApplets[i] = STRTOUL( str, NULL, 0); 
            while (STRCHR( str + 1, ',' ))
            {
                i++;
                str = STRCHR( str + 1, ',' ) + 1;
                pConfig->m_lKeepActiveApplets[i] = STRTOUL(str, NULL, 0); 
            }
        }
	}
    FREEIF(key);
}

void zhuzhu_LoadDefaultConfigValues(zhuzhu* pApp)
{
    struct _Config * pConfig;
    int i;

    pApp->pConfig = pConfig = MALLOC(sizeof(struct _Config));

    for (i = 0; i < MAX_KEEP_APPLETS_COUNT; i++)
        pConfig->m_lKeepActiveApplets[i] = 0;

    pConfig->m_lKeepActiveApplets[0] = 0;
}

void zhuzhu_UnLoadConfigValues(zhuzhu* pApp) 
{
    FREEIF(pApp->pConfig);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -