fix persistence of folder sort mode (broken by adapting Hiro's new folder persistence...
authorAlfons Hoogervorst <alfons@proteus.demon.nl>
Sun, 16 Jun 2002 18:16:57 +0000 (18:16 +0000)
committerAlfons Hoogervorst <alfons@proteus.demon.nl>
Sun, 16 Jun 2002 18:16:57 +0000 (18:16 +0000)
ChangeLog.claws
configure.in
src/folder.c
src/folder.h
src/prefs_folder_item.c

index 226ed8148a4f9af124b31604ff257814e9d32b0c..ceee393492de4fd01e98ddd0cc49d849f32dcbcb 100644 (file)
@@ -1,3 +1,10 @@
+2002-06-16 [alfons]    0.7.8claws2
+
+       * src/prefs_folder_item.c
+       * src/folder.[ch]
+               fix persistence of folder sort mode (broken
+               by adapting Hiro's new folder persistence code)
+
 2002-06-16 [alfons]    0.7.8claws1
 
        * AUTHORS
index 7d4940d939df303b7181d6e8c14b162af66321ea..232c84c328d105a08aa7891bfab0293b2ee08751 100644 (file)
@@ -8,7 +8,7 @@ MINOR_VERSION=7
 MICRO_VERSION=8
 INTERFACE_AGE=0
 BINARY_AGE=0
-EXTRA_VERSION=claws1
+EXTRA_VERSION=claws2
 VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$EXTRA_VERSION
 
 dnl set $target
index c2902486175bb4ea46cca81cfff41d585b6ede09..097eb5112e21f8df84a274e58dc50b69fe7cb6b7 100644 (file)
@@ -1612,6 +1612,8 @@ void folder_item_restore_persist_prefs(FolderItem *item, GHashTable *pptable)
        item->threaded  = pp->threaded;
        item->ret_rcpt  = pp->ret_rcpt;
        item->hide_read_msgs = pp->hide_read_msgs;
+       item->sort_key  = pp->sort_key;
+       item->sort_type = pp->sort_type;
 }
 
 static void folder_get_persist_prefs_recursive(GNode *node, GHashTable *pptable)
@@ -1633,6 +1635,8 @@ static void folder_get_persist_prefs_recursive(GNode *node, GHashTable *pptable)
                pp->threaded  = item->threaded;
                pp->ret_rcpt  = item->ret_rcpt; 
                pp->hide_read_msgs = item->hide_read_msgs;
+               pp->sort_key  = item->sort_key;
+               pp->sort_type = item->sort_type;
                g_hash_table_insert(pptable, item->path, pp);
        }               
 
index 72282007edac808d48dff7b562f3af917e182936..bd22c6551039971328fc9f8c503171869373802f 100644 (file)
@@ -240,10 +240,12 @@ struct _FolderItem
 };
 
 typedef struct {
-       guint   collapsed       : 1;
-       guint   threaded        : 1;
-       guint   hide_read_msgs  : 1; /* CLAWS */
-       guint   ret_rcpt        : 1; /* CLAWS */
+       FolderSortKey   sort_key;
+       FolderSortType  sort_type;
+       guint           collapsed       : 1;
+       guint           threaded        : 1;
+       guint           hide_read_msgs  : 1; /* CLAWS */
+       guint           ret_rcpt        : 1; /* CLAWS */
 } PersistPrefs;
 
 Folder     *folder_new                 (FolderType      type,
index 19fd5a70888d068e9f9843512b79e8f5d6ad6c1f..bb5a43664608303dd7cd1eb2439f6306db35b94e 100644 (file)
@@ -124,8 +124,27 @@ void prefs_folder_item_read_config(FolderItem * item)
 
        *item->prefs = tmp_prefs;
 
-       /* MIGRATION */
-       item->ret_rcpt = tmp_prefs.request_return_receipt ? TRUE : FALSE; 
+       /*
+        * MIGRATION: next lines are migration code. the idea is that
+        *            if used regularly, claws folder config ends up
+        *            in the same file as sylpheed-main
+        */
+
+       item->ret_rcpt = tmp_prefs.request_return_receipt ? TRUE : FALSE;
+
+       /* MIGRATION: 0.7.8main+ has persistent sort order. claws had the sort
+        *            order in different members, which is ofcourse a little
+        *            bit phoney. */
+       if (item->sort_key == SORT_BY_NONE) {
+               item->sort_key  = (tmp_prefs.sort_by_number  ? SORT_BY_NUMBER  :
+                                  tmp_prefs.sort_by_size    ? SORT_BY_SIZE    :
+                                  tmp_prefs.sort_by_date    ? SORT_BY_DATE    :
+                                  tmp_prefs.sort_by_from    ? SORT_BY_FROM    :
+                                  tmp_prefs.sort_by_subject ? SORT_BY_SUBJECT :
+                                  tmp_prefs.sort_by_score   ? SORT_BY_SCORE   :
+                                                                SORT_BY_NONE);
+               item->sort_type = tmp_prefs.sort_descending ? SORT_DESCENDING : SORT_ASCENDING;
+       }                                                               
 }
 
 void prefs_folder_item_save_config(FolderItem * item)
