Changeset 1788
- Timestamp:
- 04/13/07 17:56:13
- Files:
-
- trunk/libtinymail/tny-merge-folder.c (modified) (2 diffs)
- trunk/libtinymailui-gtk/tny-gtk-folder-store-tree-model.c (modified) (2 diffs)
- trunk/tests/c-demo/tny-demoui-summary-view.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/libtinymail/tny-merge-folder.c
r1787 r1788 486 486 487 487 return; 488 } 489 490 TnyFolder* 491 tny_merge_folder_new (void) 492 { 493 TnyMergeFolder *self = g_object_new (TNY_TYPE_MERGE_FOLDER, NULL); 494 495 return TNY_FOLDER (self); 496 488 497 } 489 498 … … 569 578 object_class = (GObjectClass*) klass; 570 579 object_class->finalize = tny_merge_folder_finalize; 580 581 g_type_class_add_private (object_class, sizeof (TnyMergeFolderPriv)); 582 571 583 } 572 584 trunk/libtinymailui-gtk/tny-gtk-folder-store-tree-model.c
r1730 r1788 671 671 } 672 672 673 static void 674 tny_gtk_folder_store_tree_model_folder_obsr_update (TnyFolderObserver *self, TnyFolderChange *change) 675 { 673 typedef struct { 674 TnyFolderObserver *self; 675 TnyFolderChange *change; 676 } FolObsUpInfo; 677 678 static gboolean 679 folder_obsr_update_idle (gpointer user_data) 680 { 681 FolObsUpInfo *info = user_data; 682 TnyFolderObserver *self = info->self; 683 TnyFolderChange *change = info->change; 676 684 TnyFolderChangeChanged changed = tny_folder_change_get_changed (change); 677 685 GtkTreeModel *model = GTK_TREE_MODEL (self); 678 686 TnyGtkFolderStoreTreeModel *me = (TnyGtkFolderStoreTreeModel *) self; 679 687 688 680 689 if (changed & TNY_FOLDER_CHANGE_CHANGED_FOLDER_RENAME || 681 690 changed & TNY_FOLDER_CHANGE_CHANGED_ALL_COUNT || 682 691 changed & TNY_FOLDER_CHANGE_CHANGED_UNREAD_COUNT) 683 692 { 693 gdk_threads_enter (); 684 694 gtk_tree_model_foreach (model, updater, change); 685 } 686 } 687 688 689 690 static void 691 tny_gtk_folder_store_tree_model_store_obsr_update (TnyFolderStoreObserver *self, TnyFolderStoreChange *change) 692 { 695 gdk_threads_leave (); 696 } 697 698 g_object_unref (self); 699 g_object_unref (change); 700 701 g_slice_free (FolObsUpInfo, info); 702 703 return FALSE; 704 } 705 706 static void 707 tny_gtk_folder_store_tree_model_folder_obsr_update (TnyFolderObserver *self, TnyFolderChange *change) 708 { 709 FolObsUpInfo *info = g_slice_new (FolObsUpInfo); 710 info->self = TNY_FOLDER_OBSERVER (g_object_ref (self)); 711 info->change = TNY_FOLDER_CHANGE (g_object_ref (change)); 712 713 g_timeout_add (0, folder_obsr_update_idle, info); 714 715 return; 716 } 717 718 719 typedef struct { 720 TnyFolderObserver *self; 721 TnyFolderStoreChange *change; 722 } FolStObsUpInfo; 723 724 static gboolean 725 folder_store_obsr_update_idle (gpointer user_data) 726 { 727 FolStObsUpInfo *info = user_data; 728 TnyFolderObserver *self = info->self; 729 TnyFolderStoreChange *change = info->change; 693 730 TnyFolderStoreChangeChanged changed = tny_folder_store_change_get_changed (change); 694 731 GtkTreeModel *model = GTK_TREE_MODEL (self); … … 764 801 g_object_unref (G_OBJECT (removed)); 765 802 } 803 804 805 g_object_unref (self); 806 g_object_unref (change); 807 808 g_slice_free (FolStObsUpInfo, info); 809 810 return FALSE; 811 } 812 813 static void 814 tny_gtk_folder_store_tree_model_store_obsr_update (TnyFolderStoreObserver *self, TnyFolderStoreChange *change) 815 { 816 FolStObsUpInfo *info = g_slice_new (FolStObsUpInfo); 817 info->self = TNY_FOLDER_OBSERVER (g_object_ref (self)); 818 info->change = TNY_FOLDER_STORE_CHANGE (g_object_ref (change)); 819 820 g_timeout_add (0, folder_store_obsr_update_idle, info); 821 822 return; 766 823 } 767 824 trunk/tests/c-demo/tny-demoui-summary-view.c
r1783 r1788 65 65 #include <tny-summary-view.h> 66 66 #include <tny-account-store-view.h> 67 #include <tny-merge-folder.h> 67 68 68 69 #define GO_ONLINE_TXT _("Go online") … … 922 923 } 923 924 925 926 static void 927 on_merge_view_activate (GtkMenuItem *mitem, gpointer user_data) 928 { 929 TnyDemouiSummaryView *self = user_data; 930 TnyDemouiSummaryViewPriv *priv = TNY_DEMOUI_SUMMARY_VIEW_GET_PRIVATE (self); 931 GtkTreeModel *model, *hmodel; 932 GtkTreeModel *sortable; 933 GList *list; 934 TnyFolder *merge = tny_merge_folder_new (); 935 GtkTreeView *header_view = GTK_TREE_VIEW (priv->header_view); 936 937 list = gtk_tree_selection_get_selected_rows (priv->mailbox_select, &model); 938 939 while (list) 940 { 941 GtkTreePath *path = list->data; 942 GtkTreeIter iter; 943 TnyFolder *folder; 944 945 gtk_tree_model_get_iter (model, &iter, path); 946 gtk_tree_model_get (model, &iter, 947 TNY_GTK_FOLDER_STORE_TREE_MODEL_INSTANCE_COLUMN, 948 &folder, -1); 949 950 if (folder && TNY_IS_FOLDER (folder)) 951 { 952 tny_merge_folder_add_folder (TNY_MERGE_FOLDER (merge), folder); 953 g_object_unref (folder); 954 } 955 956 gtk_tree_path_free (path); 957 list = g_list_next (list); 958 } 959 960 hmodel = tny_gtk_header_list_model_new (); 961 tny_gtk_header_list_model_set_folder (TNY_GTK_HEADER_LIST_MODEL (hmodel), 962 merge, FALSE); 963 964 965 sortable = gtk_tree_model_sort_new_with_model (GTK_TREE_MODEL (hmodel)); 966 967 gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (sortable), 968 TNY_GTK_HEADER_LIST_MODEL_DATE_RECEIVED_COLUMN, 969 tny_gtk_header_list_model_received_date_sort_func, 970 NULL, NULL); 971 972 gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (sortable), 973 TNY_GTK_HEADER_LIST_MODEL_DATE_SENT_COLUMN, 974 tny_gtk_header_list_model_sent_date_sort_func, 975 NULL, NULL); 976 977 set_header_view_model (header_view, sortable); 978 979 g_list_free (list); 980 } 981 924 982 static void 925 983 header_view_do_popup_menu (GtkWidget *my_widget, GdkEventButton *event, gpointer user_data) … … 974 1032 { 975 1033 GtkWidget *menu; 976 GtkWidget *mrename, *mdelete, *mcreate ;1034 GtkWidget *mrename, *mdelete, *mcreate, *mmerge; 977 1035 int button, event_time; 978 1036 979 1037 menu = gtk_menu_new (); 980 //g_signal_connect (menu, "deactivate", G_CALLBACK (gtk_widget_destroy), NULL);981 1038 982 1039 mrename = gtk_menu_item_new_with_label (_("Rename folder")); 983 1040 mcreate = gtk_menu_item_new_with_label (_("Create folder")); 984 1041 mdelete = gtk_menu_item_new_with_label (_("Delete folder")); 1042 mmerge = gtk_menu_item_new_with_label (_("Merge view of selected")); 985 1043 986 1044 g_signal_connect (G_OBJECT (mrename), "activate", … … 990 1048 g_signal_connect (G_OBJECT (mdelete), "activate", 991 1049 G_CALLBACK (on_delete_folder_activate), user_data); 1050 g_signal_connect (G_OBJECT (mmerge), "activate", 1051 G_CALLBACK (on_merge_view_activate), user_data); 992 1052 993 1053 gtk_menu_prepend (menu, mrename); 994 1054 gtk_menu_prepend (menu, mcreate); 995 1055 gtk_menu_prepend (menu, mdelete); 1056 gtk_menu_prepend (menu, mmerge); 996 1057 997 1058 gtk_widget_show (mrename); 998 1059 gtk_widget_show (mcreate); 999 1060 gtk_widget_show (mdelete); 1000 1061 gtk_widget_show (mmerge); 1001 1062 1002 1063 if (event)
