aboutsummaryrefslogtreecommitdiffstats
path: root/camel/providers/imap/camel-imap-store.c
diff options
context:
space:
mode:
Diffstat (limited to 'camel/providers/imap/camel-imap-store.c')
-rw-r--r--camel/providers/imap/camel-imap-store.c39
1 files changed, 29 insertions, 10 deletions
diff --git a/camel/providers/imap/camel-imap-store.c b/camel/providers/imap/camel-imap-store.c
index 335b98b4a7..b40c5577be 100644
--- a/camel/providers/imap/camel-imap-store.c
+++ b/camel/providers/imap/camel-imap-store.c
@@ -322,6 +322,10 @@ construct (CamelService *service, CamelSession *session,
imap_store->parameters |= IMAP_PARAM_FILTER_INBOX;
store->flags |= CAMEL_STORE_FILTER_INBOX;
}
+ if (camel_url_get_param (url, "filter_junk"))
+ imap_store->parameters |= IMAP_PARAM_FILTER_JUNK;
+ if (camel_url_get_param (url, "filter_junk_inbox"))
+ imap_store->parameters |= IMAP_PARAM_FILTER_JUNK_INBOX;
/* setup/load the store summary */
tmp = alloca(strlen(imap_store->storage_path)+32);
@@ -368,15 +372,17 @@ imap_setv (CamelObject *object, CamelException *ex, CamelArgV *args)
if ((tag & CAMEL_ARG_TAG) <= CAMEL_IMAP_STORE_ARG_FIRST ||
(tag & CAMEL_ARG_TAG) >= CAMEL_IMAP_STORE_ARG_FIRST + 100)
continue;
-
- if (tag == CAMEL_IMAP_STORE_NAMESPACE) {
+
+ switch (tag) {
+ case CAMEL_IMAP_STORE_NAMESPACE:
if (strcmp (store->namespace, args->argv[i].ca_str) != 0) {
g_free (store->namespace);
store->namespace = g_strdup (args->argv[i].ca_str);
/* the current imap code will need to do a reconnect for this to take effect */
/*reconnect = TRUE;*/
}
- } else if (tag == CAMEL_IMAP_STORE_OVERRIDE_NAMESPACE) {
+ break;
+ case CAMEL_IMAP_STORE_OVERRIDE_NAMESPACE:
flags = args->argv[i].ca_int ? IMAP_PARAM_OVERRIDE_NAMESPACE : 0;
flags |= (store->parameters & ~IMAP_PARAM_OVERRIDE_NAMESPACE);
@@ -385,17 +391,28 @@ imap_setv (CamelObject *object, CamelException *ex, CamelArgV *args)
/* the current imap code will need to do a reconnect for this to take effect */
/*reconnect = TRUE;*/
}
- } else if (tag == CAMEL_IMAP_STORE_CHECK_ALL) {
+ break;
+ case CAMEL_IMAP_STORE_CHECK_ALL:
flags = args->argv[i].ca_int ? IMAP_PARAM_CHECK_ALL : 0;
flags |= (store->parameters & ~IMAP_PARAM_CHECK_ALL);
store->parameters = flags;
/* no need to reconnect for this option to take effect... */
- } else if (tag == CAMEL_IMAP_STORE_FILTER_INBOX) {
+ break;
+ case CAMEL_IMAP_STORE_FILTER_INBOX:
flags = args->argv[i].ca_int ? IMAP_PARAM_FILTER_INBOX : 0;
flags |= (store->parameters & ~IMAP_PARAM_FILTER_INBOX);
store->parameters = flags;
/* no need to reconnect for this option to take effect... */
- } else {
+ break;
+ case CAMEL_IMAP_STORE_FILTER_JUNK:
+ flags = args->argv[i].ca_int ? IMAP_PARAM_FILTER_JUNK : 0;
+ store->parameters = flags | (store->parameters & ~IMAP_PARAM_FILTER_JUNK);
+ break;
+ case CAMEL_IMAP_STORE_FILTER_JUNK_INBOX:
+ flags = args->argv[i].ca_int ? IMAP_PARAM_FILTER_JUNK_INBOX : 0;
+ store->parameters = flags | (store->parameters & ~IMAP_PARAM_FILTER_JUNK_INBOX);
+ break;
+ default:
/* error?? */
continue;
}
@@ -428,21 +445,23 @@ imap_getv (CamelObject *object, CamelException *ex, CamelArgGetV *args)
switch (tag) {
case CAMEL_IMAP_STORE_NAMESPACE:
- /* get the username */
*args->argv[i].ca_str = store->namespace;
break;
case CAMEL_IMAP_STORE_OVERRIDE_NAMESPACE:
- /* get the auth mechanism */
*args->argv[i].ca_int = store->parameters & IMAP_PARAM_OVERRIDE_NAMESPACE ? TRUE : FALSE;
break;
case CAMEL_IMAP_STORE_CHECK_ALL:
- /* get the hostname */
*args->argv[i].ca_int = store->parameters & IMAP_PARAM_CHECK_ALL ? TRUE : FALSE;
break;
case CAMEL_IMAP_STORE_FILTER_INBOX:
- /* get the port */
*args->argv[i].ca_int = store->parameters & IMAP_PARAM_FILTER_INBOX ? TRUE : FALSE;
break;
+ case CAMEL_IMAP_STORE_FILTER_JUNK:
+ *args->argv[i].ca_int = store->parameters & IMAP_PARAM_FILTER_JUNK ? TRUE : FALSE;
+ break;
+ case CAMEL_IMAP_STORE_FILTER_JUNK_INBOX:
+ *args->argv[i].ca_int = store->parameters & IMAP_PARAM_FILTER_JUNK_INBOX ? TRUE : FALSE;
+ break;
default:
/* error? */
break;