+ type = modest_tny_folder_get_local_or_mmc_folder_type (folder);
+
+ switch (type) {
+ case TNY_FOLDER_TYPE_OUTBOX:
+ case TNY_FOLDER_TYPE_SENT:
+ 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:
+ case TNY_FOLDER_TYPE_ROOT:
+ case TNY_FOLDER_TYPE_NOTES:
+ case TNY_FOLDER_TYPE_CONTACTS:
+ case TNY_FOLDER_TYPE_CALENDAR:
+ case TNY_FOLDER_TYPE_ARCHIVE:
+ case TNY_FOLDER_TYPE_MERGE:
+ case TNY_FOLDER_TYPE_NUM:
+ rules |= MODEST_FOLDER_RULES_FOLDER_NON_DELETABLE;
+ rules |= MODEST_FOLDER_RULES_FOLDER_NON_MOVEABLE;
+ rules |= MODEST_FOLDER_RULES_FOLDER_NON_RENAMEABLE;
+ default:
+ break;
+ }
+ } else {
+ ModestTransportStoreProtocol proto;
+ TnyFolderType folder_type;
+ TnyAccount *account;
+
+ account = modest_tny_folder_get_account ((TnyFolder*)folder);
+ if (!account)
+ return -1; /* no account: nothing is allowed */
+
+ proto = modest_protocol_info_get_transport_store_protocol (tny_account_get_proto (account));
+
+ if (proto == MODEST_PROTOCOL_STORE_IMAP) {
+ rules = 0;
+ } else {
+ /* pop, nntp, ... */
+ rules =
+ MODEST_FOLDER_RULES_FOLDER_NON_WRITEABLE |
+ MODEST_FOLDER_RULES_FOLDER_NON_DELETABLE |
+ MODEST_FOLDER_RULES_FOLDER_NON_MOVEABLE |
+ MODEST_FOLDER_RULES_FOLDER_NON_RENAMEABLE;
+
+ }
+ g_object_unref (G_OBJECT(account));
+
+ /* Neither INBOX nor ROOT, nor ARCHIVE 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) ||
+ (folder_type == TNY_FOLDER_TYPE_ARCHIVE)) {
+ rules |= MODEST_FOLDER_RULES_FOLDER_NON_DELETABLE;
+ rules |= MODEST_FOLDER_RULES_FOLDER_NON_MOVEABLE;
+ rules |= MODEST_FOLDER_RULES_FOLDER_NON_RENAMEABLE;
+ }