/[winpt]/trunk/Src/wptKeyManagerDlg.cpp
ViewVC logotype

Diff of /trunk/Src/wptKeyManagerDlg.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 205 by twoaday, Thu Apr 27 12:46:03 2006 UTC revision 208 by twoaday, Mon May 1 12:22:18 2006 UTC
# Line 63  Line 63 
63    
64  static subclass_s keylist_proc;  static subclass_s keylist_proc;
65    
66    /* Handle to the global image list. */
67  HIMAGELIST glob_imagelist;  HIMAGELIST glob_imagelist;
68    
69  struct km_info_s {  struct km_info_s {
# Line 71  struct km_info_s { Line 72  struct km_info_s {
72      int ypos_sep;      int ypos_sep;
73      int ypercent_sep;      int ypercent_sep;
74    
75        /* Different kind of windows. */
76      HWND dlg;      HWND dlg;
77      HWND hwnd_sep;      HWND hwnd_sep;
78      HWND toolbar;      HWND toolbar;
# Line 79  struct km_info_s { Line 81  struct km_info_s {
81      listview_ctrl_t lv;      listview_ctrl_t lv;
82      int             lv_idx;      int             lv_idx;
83      int keylist_sortby;      int keylist_sortby;
84        int magic;
85  };  };
86    
87  /* Toolbar button structure. */  /* Toolbar button structure. */
# Line 99  struct mybuttons myb[] = { Line 102  struct mybuttons myb[] = {
102    
103  static void km_gui_import (struct km_info_s *kmi, int cmd_id, void *param);  static void km_gui_import (struct km_info_s *kmi, int cmd_id, void *param);
104    
105    
106  /* Subclass the keylist listview control to allow extended commands. */  /* Subclass the keylist listview control to allow extended commands. */
107  static BOOL CALLBACK  static BOOL CALLBACK
108  keylist_subclass_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)  keylist_subclass_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)
# Line 208  load_toolbar (HWND dlg, struct km_info_s Line 212  load_toolbar (HWND dlg, struct km_info_s
212  /* Restore the width of the columns from the registry.  /* Restore the width of the columns from the registry.
213     If no bitstring was found, the default size is used. */     If no bitstring was found, the default size is used. */
214  int  int
215  restore_column_info (listview_ctrl_t hd)  restore_column_info (struct km_info_s *kmi)
216  {  {
217      WORD *buf;      WORD *buf;
218      HKEY root;      HKEY root;
219      DWORD type;      DWORD type;
220      DWORD size = hd->cols*sizeof (WORD), i;      DWORD size = kmi->lv->cols*sizeof (WORD), i;
221      LONG ec;      LONG ec;
222    
223      ec = RegOpenKeyEx (HKEY_CURRENT_USER, "Software\\WinPT", 0,      ec = RegOpenKeyEx (HKEY_CURRENT_USER, "Software\\WinPT", 0,
# Line 225  restore_column_info (listview_ctrl_t hd) Line 229  restore_column_info (listview_ctrl_t hd)
229      if (!buf)      if (!buf)
230          BUG (NULL);          BUG (NULL);
231      ec = RegQueryValueEx (root, "KMColumnSize", NULL, &type,      ec = RegQueryValueEx (root, "KMColumnSize", NULL, &type,
232                            (BYTE*)buf, &size);                            (BYTE*)buf, &size);    
     RegCloseKey (root);  
233      if (ec != ERROR_SUCCESS) {      if (ec != ERROR_SUCCESS) {
234            RegCloseKey (root);
235          free_if_alloc (buf);          free_if_alloc (buf);
236          return -1;          return -1;
237      }      }
# Line 240  restore_column_info (listview_ctrl_t hd) Line 244  restore_column_info (listview_ctrl_t hd)
244          }          }
245      }      }
246      for (i=0; i < size/2; i++)      for (i=0; i < size/2; i++)
247          listview_set_column_width (hd, i, buf[i]);          listview_set_column_width (kmi->lv, i, buf[i]);
248      free_if_alloc (buf);      free_if_alloc (buf);
249    
250        size = sizeof (kmi->keylist_sortby);
251        ec = RegQueryValueEx (root, "KMSortBy", NULL, &type,
252                              (BYTE*)&kmi->keylist_sortby, &size);
253        if (ec != ERROR_SUCCESS)
254            kmi->keylist_sortby = KEY_SORT_USERID;
255        RegCloseKey (root);
256      return 0;      return 0;
257  }  }
258    
259    
260  /* Save the current column width to the registry. */  /* Save the current column width to the registry. */
261  int  int
262  save_column_info (listview_ctrl_t hd)  save_column_info (struct km_info_s *kmi)
263  {  {    
     WORD *buf;  
264      HKEY root;      HKEY root;
265        WORD *buf;
266      LONG ec;      LONG ec;
267      int i;      int i;
268    
269      buf = new WORD[hd->cols];      buf = new WORD[kmi->lv->cols];
270      if (!buf)      if (!buf)
271          BUG (NULL);          BUG (NULL);
272      for (i=0; i < hd->cols; i++) {      for (i=0; i < kmi->lv->cols; i++) {
273          LVCOLUMN lvc;          LVCOLUMN lvc;
274    
275          memset (&lvc, 0, sizeof (lvc));          memset (&lvc, 0, sizeof (lvc));
276          lvc.mask = LVCF_WIDTH;          lvc.mask = LVCF_WIDTH;
277          ListView_GetColumn (hd->ctrl, i, &lvc);          ListView_GetColumn (kmi->lv->ctrl, i, &lvc);
278          buf[i] = lvc.cx;          buf[i] = lvc.cx;
279      }      }
280    
# Line 275  save_column_info (listview_ctrl_t hd) Line 286  save_column_info (listview_ctrl_t hd)
286      }      }
287    
288      ec = RegSetValueEx (root, "KMColumnSize", 0, REG_BINARY,      ec = RegSetValueEx (root, "KMColumnSize", 0, REG_BINARY,
289                          (const BYTE*)buf, 2*hd->cols);                          (const BYTE*)buf, 2*kmi->lv->cols);
290        if (ec == ERROR_SUCCESS) {
291            ec = RegSetValueEx (root, "KMSortBy", 0, REG_DWORD_BIG_ENDIAN,
292                                (const BYTE*)&kmi->keylist_sortby,
293                                sizeof (kmi->keylist_sortby));
294        }
295      RegCloseKey (root);      RegCloseKey (root);
296      free_if_alloc (buf);      free_if_alloc (buf);
297      return ec == ERROR_SUCCESS? 0 : -1;      return ec == ERROR_SUCCESS? 0 : -1;
# Line 1196  keymanager_dlg_proc (HWND dlg, UINT msg, Line 1212  keymanager_dlg_proc (HWND dlg, UINT msg,
1212          do_center_window (dlg, kmi);          do_center_window (dlg, kmi);
1213          do_resize_window (dlg, kmi);          do_resize_window (dlg, kmi);
1214          update_ui_items (dlg, kmi->lv);          update_ui_items (dlg, kmi->lv);
1215          restore_column_info (kmi->lv);          restore_column_info (kmi);
1216            keylist_sort (kmi->lv, kmi->keylist_sortby);
1217    
1218          SetDlgItemText (dlg, IDC_KEYMISC_GTEXT, _("Groups"));          SetDlgItemText (dlg, IDC_KEYMISC_GTEXT, _("Groups"));
1219          SetClassLong (dlg, GCL_HICON, (LONG)LoadIcon (glob_hinst,          SetClassLong (dlg, GCL_HICON, (LONG)LoadIcon (glob_hinst,
1220                        (LPCTSTR)IDI_WINPT));                        (LPCTSTR)IDI_WINPT));
1221          SetForegroundWindow (dlg);          SetForegroundWindow (dlg);
1222          force_foreground_window (dlg, 1000);          kmi->magic = SetTimer (dlg, 1, 1000, NULL);
1223          return TRUE;          return TRUE;
1224    
1225        case WM_TIMER:
1226            KillTimer (dlg, kmi->magic);
1227            SetForegroundWindow (dlg);
1228            break;
1229                    
1230      case WM_DESTROY:      case WM_DESTROY:
1231          save_column_info (kmi->lv);          save_column_info (kmi);
1232          if (kmi->lv) {          if (kmi->lv) {
1233              keylist_delete (kmi->lv);              keylist_delete (kmi->lv);
1234              kmi->lv = NULL;                    kmi->lv = NULL;      

Legend:
Removed from v.205  
changed lines
  Added in v.208

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26