int init_storage(struct mailstorage * storage, int driver, const char * server, int port, int connection_type, const char * user, const char * password, int auth_type, const char * path, const char * cache_directory, const char * flags_directory) { int r; int cached; cached = (cache_directory != NULL); switch (driver) { case POP3_STORAGE: r = pop3_mailstorage_init(storage, server, port, NULL, connection_type, auth_type, user, password, cached, cache_directory, flags_directory); if (r != MAIL_NO_ERROR) { printf("error initializing POP3 storage\n"); goto err; } break; case IMAP_STORAGE: r = imap_mailstorage_init(storage, server, port, NULL, connection_type, IMAP_AUTH_TYPE_PLAIN, user, password, cached, cache_directory); if (r != MAIL_NO_ERROR) { printf("error initializing IMAP storage\n"); goto err; } break; case NNTP_STORAGE: r = nntp_mailstorage_init(storage, server, port, NULL, connection_type, NNTP_AUTH_TYPE_PLAIN, user, password, cached, cache_directory, flags_directory); if (r != MAIL_NO_ERROR) { printf("error initializing NNTP storage\n"); goto err; } break; case MBOX_STORAGE: r = mbox_mailstorage_init(storage, path, cached, cache_directory, flags_directory); if (r != MAIL_NO_ERROR) { printf("error initializing mbox storage\n"); goto err; } break; case MH_STORAGE: r = mh_mailstorage_init(storage, path, cached, cache_directory, flags_directory); if (r != MAIL_NO_ERROR) { printf("error initializing MH storage\n"); goto err; } break; case MAILDIR_STORAGE: r = maildir_mailstorage_init(storage, path, cached, cache_directory, flags_directory); if (r != MAIL_NO_ERROR) { printf("error initializing maildir storage\n"); goto err; } break; case FEED_STORAGE: r = feed_mailstorage_init(storage, path, cached, cache_directory, flags_directory); if (r != MAIL_NO_ERROR) { printf("error initializing feed storage\n"); goto err; } break; } return MAIL_NO_ERROR; err: return r; }
void cd_mail_init_accounts(CairoDockModuleInstance *myApplet) { if (myData.pMailAccounts == NULL) return ; g_print ("%s (%d comptes)\n", __func__, myData.pMailAccounts->len); //\_______________________ On initialise chaque compte. CDMailAccount *pMailAccount; GList *pIconList = NULL; Icon *pIcon; int iNbIcons = 0; int r; guint i; for (i = 0; i < myData.pMailAccounts->len; i ++) { pMailAccount = g_ptr_array_index (myData.pMailAccounts, i); if( !pMailAccount ) continue; // init this account switch (pMailAccount->driver) { case POP3_STORAGE: r = pop3_mailstorage_init(pMailAccount->storage, pMailAccount->server, pMailAccount->port, NULL, pMailAccount->connection_type, pMailAccount->auth_type, pMailAccount->user, pMailAccount->password, myData.cWorkingDirPath!=NULL?TRUE:FALSE /*cached*/, myData.cWorkingDirPath /*cache_directory*/, myData.cWorkingDirPath /*flags_directory*/); break; case IMAP_STORAGE: r = imap_mailstorage_init(pMailAccount->storage, pMailAccount->server, pMailAccount->port, NULL, pMailAccount->connection_type, IMAP_AUTH_TYPE_PLAIN, pMailAccount->user, pMailAccount->password, myData.cWorkingDirPath!=NULL?TRUE:FALSE /*cached*/, myData.cWorkingDirPath /*cache_directory*/); break; case NNTP_STORAGE: r = nntp_mailstorage_init(pMailAccount->storage, pMailAccount->server, pMailAccount->port, NULL, pMailAccount->connection_type, NNTP_AUTH_TYPE_PLAIN, pMailAccount->user, pMailAccount->password, myData.cWorkingDirPath!=NULL?TRUE:FALSE /*cached*/, myData.cWorkingDirPath /*cache_directory*/, myData.cWorkingDirPath /*flags_directory*/); break; case MBOX_STORAGE: r = mbox_mailstorage_init(pMailAccount->storage, pMailAccount->path, myData.cWorkingDirPath!=NULL?TRUE:FALSE /*cached*/, myData.cWorkingDirPath /*cache_directory*/, myData.cWorkingDirPath /*flags_directory*/); break; case MH_STORAGE: r = mh_mailstorage_init(pMailAccount->storage, pMailAccount->path, myData.cWorkingDirPath!=NULL?TRUE:FALSE /*cached*/, myData.cWorkingDirPath /*cache_directory*/, myData.cWorkingDirPath /*flags_directory*/); break; case MAILDIR_STORAGE: r = maildir_mailstorage_init(pMailAccount->storage, pMailAccount->path, myData.cWorkingDirPath!=NULL?TRUE:FALSE /*cached*/, myData.cWorkingDirPath /*cache_directory*/, myData.cWorkingDirPath /*flags_directory*/); break; case FEED_STORAGE: r = feed_mailstorage_init(pMailAccount->storage, pMailAccount->path, myData.cWorkingDirPath!=NULL?TRUE:FALSE /*cached*/, myData.cWorkingDirPath /*cache_directory*/, myData.cWorkingDirPath /*flags_directory*/); break; default : r = -1; } // add an icon for this account. if (myData.pMailAccounts->len == 1) // 1 seul compte { pIcon = myIcon; } else { _add_icon (pMailAccount); } iNbIcons ++; // if all is OK, then set a timeout for this mail account if (r == MAIL_NO_ERROR) { CD_APPLET_SET_QUICK_INFO_ON_MY_ICON ("..."); pMailAccount->pAccountMailTimer = cairo_dock_new_task (pMailAccount->timeout * 60, (CairoDockGetDataAsyncFunc) cd_mail_get_folder_data, (CairoDockUpdateSyncFunc) cd_mail_update_account_status, pMailAccount); cairo_dock_launch_task (pMailAccount->pAccountMailTimer); } else { cd_warning ("mail : the mail account %s couldn't be initialized !", pMailAccount->name); CairoContainer *pContainer = (myData.pMailAccounts->len == 1 ? myContainer : CD_APPLET_MY_ICONS_LIST_CONTAINER); cairo_dock_set_quick_info (myDrawContext, "N/A", pIcon, cairo_dock_get_max_scale (pContainer)); } } //\_______________________ On efface l'ancienne liste. CD_APPLET_DELETE_MY_ICONS_LIST; //\_______________________ On charge la nouvelle liste. if (myData.pMailAccounts->len > 1) { gpointer pConfig[2] = {GINT_TO_POINTER (FALSE), GINT_TO_POINTER (FALSE)}; CD_APPLET_LOAD_MY_ICONS_LIST (pIconList, myConfig.cRenderer, (iNbIcons > 1 ? "Caroussel" : "Simple"), (iNbIcons > 1 ? pConfig : NULL)); } //\_______________ On dessine l'icone principale initialement. CD_APPLET_SET_IMAGE_ON_MY_ICON (myConfig.cNoMailUserImage); if (iNbIcons > 0) CD_APPLET_SET_QUICK_INFO_ON_MY_ICON ("..."); }