Better fix for "new account doesn't appear" (it takes time for the INBOX to appear, so connect to finishedCheck signal)

Fix for "wrong account selected" (kolab issue 251)

svn path=/branches/proko2/kdepim/; revision=330018
wilder-work
David Faure 22 years ago
parent 08f21fbb8c
commit e785987e14
  1. 13
      accountcombobox.cpp
  2. 11
      configuredialog.cpp

@ -64,9 +64,10 @@ void AccountComboBox::slotRefreshAccounts()
void AccountComboBox::setCurrentAccount( KMAccount* account )
{
int i = 0;
for( KMAccount *a = kmkernel->acctMgr()->first(); a;
a = kmkernel->acctMgr()->next(), ++i ) {
if ( a == account ) {
QValueList<KMAccount *> lst = applicableAccounts();
QValueList<KMAccount *>::ConstIterator it = lst.begin();
for ( ; it != lst.end() ; ++it, ++i ) {
if ( (*it) == account ) {
setCurrentItem( i );
return;
}
@ -94,6 +95,8 @@ QValueList<KMAccount *> KMail::AccountComboBox::applicableAccounts() const
a = kmkernel->acctMgr()->next() ) {
Q_ASSERT( a->folder() );
if ( a && a->folder() ) {
disconnect( a, SIGNAL( finishedCheck( bool, CheckStatus ) ),
this, SLOT( slotRefreshAccounts() ) );
bool ok = false;
if ( mNeedsInbox ) {
KMFolderDir* child = a->folder()->child();
@ -106,6 +109,10 @@ QValueList<KMAccount *> KMail::AccountComboBox::applicableAccounts() const
}
}
}
if ( !ok ) { // no inbox? maybe there'll be one on the next sync
connect( a, SIGNAL( finishedCheck( bool, CheckStatus ) ),
this, SLOT( slotRefreshAccounts() ) );
}
} else
ok = true;
if ( ok )

@ -4199,10 +4199,9 @@ void MiscPage::GroupwareTab::load() {
}
// Iterate over accounts to select folderId if found (as an inbox folder)
int selectedAccount = -1;
i = 0;
KMAccount* selectedAccount = 0;
for( KMAccount *a = kmkernel->acctMgr()->first(); a!=0;
a = kmkernel->acctMgr()->next(), ++i ) {
a = kmkernel->acctMgr()->next() ) {
if( a->folder() && a->folder()->child() ) {
// Look inside that folder for an INBOX
KMFolderNode *node;
@ -4210,13 +4209,13 @@ void MiscPage::GroupwareTab::load() {
if (!node->isDir() && node->name() == "INBOX") break;
if ( node && static_cast<KMFolder*>(node)->idString() == folderId ) {
selectedAccount = i;
selectedAccount = a;
break;
}
}
}
if ( selectedAccount > -1 )
mAccountCombo->setCurrentItem( selectedAccount );
if ( selectedAccount )
mAccountCombo->setCurrentAccount( selectedAccount );
else if ( GlobalSettings::theIMAPResourceStorageFormat() == 1 )
kdDebug(5006) << "Folder " << folderId << " not found as an account's inbox" << endl;
}

Loading…
Cancel
Save