*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifdef HAVE_CONFIG_H
#include "remotefolder.h"
#include "partial_download.h"
#include "statusbar.h"
+#include "summaryview.h"
/* Dependecies to be removed ?! */
#include "prefs_common.h"
g_return_val_if_fail(item != NULL, -1);
g_return_val_if_fail(item->no_select == FALSE, -1);
+ summary_lock(mainwindow_get_mainwindow()->summaryview);
+
if (item->new_msgs) {
folder_item_update_freeze();
mlist = folder_item_get_msg_list(item);
folder_item_update(item, F_ITEM_UPDATE_MSGCNT);
+ summary_unlock(mainwindow_get_mainwindow()->summaryview);
+
item->opened = FALSE;
folder = item->folder;
}
g_relation_destroy(relation);
- return lastnum;
+ if (not_moved != NULL) {
+ g_slist_free(not_moved);
+ return -1;
+ } else
+ return lastnum;
}
/**
else
tag = folder_item_get_xml(item->folder, item);
- return xml_node_new(tag, NULL);;
+ return xml_node_new(tag, NULL);
}
static GNode *folder_get_xml_node(Folder *folder)
}
}
+static void folder_item_synchronise_func(FolderItem *item, gpointer data)
+{
+ Folder *folder = (Folder *)data;
+ if (folder == NULL || item->folder == folder) {
+ if(item->prefs->offlinesync && item->folder->klass->synchronise)
+ item->folder->klass->synchronise(item);
+ }
+}
+
+void folder_synchronise(Folder *folder)
+{
+ folder_func_to_all_folders(folder_item_synchronise_func, folder);
+}
+
+typedef struct _WantSyncData {
+ Folder *folder;
+ gboolean want_sync;
+} WantSyncData;
+
+static void folder_item_want_synchronise_func(FolderItem *item, gpointer data)
+{
+ WantSyncData *want_sync_data = (WantSyncData *)data;
+
+ if (want_sync_data->folder == NULL || item->folder == want_sync_data->folder) {
+ if(item->prefs->offlinesync && item->folder->klass->synchronise)
+ want_sync_data->want_sync = TRUE;
+ else
+ want_sync_data->want_sync = FALSE;
+ }
+}
+
+gboolean folder_want_synchronise(Folder *folder)
+{
+ WantSyncData *want_sync_data = g_new0(WantSyncData, 1);
+ gboolean result;
+ want_sync_data->folder = folder;
+
+ folder_func_to_all_folders(folder_item_want_synchronise_func, want_sync_data);
+ result = want_sync_data->want_sync;
+ g_free(want_sync_data);
+ debug_print("Folder %s wants sync: %d\n", folder->name, result);
+ return result;
+}
+
void folder_item_set_batch (FolderItem *item, gboolean batch)
{
if (item->folder->klass->set_batch) {