Annotation of truecrypt/common/combo.c, revision 1.1

1.1     ! root        1: /* Copyright (C) 2004 TrueCrypt Team, truecrypt.org
        !             2:    This product uses components written by Paul Le Roux <[email protected]> */
        !             3: 
        !             4: #include "TCdefs.h"
        !             5: #include "combo.h"
        !             6: 
        !             7: #include <time.h>
        !             8: 
        !             9: #define SIZEOF_MRU_LIST 8
        !            10: 
        !            11: void
        !            12: AddComboItem (HWND hComboBox, char *lpszFileName)
        !            13: {
        !            14:        LPARAM nIndex;
        !            15: 
        !            16:        nIndex = SendMessage (hComboBox, CB_FINDSTRINGEXACT, (WPARAM) - 1,
        !            17:                              (LPARAM) & lpszFileName[0]);
        !            18: 
        !            19:        if (nIndex == CB_ERR && *lpszFileName)
        !            20:        {
        !            21:                long lTime = time (NULL);
        !            22:                nIndex = SendMessage (hComboBox, CB_ADDSTRING, 0, (LPARAM) & lpszFileName[0]);
        !            23:                if (nIndex != CB_ERR)
        !            24:                        SendMessage (hComboBox, CB_SETITEMDATA, nIndex, (LPARAM) lTime);
        !            25:        }
        !            26: 
        !            27:        if (nIndex != CB_ERR && *lpszFileName)
        !            28:                nIndex = SendMessage (hComboBox, CB_SETCURSEL, nIndex, 0);
        !            29: 
        !            30:        if (*lpszFileName == 0)
        !            31:        {
        !            32:                SendMessage (hComboBox, CB_SETCURSEL, (WPARAM) - 1, 0);
        !            33:        }
        !            34: }
        !            35: 
        !            36: 
        !            37: LPARAM
        !            38: MoveEditToCombo (HWND hComboBox)
        !            39: {
        !            40:        char szTmp[256] =
        !            41:        {0};
        !            42: 
        !            43:        GetWindowText (hComboBox, szTmp, sizeof (szTmp));
        !            44: 
        !            45:        if (strlen (szTmp) > 0)
        !            46:        {
        !            47:                LPARAM nIndex = SendMessage (hComboBox, CB_FINDSTRINGEXACT, (WPARAM) - 1,
        !            48:                                             (LPARAM) & szTmp[0]);
        !            49:                if (nIndex == CB_ERR)
        !            50:                {
        !            51:                        long lTime = time (NULL);
        !            52:                        nIndex = SendMessage (hComboBox, CB_ADDSTRING, 0, (LPARAM) & szTmp[0]);
        !            53:                        if (nIndex != CB_ERR)
        !            54:                                SendMessage (hComboBox, CB_SETITEMDATA, nIndex, (DWORD) lTime);
        !            55:                }
        !            56:                else
        !            57:                {
        !            58:                        long lTime = time (NULL);
        !            59:                        SendMessage (hComboBox, CB_SETITEMDATA, nIndex, (DWORD) lTime);
        !            60:                }
        !            61: 
        !            62:                return nIndex;
        !            63:        }
        !            64: 
        !            65:        return SendMessage (hComboBox, CB_GETCURSEL, 0, 0);
        !            66: }
        !            67: 
        !            68: int
        !            69: GetOrderComboIdx (HWND hComboBox, int *nIdxList, int nElems)
        !            70: {
        !            71:        int x = (int) SendMessage (hComboBox, CB_GETCOUNT, 0, 0);
        !            72:        if (x != CB_ERR)
        !            73:        {
        !            74:                int i, nHighIdx = CB_ERR;
        !            75:                long lHighTime = -1;
        !            76: 
        !            77:                for (i = 0; i < x; i++)
        !            78:                {
        !            79:                        long lTime = SendMessage (hComboBox, CB_GETITEMDATA, (WPARAM) i, 0);
        !            80:                        if (lTime > lHighTime)
        !            81:                        {
        !            82:                                int n;
        !            83:                                for (n = 0; n < nElems; n++)
        !            84:                                        if (nIdxList[n] == i)
        !            85:                                                break;
        !            86:                                if (n == nElems)
        !            87:                                {
        !            88:                                        lHighTime = lTime;
        !            89:                                        nHighIdx = i;
        !            90:                                }
        !            91:                        }
        !            92:                }
        !            93: 
        !            94:                return nHighIdx;
        !            95:        }
        !            96: 
        !            97:        return CB_ERR;
        !            98: }
        !            99: 
        !           100: LPARAM
        !           101: UpdateComboOrder (HWND hComboBox)
        !           102: {
        !           103:        LPARAM nIndex;
        !           104: 
        !           105:        nIndex = SendMessage (hComboBox, CB_GETCURSEL, 0, 0);
        !           106: 
        !           107:        if (nIndex != CB_ERR)
        !           108:        {
        !           109:                long lTime = time (NULL);
        !           110:                nIndex = SendMessage (hComboBox, CB_SETITEMDATA, (WPARAM) nIndex,
        !           111:                                      (LPARAM) lTime);
        !           112:        }
        !           113: 
        !           114:        return nIndex;
        !           115: }
        !           116: 
        !           117: void
        !           118: LoadCombo (HWND hComboBox, char *lpszKey)
        !           119: {
        !           120:        int i;
        !           121: 
        !           122:        for (i = 0; i < SIZEOF_MRU_LIST; i++)
        !           123:        {
        !           124:                char szTmp[256], szKey[32], szTmp2[32];
        !           125: 
        !           126:                *szTmp = 0;
        !           127: 
        !           128:                sprintf (szTmp2, "%s%s", lpszKey, "%d");
        !           129:                sprintf (szKey, szTmp2, i);
        !           130:                ReadRegistryString (szKey, "", szTmp, sizeof (szTmp));
        !           131: 
        !           132:                AddComboItem (hComboBox, szTmp);
        !           133:        }
        !           134: 
        !           135:        SendMessage (hComboBox, CB_SETCURSEL, 0, 0);
        !           136: 
        !           137: }
        !           138: 
        !           139: void
        !           140: DumpCombo (HWND hComboBox, char *lpszKey, int bClear)
        !           141: {
        !           142:        int i, nComboIdx[SIZEOF_MRU_LIST];
        !           143: 
        !           144:        /* combo list part:- get mru items */
        !           145:        for (i = 0; i < SIZEOF_MRU_LIST; i++)
        !           146:                nComboIdx[i] = bClear ? CB_ERR : GetOrderComboIdx (hComboBox, &nComboIdx[0], i);
        !           147: 
        !           148:        /* combo list part:- write out mru items */
        !           149:        for (i = 0; i < SIZEOF_MRU_LIST; i++)
        !           150:        {
        !           151:                char szTmp[256], szKey[32], szTmp2[32];
        !           152: 
        !           153:                *szTmp = 0;
        !           154: 
        !           155:                if (nComboIdx[i] != CB_ERR)
        !           156:                        SendMessage (hComboBox, CB_GETLBTEXT, nComboIdx[i], (LPARAM) & szTmp[0]);
        !           157: 
        !           158:                sprintf (szTmp2, "%s%s", lpszKey, "%d");
        !           159:                sprintf (szKey, szTmp2, i);
        !           160: 
        !           161:                WriteRegistryString (szKey, szTmp);
        !           162:        }
        !           163: }
        !           164: 
        !           165: void
        !           166: ClearCombo (HWND hComboBox)
        !           167: {
        !           168:        int i;
        !           169:        for (i = 0; i < SIZEOF_MRU_LIST; i++)
        !           170:        {
        !           171:                SendMessage (hComboBox, CB_DELETESTRING, 0, 0);
        !           172:        }
        !           173: }
        !           174: 
        !           175: int
        !           176: IsComboEmpty (HWND hComboBox)
        !           177: {
        !           178:        return SendMessage (hComboBox, CB_GETCOUNT, 0, 0) < 1;
        !           179: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.