@@ -146,38 +165,10 @@ void prefs_folder_item_save_config(FolderItem * item)
 void prefs_folder_item_set_config(FolderItem * item,
                                  int sort_type, gint sort_mode)
 {
-       tmp_prefs = * item->prefs;
-
-       tmp_prefs.sort_by_number = FALSE;
-       tmp_prefs.sort_by_size = FALSE;
-       tmp_prefs.sort_by_date = FALSE;
-       tmp_prefs.sort_by_from = FALSE;
-       tmp_prefs.sort_by_subject = FALSE;
-       tmp_prefs.sort_by_score = FALSE;
-
-       switch (sort_mode) {
-       case SORT_BY_NUMBER:
-               tmp_prefs.sort_by_number = TRUE;
-               break;
-       case SORT_BY_SIZE:
-               tmp_prefs.sort_by_size = TRUE;
-               break;
-       case SORT_BY_DATE:
-               tmp_prefs.sort_by_date = TRUE;
-               break;
-       case SORT_BY_FROM:
-               tmp_prefs.sort_by_from = TRUE;
-               break;
-       case SORT_BY_SUBJECT:
-               tmp_prefs.sort_by_subject = TRUE;
-               break;
-       case SORT_BY_SCORE:
-               tmp_prefs.sort_by_score = TRUE;
-               break;
-       }
-       tmp_prefs.sort_descending = (sort_type == GTK_SORT_DESCENDING);
-
-       * item->prefs = tmp_prefs;
+       g_assert(item);
+       g_warning("prefs_folder_item_set_config() should never be called\n");
+       item->sort_key  = sort_type;
+       item->sort_type = sort_mode;
 }
 
 PrefsFolderItem * prefs_folder_item_new(void)
@@ -226,31 +217,16 @@ void prefs_folder_item_free(PrefsFolderItem * prefs)
 
 gint prefs_folder_item_get_sort_mode(FolderItem * item)
 {
-       tmp_prefs = * item->prefs;
-
-       if (tmp_prefs.sort_by_number)
-               return SORT_BY_NUMBER;
-       if (tmp_prefs.sort_by_size)
-               return SORT_BY_SIZE;
-       if (tmp_prefs.sort_by_date)
-               return SORT_BY_DATE;
-       if (tmp_prefs.sort_by_from)
-               return SORT_BY_FROM;
-       if (tmp_prefs.sort_by_subject)
-               return SORT_BY_SUBJECT;
-       if (tmp_prefs.sort_by_score)
-               return SORT_BY_SCORE;
-       return SORT_BY_NONE;
+       g_assert(item != NULL);
+       g_warning("prefs_folder_item_get_sort_mode() should never be called\n");
+       return item->sort_key;
 }
 
 gint prefs_folder_item_get_sort_type(FolderItem * item)
 {
-       tmp_prefs = * item->prefs;
-
-       if (tmp_prefs.sort_descending)
-               return GTK_SORT_DESCENDING;
-       else
-               return GTK_SORT_ASCENDING;
+       g_assert(item != NULL);
+       g_warning("prefs_folder_item_get_sort_type() should never be called\n");
+       return item->sort_type;
 }
 
 #define SAFE_STRING(str) \