void FavoriteFolderView::checkMail() { bool found = false; for(QListViewItemIterator it(this); it.current(); ++it) { KMFolderTreeItem *fti = static_cast<KMFolderTreeItem *>(it.current()); if(fti->folder()->folderType() == KMFolderTypeImap || fti->folder()->folderType() == KMFolderTypeCachedImap) { if(!found) if(!kmkernel->askToGoOnline()) break; found = true; if(fti->folder()->folderType() == KMFolderTypeImap) { KMFolderImap *imap = static_cast<KMFolderImap *>(fti->folder()->storage()); imap->getAndCheckFolder(); } else if(fti->folder()->folderType() == KMFolderTypeCachedImap) { KMFolderCachedImap *f = static_cast<KMFolderCachedImap *>(fti->folder()->storage()); f->account()->processNewMailSingleFolder(fti->folder()); } } } }
void KMail::FolderDialogACLTab::initializeWithValuesFromFolder( KMFolder* folder ) { // This can be simplified once KMFolderImap and KMFolderCachedImap have a common base class mFolderType = folder->folderType(); if ( mFolderType == KMFolderTypeImap ) { KMFolderImap* folderImap = static_cast<KMFolderImap*>( folder->storage() ); mImapPath = folderImap->imapPath(); mImapAccount = folderImap->account(); mUserRights = folderImap->userRights(); } else if ( mFolderType == KMFolderTypeCachedImap ) { KMFolderCachedImap* folderImap = static_cast<KMFolderCachedImap*>( folder->storage() ); mImapPath = folderImap->imapPath(); mImapAccount = folderImap->account(); mUserRights = folderImap->userRights(); } else assert( 0 ); // see KMFolderDialog constructor }
void KMail::FolderDialogACLTab::load() { if ( mDlg->folder() ) { // existing folder initializeWithValuesFromFolder( mDlg->folder() ); } else if ( mDlg->parentFolder() ) { // new folder initializeWithValuesFromFolder( mDlg->parentFolder() ); mChanged = true; // ensure that saving happens } // KABC knows email addresses. // We want LDAP userids. // Depending on the IMAP server setup, the userid can be the full email address, // or just the username part of it. // To know which one it is, we currently have a hidden config option, // but the default value is determined from the current user's own id. QString defaultFormat = "fullemail"; // warning mImapAccount can be 0 if creating a subsubsubfolder with dimap... (bug?) if ( mImapAccount && !mImapAccount->login().contains('@') ) defaultFormat = "username"; // no @ found, so we assume it's just the username KConfigGroup configGroup( kmkernel->config(), "IMAP" ); QString str = configGroup.readEntry( "UserIdFormat", defaultFormat ); mUserIdFormat = FullEmail; if ( str == "username" ) mUserIdFormat = UserName; if ( mFolderType == KMFolderTypeCachedImap ) { KMFolder* folder = mDlg->folder() ? mDlg->folder() : mDlg->parentFolder(); KMFolderCachedImap* folderImap = static_cast<KMFolderCachedImap*>( folder->storage() ); if ( mUserRights == -1 ) { // error mLabel->setText( i18n( "Error retrieving user permissions." ) ); } else if ( mUserRights == 0 /* can't happen anymore*/ || folderImap->aclList().isEmpty() ) { /* We either synced, or we read user rights from the config, so we can assume the server supports acls and an empty list means we haven't synced yet. */ mLabel->setText( i18n( "Information not retrieved from server, you need to use \"Check Mail\" " "and have administrative privileges on the folder.") ); } else { loadFinished( folderImap->aclList() ); } return; } // Loading, for online IMAP, consists of four steps: // 1) connect // 2) get user rights // 3) load ACLs // First ensure we are connected mStack->setCurrentWidget( mLabel ); if ( !mImapAccount ) { // hmmm? mLabel->setText( i18n( "Error: no IMAP account defined for this folder" ) ); return; } KMFolder* folder = mDlg->folder() ? mDlg->folder() : mDlg->parentFolder(); if ( folder && folder->storage() == mImapAccount->rootFolder() ) return; // nothing to be done for the (virtual) account folder mLabel->setText( i18n( "Connecting to server %1, please wait...", mImapAccount->host() ) ); ImapAccountBase::ConnectionState state = mImapAccount->makeConnection(); if ( state == ImapAccountBase::Error ) { // Cancelled by user, or slave can't start slotConnectionResult( -1, QString() ); } else if ( state == ImapAccountBase::Connecting ) { connect( mImapAccount, SIGNAL( connectionResult(int, const QString&) ), this, SLOT( slotConnectionResult(int, const QString&) ) ); } else { // Connected