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

1.1.1.2 ! root        1: /* Copyright (C) 2004 TrueCrypt Foundation
1.1       root        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.