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

Diff of /trunk/Src/wptSigList.cpp

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

revision 133 by twoaday, Mon Jan 9 09:15:29 2006 UTC revision 139 by twoaday, Wed Jan 11 12:19:41 2006 UTC
# Line 99  indent_string (const char * old, int ilv Line 99  indent_string (const char * old, int ilv
99  }  }
100    
101    
102    /* Add an item at the given pos @pos with the opaque param @ks. */
103    int
104    add_keysig_item (listview_ctrl_t ctx, int pos, gpgme_key_sig_t ks)
105    {
106        LV_ITEM lvi;
107    
108        memset (&lvi, 0, sizeof lvi);
109        lvi.iItem = pos;
110        lvi.lParam = (LPARAM)ks;
111        lvi.mask = LVIF_PARAM;
112        if (ListView_InsertItem (ctx->ctrl, &lvi) != pos)
113            return -1;
114        return 0;
115    }
116    
117    
118  /* Add an userid signature @ks from the userid @uid to the sig list  /* Add an userid signature @ks from the userid @uid to the sig list
119     control @lv.     control @lv.
120     Return value: 0 on success. */     Return value: 0 on success. */
# Line 110  siglist_add_key (listview_ctrl_t lv, gpg Line 126  siglist_add_key (listview_ctrl_t lv, gpg
126      char t[128];      char t[128];
127      const char *attr;      const char *attr;
128      const char *s;      const char *s;
129      int key_attr;      int key_attr, no_uid = 0;
130      int rc = 0;      int rc = 0;
131    
132      if (ks && !IS_UID_CERT (ks->sig_class))      if (ks && !IS_UID_CERT (ks->sig_class))
133          return 0;          return 0;
134            
135      rc = listview_add_item_pos (lv, pos);      rc = add_keysig_item (lv, pos, ks);
136      if (rc)      if (rc)
137          return rc;          return rc;
138    
# Line 135  siglist_add_key (listview_ctrl_t lv, gpg Line 151  siglist_add_key (listview_ctrl_t lv, gpg
151          free (uid_utf8);          free (uid_utf8);
152          free_if_alloc (p);          free_if_alloc (p);
153      }      }
154      else      else {
155          listview_add_sub_item (lv, pos, 0, _("  user ID not found"));          listview_add_sub_item (lv, pos, 0, _("  user ID not found"));
156            no_uid = 1;
157        }
158    
159      if (uid)      if (uid)
160          return 0;          return 0;
# Line 147  siglist_add_key (listview_ctrl_t lv, gpg Line 165  siglist_add_key (listview_ctrl_t lv, gpg
165      case GPG_ERR_BAD_SIGNATURE:s = "NO";    break;      case GPG_ERR_BAD_SIGNATURE:s = "NO";    break;
166      default:                   s = "ERROR"; break;      default:                   s = "ERROR"; break;
167      }      }
168        if (no_uid)
169            s = "NOKEY";
170      listview_add_sub_item (lv, pos, 1, s);      listview_add_sub_item (lv, pos, 1, s);
171    
172      switch (ks->sig_class) {      switch (ks->sig_class) {
# Line 224  siglist_load (HWND ctrl, const char *key Line 244  siglist_load (HWND ctrl, const char *key
244      }      }
245      return lv;      return lv;
246  }  }
247    
248    
249    /* Integer comparsion of @a and @b.
250       Return values: same as in strcmp. */
251    static inline int
252    int_cmp (int a, int b)
253    {
254        if (a == b) return 0;      
255        else if (a > b) return 1;
256        else return -1;
257        return 0;
258    }
259    
260    
261    /* Sorting callback for the signature list. */
262    static int CALLBACK
263    siglist_cmp_cb (LPARAM first, LPARAM second, LPARAM sortby)
264    {
265        gpgme_key_sig_t a, b;
266        int cmpresult=0;
267    
268        a = (gpgme_key_sig_t)first;
269        b = (gpgme_key_sig_t)second;
270        if (!a || !b)
271            return -1; /* this indicates that one item is a root item. */
272    
273        switch (sortby) {
274        case KEY_SORT_KEYID:
275            cmpresult = strcmp (a->keyid, b->keyid);
276            break;
277    
278        case KEY_SORT_CREATED:
279            cmpresult = int_cmp (a->timestamp, b->timestamp);
280            break;
281    
282        case KEY_SORT_ALGO:
283            cmpresult = int_cmp (a->pubkey_algo, b->pubkey_algo);
284            break;
285    
286        case KEY_SORT_VALIDITY:
287            cmpresult = int_cmp (a->status, b->status);
288            break;
289    
290        case SIG_SORT_EXPIRE:
291            cmpresult = int_cmp (a->expires, a->expires);
292            break;
293    
294        case SIG_SORT_CLASS:
295            cmpresult = int_cmp (a->sig_class, b->sig_class);
296            break;
297        }
298        return cmpresult;
299    }
300    
301    
302    /* Sort the signature list @sigl by @sortby. */
303    void
304    siglist_sort (listview_ctrl_t sigl, int sortby)
305    {
306        listview_sort_items (sigl, sortby, siglist_cmp_cb);
307    }

Legend:
Removed from v.133  
changed lines
  Added in v.139

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26