X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fmodest-tny-folder.c;h=d4e4a19aed6e601b13c59ea4384c354995b66fc3;hb=ea3d3f6dbfa6361561528e4a90d79c8e7f97c1a6;hp=4b9c0d7c6c9aaf2f6bd6020f0d2ee3d90c505a25;hpb=52665b57b1c2770d5542fb0e70f96d6853225eb8;p=modest diff --git a/src/modest-tny-folder.c b/src/modest-tny-folder.c index 4b9c0d7..d4e4a19 100644 --- a/src/modest-tny-folder.c +++ b/src/modest-tny-folder.c @@ -92,14 +92,16 @@ TnyFolderType modest_tny_folder_guess_folder_type (const TnyFolder *folder) { TnyFolderType type; + + g_return_val_if_fail (TNY_IS_FOLDER(folder), TNY_FOLDER_TYPE_UNKNOWN); - g_return_val_if_fail (folder, TNY_FOLDER_TYPE_UNKNOWN); - - type = tny_folder_get_folder_type (TNY_FOLDER (folder)); + if (modest_tny_folder_is_local_folder ((TnyFolder*)folder)) + type = modest_tny_folder_get_local_folder_type ((TnyFolder*)folder); + else + type = tny_folder_get_folder_type (TNY_FOLDER (folder)); if (type == TNY_FOLDER_TYPE_UNKNOWN) { const gchar *folder_name; - folder_name = tny_folder_get_name (TNY_FOLDER (folder)); type = modest_tny_folder_guess_folder_type_from_name (folder_name); } @@ -125,8 +127,8 @@ modest_tny_folder_get_rules (TnyFolder *folder) switch (type) { case TNY_FOLDER_TYPE_OUTBOX: case TNY_FOLDER_TYPE_SENT: - rules |= MODEST_FOLDER_RULES_FOLDER_NON_WRITEABLE; case TNY_FOLDER_TYPE_DRAFTS: + rules |= MODEST_FOLDER_RULES_FOLDER_NON_WRITEABLE; case TNY_FOLDER_TYPE_INBOX: case TNY_FOLDER_TYPE_JUNK: case TNY_FOLDER_TYPE_TRASH: @@ -145,8 +147,10 @@ modest_tny_folder_get_rules (TnyFolder *folder) } } else { ModestTransportStoreProtocol proto; - TnyAccount *account = - modest_tny_folder_get_account ((TnyFolder*)folder); + TnyFolderType folder_type; + TnyAccount *account; + + account = modest_tny_folder_get_account ((TnyFolder*)folder); if (!account) return -1; /* no account: nothing is allowed */ @@ -164,6 +168,15 @@ modest_tny_folder_get_rules (TnyFolder *folder) } g_object_unref (G_OBJECT(account)); + + /* Neither INBOX not ROOT folders should me moveable */ + folder_type = modest_tny_folder_guess_folder_type (folder); + if ((folder_type == TNY_FOLDER_TYPE_INBOX) || + (folder_type == TNY_FOLDER_TYPE_ROOT)) { + rules |= MODEST_FOLDER_RULES_FOLDER_NON_DELETABLE; + rules |= MODEST_FOLDER_RULES_FOLDER_NON_MOVEABLE; + rules |= MODEST_FOLDER_RULES_FOLDER_NON_RENAMEABLE; + } } return rules; } @@ -189,16 +202,17 @@ modest_tny_folder_is_local_folder (TnyFolder *folder) /* Outbox is a special case, using a derived TnyAccount: */ if (MODEST_IS_TNY_OUTBOX_ACCOUNT (account)) { - g_object_unref (account); - return TRUE; + g_object_unref (G_OBJECT(account)); + return TRUE; } const gchar* account_id = tny_account_get_id (account); - if (!account_id) + if (!account_id) { + g_object_unref (G_OBJECT(account)); return FALSE; - - g_object_unref (G_OBJECT(account)); + } + g_object_unref (G_OBJECT(account)); return (strcmp (account_id, MODEST_LOCAL_FOLDERS_ACCOUNT_ID) == 0); }