[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    Re: branches/KDE/3.5/kdepim/kmail BIG THANK YOU!!!!
From:       Michael Seiwert <mseiwert () hbv ! de>
Date:       2007-03-21 13:28:59
Message-ID: 200703211428.59443.mseiwert () hbv ! de
[Download RAW message or body]

Hi Stephan,

just want to say thank you for your work on kde in general and especially for 
the current work you are doing for kmail. We all appreciate your work!

Best 

Michael


Am Mittwoch, 21. März 2007 07:57:41 schrieb Stephan Kulow:
> SVN commit 644873 by coolo:
>
> fixing imap folder reference counting for real
> BUG: 126715
>
>
>  M  +1 -0      kmailicalifaceimpl.cpp
>  M  +4 -4      kmcomposewin.cpp
>  M  +10 -7     kmfolderimap.cpp
>  M  +6 -0      kmheaders.cpp
>  M  +12 -1     kmmainwidget.cpp
>  M  +1 -0      kmmainwidget.h
>
>
> --- branches/KDE/3.5/kdepim/kmail/kmailicalifaceimpl.cpp #644872:644873
> @@ -555,6 +555,7 @@
>  #endif
>      }
>    }
> +  f->close();
>    return aMap;
>  }
>
> --- branches/KDE/3.5/kdepim/kmail/kmcomposewin.cpp #644872:644873
> @@ -3928,12 +3928,11 @@
>    if ( imapTheFolder && imapTheFolder->noContent() )
>      imapTheFolder = 0;
>
> -  if ( theFolder == 0 ) {
> +  if ( theFolder == 0 )
>      theFolder = ( mSaveIn==KMComposeWin::Drafts ?
>                    kmkernel->draftsFolder() : kmkernel->templatesFolder()
> ); -  } else {
> -    theFolder->open();
> -  }
> +
> +  theFolder->open();
>    kdDebug(5006) << k_funcinfo << "theFolder=" << theFolder->name() <<
> endl; if ( imapTheFolder )
>      kdDebug(5006) << k_funcinfo << "imapTheFolder=" <<
> imapTheFolder->name() << endl; @@ -3951,6 +3950,7 @@
>      (static_cast<KMFolderImap*>( imapTheFolder->storage() ))->getFolder();
>    }
>
> +  theFolder->close();
>    return sentOk;
>  }
>
> --- branches/KDE/3.5/kdepim/kmail/kmfolderimap.cpp #644872:644873
> @@ -695,7 +695,6 @@
>          KMFolderImap* f = static_cast<KMFolderImap*> ( fld->storage() );
>          f->initializeFrom( this, mAccount->addPathToNamespace( name ),
>              "inode/directory" );
> -        f->close();
>          if ( !mAccount->listOnlyOpenFolders() )
>          {
>            f->slotListResult( subfolderNames, subfolderPaths,
> @@ -811,7 +810,6 @@
>        KMFolder *fld = folder()->child()->createFolder(subfolderNames[i]);
>        if ( fld ) {
>          f = static_cast<KMFolderImap*> ( fld->storage() );
> -        f->close();
>          settingsChanged = true;
>        } else {
>          kdWarning(5006) << "can't create folder " << subfolderNames[i] <<
> endl; @@ -876,7 +874,6 @@
>      if ( f )
>      {
>        f->folder()->setLabel( i18n("inbox") );
> -      f->close();
>      }
>      kmkernel->imapFolderMgr()->contentsChanged();
>    }
> @@ -996,7 +993,6 @@
>  {
>    if (!mAccount) {
>      emit folderComplete(this, false);
> -    close();
>      return;
>    }
>    KURL url = mAccount->getUrl();
> @@ -1012,7 +1008,6 @@
>      kdDebug(5006) << "KMFolderImap::checkValidity - got no connection" <<
> endl; emit folderComplete(this, FALSE);
>      mContentState = imapNoInformation;
> -    close();
>      return;
>    } else if ( connectionState == ImapAccountBase::Connecting ) {
>      // We'll wait for the connectionResult signal from the account. If it
> @@ -1025,7 +1020,6 @@
>    // Only check once at a time.
>    if (mCheckingValidity) {
>      kdDebug(5006) << "KMFolderImap::checkValidity - already checking" <<
> endl; -    close();
>      return;
>    }
>    // otherwise we already are inside a mailcheck
> @@ -1045,6 +1039,7 @@
>    if ( account()->mailCheckProgressItem() ) {
>      account()->mailCheckProgressItem()->setStatus( folder()->prettyURL()
> ); }
> +  open();
>    ImapAccountBase::jobData jd( url.url() );
>    KIO::SimpleJob *job = KIO::get(url, FALSE, FALSE);
>    KIO::Scheduler::assignJobToSlave(mAccount->slave(), job);
> @@ -1144,6 +1139,7 @@
>        mMailCheckProgressItem->setCompletedItems( 0 );
>      }
>      reallyGetFolder(startUid);
> +    close();
>    }
>  }
>
> @@ -1178,6 +1174,7 @@
>      mCheckFlags = TRUE;
>    }
>    checkValidity();
> +  close();
>  }
>
>
> @@ -1189,7 +1186,6 @@
>    {
>      mContentState = imapNoInformation;
>      emit folderComplete(this, FALSE);
> -    close();
>      return;
>    }
>    quiet(true);
> @@ -1199,6 +1195,7 @@
>        mMailCheckProgressItem->setStatus( i18n("Retrieving message status")
> ); url.setPath(imapPath() + ";SECTION=UID FLAGS");
>      KIO::SimpleJob *job = KIO::listDir(url, FALSE);
> +    open();
>      KIO::Scheduler::assignJobToSlave(mAccount->slave(), job);
>      ImapAccountBase::jobData jd( url.url(), folder() );
>      jd.cancellable = true;
> @@ -1218,6 +1215,7 @@
>      KIO::Scheduler::assignJobToSlave(mAccount->slave(), newJob);
>      ImapAccountBase::jobData jd( url.url(), folder() );
>      jd.cancellable = true;
> +    open();
>      mAccount->insertJob(newJob, jd);
>      connect(newJob, SIGNAL(result(KIO::Job *)),
>              this, SLOT(slotGetLastMessagesResult(KIO::Job *)));
> @@ -1310,6 +1308,9 @@
>    else sets = makeSets( (*it).items );
>    mAccount->removeJob(it); // don't use *it below
>
> +  if ( sets.isEmpty() )
> +    close();
> +
>    // Now kick off the getting of envelopes for the new mails in the folder
>    for (QStringList::Iterator i = sets.begin(); i != sets.end(); ++i)
>    {
> @@ -1812,6 +1813,7 @@
>
>  void KMFolderImap::setStatus(QValueList<int>& ids, KMMsgStatus status,
> bool toggle) {
> +  open();
>    FolderStorage::setStatus(ids, status, toggle);
>    if (mReadOnly) return;
>
> @@ -1855,6 +1857,7 @@
>      quiet( false );
>      reallyGetFolder( QString::null );
>    }
> +  close();
>  }
>
> 
> //-------------------------------------------------------------------------
>---- --- branches/KDE/3.5/kdepim/kmail/kmheaders.cpp #644872:644873
> @@ -15,6 +15,7 @@
>  #include "kmmsgdict.h"
>  #include "kmdebug.h"
>  #include "kmfoldertree.h"
> +#include "kmfolderimap.h"
>  #include "folderjob.h"
>  using KMail::FolderJob;
>  #include "actionscheduler.h"
> @@ -215,6 +216,11 @@
>    {
>      writeFolderConfig();
>      writeSortOrder();
> +    if (mFolder->folderType() == KMFolderTypeImap)
> +    {
> +      KMFolderImap *imap = static_cast<KMFolderImap*>(mFolder->storage());
> +      imap->setSelected( false );
> +    }
>      mFolder->close();
>    }
>    writeConfig();
> --- branches/KDE/3.5/kdepim/kmail/kmmainwidget.cpp #644872:644873
> @@ -164,6 +164,7 @@
>    mJob = 0;
>    mConfig = config;
>    mGUIClient = aGUIClient;
> +  mOpenedImapFolder = false;
>
>    mCustomReplyActionMenu = 0;
>    mCustomReplyAllActionMenu = 0;
> @@ -1875,8 +1876,11 @@
>    folderSelected( mFolder );
>    updateFolderMenu();
>    // opened() before the getAndCheckFolder() in folderSelected
> -  if ( mFolder && mFolder->folderType() == KMFolderTypeImap )
> +  if ( mFolder && mFolder->folderType() == KMFolderTypeImap &&
> mOpenedImapFolder ) +  {
>      mFolder->close();
> +    mOpenedImapFolder = false;
> +  }
>  }
>
> 
> //-------------------------------------------------------------------------
>---- @@ -1930,7 +1934,13 @@
>             this, SLOT( updateMarkAsReadAction() ) );
>      disconnect( mFolder, SIGNAL( msgRemoved( KMFolder * ) ),
>             this, SLOT( updateMarkAsReadAction() ) );
> +    if ( mOpenedImapFolder && newFolder && mFolder->folderType() ==
> KMFolderTypeImap ) { +      mFolder->close();
> +      KMFolderImap *imap = static_cast<KMFolderImap*>(mFolder->storage());
> +      imap->setSelected( false );
> +      mOpenedImapFolder = false;
>    }
> +  }
>
>    mFolder = aFolder;
>
> @@ -1944,6 +1954,7 @@
>      if ( newFolder && !mFolder->noContent() )
>      {
>        imap->open(); // will be closed in the folderSelected slot
> +      mOpenedImapFolder = true;
>        // first get new headers before we select the folder
>        imap->setSelected( true );
>        connect( imap, SIGNAL( folderComplete( KMFolderImap*, bool ) ),
> --- branches/KDE/3.5/kdepim/kmail/kmmainwidget.h #644872:644873
> @@ -531,6 +531,7 @@
>    KXMLGUIClient *mGUIClient;
>
>    static QValueList<KMMainWidget*>* s_mainWidgetList;
> +  bool mOpenedImapFolder;
>  };
>
>  #endif



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic