Hello community, here is the log from the commit of package kdepim3 checked in at Thu Sep 13 18:46:22 CEST 2007. -------- --- KDE/kdepim3/kdepim3.changes 2007-09-04 12:00:44.000000000 +0200 +++ /mounts/work_src_done/STABLE/kdepim3/kdepim3.changes 2007-09-13 14:18:38.000000000 +0200 @@ -1,0 +2,8 @@ +Tue Sep 11 23:46:18 CEST 2007 - dmueller@suse.de + +- fix message status flags being lost in kmail with imap +- fix duplicated text in dialogs (#309321) +- fix favourite view (#309072) +- fix account fetches getting lost (#309663) + +------------------------------------------------------------------- New: ---- r708131.diff r708706.diff r708749.diff r708854.diff r709032.diff r709066.diff r709084.diff r709322.diff r710624.diff r711165.diff r711601.diff r711603.diff r711604.diff ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kdepim3.spec ++++++ --- /var/tmp/diff_new_pack.T19899/_old 2007-09-13 18:46:04.000000000 +0200 +++ /var/tmp/diff_new_pack.T19899/_new 2007-09-13 18:46:04.000000000 +0200 @@ -1,5 +1,5 @@ # -# spec file for package kdepim3 (Version 3.5.7.enterprise.0.20070831.706868) +# spec file for package kdepim3 (Version 3.5.7.enterprise.0.20070904.708012) # # Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany. # This file and all modifications and additions to the pristine @@ -27,8 +27,8 @@ License: GPL v2 or later Group: System/GUI/KDE Summary: Personal Information Manager Software for KDE -Version: 3.5.7.enterprise.0.20070831.706868 -Release: 7 +Version: 3.5.7.enterprise.0.20070904.708012 +Release: 1 %define realversion 3.5.6.enterprise.0.20070731.694771 URL: http://www.kde.org/ Requires: kdelibs3 >= %( echo `rpm -q --queryformat '%{VERSION}' kdelibs3` ) @@ -53,6 +53,19 @@ Patch101: kitchensync-opensuse.diff Patch102: kitchensync-defaults.diff Patch104: kitchensync-xmldiffalgo.diff +Patch105: r708131.diff +Patch106: r708706.diff +Patch107: r708854.diff +Patch108: r709032.diff +Patch109: r709066.diff +Patch110: r709084.diff +Patch111: r709322.diff +Patch112: r710624.diff +Patch113: r711165.diff +Patch114: r708749.diff +Patch115: r711601.diff +Patch116: r711603.diff +Patch117: r711604.diff Provides: cryptplug Obsoletes: cryptplug %if %suse_version > 1000 @@ -209,6 +222,19 @@ %patch101 %patch102 %patch104 +%patch105 +%patch106 +%patch107 +%patch108 +%patch109 +%patch110 +%patch111 +%patch112 +%patch113 +%patch114 +%patch115 +%patch116 +%patch117 . /etc/opt/kde3/common_options update_admin @@ -518,7 +544,6 @@ /opt/kde3/share/services/kaddressbook/cryptosettings.desktop /opt/kde3/share/services/kaddressbook/csv_xxport.desktop /opt/kde3/share/services/kaddressbook/distributionlist.desktop -/opt/kde3/share/services/kaddressbook/distributionlistng.desktop /opt/kde3/share/services/kaddressbook/eudora_xxport.desktop /opt/kde3/share/services/kaddressbook/gaduprotocol.desktop /opt/kde3/share/services/kaddressbook/iconview.desktop @@ -794,6 +819,11 @@ %endif %changelog +* Tue Sep 11 2007 - dmueller@suse.de +- fix message status flags being lost in kmail with imap +- fix duplicated text in dialogs (#309321) +- fix favourite view (#309072) +- fix account fetches getting lost (#309663) * Tue Sep 04 2007 - dmueller@suse.de - fix various bugs regressions around POP3 (#307040 and others) * Tue Sep 04 2007 - dmueller@suse.de ++++++ ENTERPRISE_BRANCH.diff ++++++ ++++ 2926 lines (skipped) ++++ between KDE/kdepim3/ENTERPRISE_BRANCH.diff ++++ and /mounts/work_src_done/STABLE/kdepim3/ENTERPRISE_BRANCH.diff ++++++ r708131.diff ++++++ ------------------------------------------------------------------------ r708131 | bvirlet | 2007-09-03 23:54:52 +0200 (Mon, 03 Sep 2007) | 2 lines Revert changes which most probably are the reasons of the bugs in kmail. ------------------------------------------------------------------------ --- kmail/kmacctlocal.cpp +++ kmail/kmacctlocal.cpp @@ -32,8 +32,7 @@ using KPIM::ProgressManager; KMAcctLocal::KMAcctLocal(AccountManager* aOwner, const QString& aAccountName, uint id): KMAccount(aOwner, aAccountName, id), mHasNewMail( false ), mAddedOk( true ), mNumMsgs( 0 ), - mMsgsFetched( 0 ), mMailFolder( 0 ), - mMboxStorage( 0 ) + mMsgsFetched( 0 ), mMailFolder( 0 ) { mLock = procmail_lockfile; } @@ -76,14 +75,9 @@ void KMAcctLocal::processNewMail(bool) { mHasNewMail = false; - connect( this, SIGNAL(preProcessExited(bool)), SLOT(continueProcess(bool)) ); - preProcess(); -} - -void KMAcctLocal::continueProcess( bool preProcessSuccess ) -{ - if ( !preProcessSuccess ) + if ( !preProcess() ) { return; + } QTime t; t.start(); @@ -104,36 +98,34 @@ void KMAcctLocal::continueProcess( bool //----------------------------------------------------------------------------- -void KMAcctLocal::preProcess() +bool KMAcctLocal::preProcess() { if ( precommand().isEmpty() ) { QFileInfo fi( location() ); if ( fi.size() == 0 ) { BroadcastStatus::instance()->setStatusMsgTransmissionCompleted( mName, 0 ); checkDone( mHasNewMail, CheckOK ); - emit preProcessExited( false ); - return; + return false; } } mMailFolder = new KMFolder( 0, location(), KMFolderTypeMbox, false /* no index */, false /* don't export sernums */ ); - mMboxStorage = + KMFolderMbox* mboxStorage = static_cast<KMFolderMbox*>(mMailFolder->storage()); - mMboxStorage->setLockType( mLock ); + mboxStorage->setLockType( mLock ); if ( mLock == procmail_lockfile) - mMboxStorage->setProcmailLockFileName( mProcmailLockFileName ); + mboxStorage->setProcmailLockFileName( mProcmailLockFileName ); if (!mFolder) { checkDone( mHasNewMail, CheckError ); BroadcastStatus::instance()->setStatusMsg( i18n( "Transmission failed." )); - emit preProcessExited( false ); - return; + return false; } //BroadcastStatus::instance()->reset(); BroadcastStatus::instance()->setStatusMsg( - i18n("Preparing transmission from \"%1\"...").arg(mName)); + i18n("Preparing transmission from \"%1\"...").arg(mName)); Q_ASSERT( !mMailCheckProgressItem ); @@ -145,19 +137,13 @@ void KMAcctLocal::preProcess() false, // cannot be canceled false ); // no tls/ssl - connect( this, SIGNAL(precommandExited(bool)), SLOT(continuePreProcess(bool)) ); - startPrecommand(precommand()); -} - -void KMAcctLocal::continuePreProcess( bool precommandSuccess ) -{ - if ( !precommandSuccess ) + // run the precommand + if (!runPrecommand(precommand())) { kdDebug(5006) << "cannot run precommand " << precommand() << endl; checkDone( mHasNewMail, CheckError ); BroadcastStatus::instance()->setStatusMsg( i18n( "Running precommand failed." )); - emit preProcessExited( false ); - return; + return false; } const int rc = mMailFolder->open("acctlocalMail"); @@ -170,18 +156,17 @@ void KMAcctLocal::continuePreProcess( bo << mMailFolder->name() << endl; checkDone( mHasNewMail, CheckError ); BroadcastStatus::instance()->setStatusMsg( i18n( "Transmission failed." )); - emit preProcessExited( false ); + return false; } - if (!mMboxStorage->isLocked()) { + if (!mboxStorage->isLocked()) { kdDebug(5006) << "mailFolder could not be locked" << endl; mMailFolder->close("acctlocalMail"); checkDone( mHasNewMail, CheckError ); QString errMsg = i18n( "Transmission failed: Could not lock %1." ) .arg( mMailFolder->location() ); BroadcastStatus::instance()->setStatusMsg( errMsg ); - emit preProcessExited( false ); - return; + return false; } mFolder->open("acctlocalFold"); @@ -195,7 +180,7 @@ void KMAcctLocal::continuePreProcess( bo .arg(mMailFolder->location()).arg( mNumMsgs ); //BroadcastStatus::instance()->setStatusProgressEnable( "L" + mName, true ); - emit preProcessExited( true ); + return true; } @@ -335,5 +320,3 @@ void KMAcctLocal::setProcmailLockFileNam { mProcmailLockFileName = s; } - -#include "kmacctlocal.moc" --- kmail/kmacctmaildir.cpp +++ kmail/kmacctmaildir.cpp @@ -79,6 +79,7 @@ void KMAcctMaildir::pseudoAssign( const //----------------------------------------------------------------------------- void KMAcctMaildir::processNewMail(bool) { + QTime t; hasNewMail = false; if ( precommand().isEmpty() ) { @@ -90,6 +91,15 @@ void KMAcctMaildir::processNewMail(bool) } } + KMFolder mailFolder(0, location(), KMFolderTypeMaildir, + false /* no index */, false /* don't export sernums */); + + long num = 0; + long i; + int rc; + KMMessage* msg; + bool addedOk; + if (!mFolder) { checkDone( hasNewMail, CheckError ); BroadcastStatus::instance()->setStatusMsg( i18n( "Transmission failed." )); @@ -109,23 +119,7 @@ void KMAcctMaildir::processNewMail(bool) false ); // no tls/ssl // run the precommand - connect( this, SIGNAL(precommandExited(bool)), SLOT(continueProcessNewMail(bool)) ); - startPrecommand( precommand() ); -} - -void KMAcctMaildir::continueProcessNewMail( bool precommandSuccess ) -{ - QTime t; - long num = 0; - long i; - int rc; - KMMessage* msg; - bool addedOk; - - KMFolder mailFolder(0, location(), KMFolderTypeMaildir, - false /* no index */, false /* don't export sernums */); - - if ( !precommandSuccess ) + if (!runPrecommand(precommand())) { kdDebug(5006) << "cannot run precommand " << precommand() << endl; checkDone( hasNewMail, CheckError ); @@ -238,6 +232,3 @@ void KMAcctMaildir::setLocation(const QS { mLocation = aLocation; } - -#include "kmacctmaildir.moc" - --- kmail/accountmanager.h +++ kmail/accountmanager.h @@ -97,6 +97,8 @@ public slots: void singleInvalidateIMAPFolders( KMAccount * ); void intCheckMail( int, bool interactive = true ); + /** Call processNextCheck with the false argument. **/ + void slotProcessNextCheck(); void processNextCheck( bool newMail ); /** this slot increases the count of new mails to show a total number --- kmail/kmaccount.h +++ kmail/kmaccount.h @@ -184,12 +184,12 @@ public: virtual void setPrecommand(const QString &cmd) { mPrecommand = cmd; } /** - * Start the precommand. If the precommand is empty, the method + * Runs the precommand. If the precommand is empty, the method * will just return success and not actually do anything * - * @return True if successful start, false otherwise + * @return True if successful, false otherwise */ - void startPrecommand(const QString &precommand); + bool runPrecommand(const QString &precommand); /** * Very primitive en/de-cryption so that the password is not @@ -216,7 +216,7 @@ public: * @return whether mail checks can proceed */ virtual bool mailCheckCanProceed() const { return true; } - + /** * Set/Get if this account is currently checking mail */ @@ -247,12 +247,6 @@ public: signals: /** - * Emitted after the precommand exited, successfully or not - * @param success true if the command execution was successful. - */ - virtual void precommandExited( bool success ); - - /** * Emitted after the mail check is finished. * @param newMail true if there was new mail * @param status the status of the mail check @@ -268,9 +262,7 @@ signals: protected slots: virtual void mailCheck(); virtual void sendReceipts(); - -private slots: - void precommandFinished( bool success ); + virtual void precommandExited(bool); protected: KMAccount( AccountManager* owner, const QString& accountName, uint id); @@ -313,6 +305,7 @@ protected: int mInterval; bool mExclude; bool mCheckingMail : 1; + bool mPrecommandSuccess; QValueList<KMMessage*> mReceipts; QPtrList<FolderJob> mJobList; bool mHasInbox : 1; @@ -327,7 +320,6 @@ private: private: // for detailed (per folder) new mail notification QMap<QString, int> mNewInFolder; - KMPrecommand *mPrecommandProcess; }; #endif /*kmaccount_h*/ --- kmail/kmaccount.cpp +++ kmail/kmaccount.cpp @@ -88,9 +88,9 @@ KMAccount::KMAccount(AccountManager* aOw mInterval(0), mExclude(false), mCheckingMail(false), + mPrecommandSuccess(true), mHasInbox(false), - mMailCheckProgressItem(0), - mPrecommandProcess(0) + mMailCheckProgressItem(0) { assert(aOwner != 0); } @@ -350,33 +350,35 @@ void KMAccount::deinstallTimer() } //----------------------------------------------------------------------------- -void KMAccount::startPrecommand(const QString &precommand) +bool KMAccount::runPrecommand(const QString &precommand) { // Run the pre command if there is one - if ( precommand.isEmpty() ) { - emit precommandExited( true ); - return; - } + if ( precommand.isEmpty() ) + return true; - KMPrecommand *mPrecommandProcess = new KMPrecommand(precommand, this); + KMPrecommand precommandProcess(precommand, this); BroadcastStatus::instance()->setStatusMsg( i18n("Executing precommand %1").arg(precommand )); - connect(mPrecommandProcess, SIGNAL(finished(bool)), - SLOT(precommandFinished(bool))); + connect(&precommandProcess, SIGNAL(finished(bool)), + SLOT(precommandExited(bool))); kdDebug(5006) << "Running precommand " << precommand << endl; - if (!mPrecommandProcess->start()) - emit precommandExited( false ); + if (!precommandProcess.start()) return false; + + kapp->eventLoop()->enterLoop(); + + return mPrecommandSuccess; } + //----------------------------------------------------------------------------- -void KMAccount::precommandFinished( bool success ) +void KMAccount::precommandExited(bool success) { - delete mPrecommandProcess; mPrecommandProcess = 0; - - emit precommandExited( success ); + mPrecommandSuccess = success; + kapp->eventLoop()->exitLoop(); } + //----------------------------------------------------------------------------- void KMAccount::mailCheck() { --- kmail/popaccount.h +++ kmail/popaccount.h @@ -45,7 +45,7 @@ public: */ bool usePipelining(void) const { return mUsePipelining; } virtual void setUsePipelining(bool); - + /** * Shall messages be left on the server upon retreival (TRUE) * or deleted (FALSE). @@ -171,11 +171,6 @@ protected: protected slots: /** - * Continue the job after precommand was executed - */ - void continueJob( bool precommandSuccess ); - - /** * Messages are downloaded in the background and then once every x seconds * a batch of messages are processed. Messages are processed in batches to * reduce flicker (multiple refreshes of the qlistview of messages headers --- kmail/popaccount.cpp +++ kmail/popaccount.cpp @@ -367,20 +367,14 @@ void PopAccount::slotAbortRequested() void PopAccount::startJob() { // Run the precommand - connect( this, SIGNAL(precommandExited(bool)), SLOT(continueJob(bool)) ); - startPrecommand(precommand()); -} - -void PopAccount::continueJob( bool precommandSuccess ) -{ - if ( !precommandSuccess ) - { - KMessageBox::sorry(0, - i18n("Could not execute precommand: %1").arg(precommand()), - i18n("KMail Error Message")); - checkDone( false, CheckError ); - return; - } + if (!runPrecommand(precommand())) + { + KMessageBox::sorry(0, + i18n("Could not execute precommand: %1").arg(precommand()), + i18n("KMail Error Message")); + checkDone( false, CheckError ); + return; + } // end precommand code KURL url = getUrl(); --- kmail/accountmanager.cpp +++ kmail/accountmanager.cpp @@ -122,6 +122,11 @@ void AccountManager::singleCheckMail(KMA return; } + QTimer::singleShot(0, this, SLOT(slotProcessNextCheck())); +} +//----------------------------------------------------------------------------- +void AccountManager::slotProcessNextCheck() +{ processNextCheck( false ); } //----------------------------------------------------------------------------- --- kmail/kmacctlocal.h +++ kmail/kmacctlocal.h @@ -7,12 +7,8 @@ #include "kmaccount.h" #include "kmglobal.h" -class KMFolderMbox; - class KMAcctLocal: public KMAccount { - Q_OBJECT - protected: friend class ::AccountManager; @@ -41,14 +37,8 @@ public: virtual void readConfig(KConfig&); virtual void writeConfig(KConfig&); -signals: - virtual void preProcessExited( bool preProcessSuccess ); - private slots: - void preProcess(); - void continuePreProcess( bool preCommandSuccess ); - void continueProcess( bool preProcessSuccess ); - + bool preProcess(); bool fetchMsg(); void postProcess(); @@ -62,8 +52,6 @@ private: int mMsgsFetched; KMFolder *mMailFolder; QString mStatusMsgStub; - - KMFolderMbox* mMboxStorage; // used during preprocess }; #endif /*kmacctlocal_h*/ --- kmail/kmsender.cpp +++ kmail/kmsender.cpp @@ -759,6 +759,7 @@ void KMSender::slotIdle() cleanup(); } + //----------------------------------------------------------------------------- void KMSender::slotPrecommandFinished(bool normalExit) { --- kmail/kmacctmaildir.h +++ kmail/kmacctmaildir.h @@ -9,8 +9,6 @@ class KMAcctMaildir: public KMAccount { - Q_OBJECT - protected: friend class ::AccountManager; @@ -31,9 +29,6 @@ public: virtual void readConfig(KConfig&); virtual void writeConfig(KConfig&); -private slots: - void continueProcessNewMail( bool precommandSuccess ); - protected: QString mLocation; bool hasNewMail; ++++++ r708706.diff ++++++ ------------------------------------------------------------------------ r708706 | vkrause | 2007-09-05 15:26:11 +0200 (Wed, 05 Sep 2007) | 5 lines Don't handle the seen flag here, seenFlagToStatus() can do that a lot better. Fixes seen flag reading on initial folder downloads. Kolab issue 1376. ------------------------------------------------------------------------ --- kmail/kmfolderimap.cpp +++ kmail/kmfolderimap.cpp @@ -1426,7 +1426,6 @@ void KMFolderImap::flagsToStatus(KMMsgBa const int kmFlag; const bool standardFlag; } imapFlagMap[] = { - { 1, KMMsgStatusOld, true }, { 2, KMMsgStatusReplied, true }, { 4, KMMsgStatusFlag, true }, { 128, KMMsgStatusForwarded, false }, ++++++ r708749.diff ++++++ ------------------------------------------------------------------------ r708749 | vkrause | 2007-09-05 17:09:48 +0200 (Wed, 05 Sep 2007) | 9 lines Merged revisions 704305 via svnmerge from https://vkrause@svn.kde.org/home/kde/branches/work/~vkrause/enterprise ........ r704305 | vkrause | 2007-08-24 17:26:09 +0200 (Fri, 24 Aug 2007) | 2 lines Allow to disable local flags on read-only folders. ........ ------------------------------------------------------------------------ --- kmail/kmail.kcfg +++ kmail/kmail.kcfg @@ -71,6 +71,11 @@ <whatsthis>If there are new messages in a folder, which have not been uploaded to the server yet, but you do not have sufficient access rights on the folder now to upload them, these messages will automatically be moved into a lost and found folder.</whatsthis> <default>true</default> </entry> + + <entry name="AllowLocalFlags" type="Bool"> + <label>Allow local flags in read-only folders</label> + <default>false</default> + </entry> </group> <group name="ConfigurationDialogRestrictions"> --- kmail/kmmainwidget.cpp +++ kmail/kmmainwidget.cpp @@ -3430,17 +3430,20 @@ void KMMainWidget::updateMessageActions( bool mass_actions = count >= 1; bool thread_actions = mass_actions && allSelectedInCommonThread && mHeaders->isThreaded(); + bool flags_available = GlobalSettings::self()->allowLocalFlags() || !(mFolder ? mFolder->isReadOnly() : true); mStatusMenu->setEnabled( mass_actions ); + mToggleTodoAction->setEnabled( flags_available ); + mToggleFlagAction->setEnabled( flags_available ); mThreadStatusMenu->setEnabled( thread_actions ); // these need to be handled individually, the user might have them // in the toolbar - mWatchThreadAction->setEnabled( thread_actions ); - mIgnoreThreadAction->setEnabled( thread_actions ); + mWatchThreadAction->setEnabled( thread_actions && flags_available ); + mIgnoreThreadAction->setEnabled( thread_actions && flags_available ); mMarkThreadAsNewAction->setEnabled( thread_actions ); mMarkThreadAsReadAction->setEnabled( thread_actions ); mMarkThreadAsUnreadAction->setEnabled( thread_actions ); - mToggleThreadTodoAction->setEnabled( thread_actions ); - mToggleThreadFlagAction->setEnabled( thread_actions ); + mToggleThreadTodoAction->setEnabled( thread_actions && flags_available ); + mToggleThreadFlagAction->setEnabled( thread_actions && flags_available ); mTrashThreadAction->setEnabled( thread_actions && !mFolder->isReadOnly() ); mDeleteThreadAction->setEnabled( thread_actions && !mFolder->isReadOnly() ); Property changes on: . ___________________________________________________________________ Name: svnmerge-integrated - /branches/KDE/3.5/kdepim:1-658468 /branches/work/~vkrause/enterprise:1-702832,702889,702953-703455,703761-704186 + /branches/KDE/3.5/kdepim:1-658468 /branches/work/~vkrause/enterprise:1-702832,702889,702953-703455,703761-704186,704305 ++++++ r708854.diff ++++++ ------------------------------------------------------------------------ r708854 | tokoe | 2007-09-05 22:59:57 +0200 (Wed, 05 Sep 2007) | 3 lines Forward port of patch which fixes vCard loading when KAddressBook is used as part in Kontact ------------------------------------------------------------------------ --- kaddressbook/xxportmanager.cpp +++ kaddressbook/xxportmanager.cpp @@ -66,7 +66,7 @@ void XXPortManager::importVCard( const K importURL = KURL(); } -void XXPortManager::importVCard( const QString &vCard ) +void XXPortManager::importVCardFromData( const QString &vCard ) { importData = vCard; slotImport( "vcard", "<empty>" ); --- kaddressbook/interfaces/core.h +++ kaddressbook/interfaces/core.h @@ -166,7 +166,7 @@ class KDE_EXPORT Core : public QObject /** DCOP METHOD: Imports the given vCard. */ - virtual void importVCard( const QString& vCard ) = 0; + virtual void importVCardFromData( const QString& vCard ) = 0; /** DCOP METHOD: Opens contact editor to input a new contact. --- kaddressbook/kaddressbook_part.h +++ kaddressbook/kaddressbook_part.h @@ -49,7 +49,8 @@ class KAddressbookPart: public KParts::R virtual void loadProfile( const QString& path ); public slots: virtual void addEmail( QString addr ); - virtual void importVCard( const QString& vCardURL ); + virtual void importVCard( const KURL& url ); + virtual void importVCardFromData( const QString& vCard ); virtual ASYNC showContactEditor( QString uid ); virtual void newContact(); virtual void newDistributionList(); --- kaddressbook/kaddressbookmain.h +++ kaddressbook/kaddressbookmain.h @@ -52,7 +52,8 @@ class KAddressBookMain : public KMainWin public slots: virtual void addEmail( QString addr ); - virtual void importVCard( const QString& vCardURL ); + virtual void importVCard( const KURL& url ); + virtual void importVCardFromData( const QString& vCard ); virtual ASYNC showContactEditor( QString uid ); virtual void newContact(); virtual void newDistributionList(); --- kaddressbook/kaddressbook_part.cpp +++ kaddressbook/kaddressbook_part.cpp @@ -87,9 +87,14 @@ void KAddressbookPart::addEmail( QString mCore->addEmail( addr ); } -void KAddressbookPart::importVCard( const QString& vCardURL ) +void KAddressbookPart::importVCard( const KURL& url ) { - mCore->importVCard( vCardURL ); + mCore->importVCard( url ); +} + +void KAddressbookPart::importVCardFromData( const QString& vCard ) +{ + mCore->importVCardFromData( vCard ); } ASYNC KAddressbookPart::showContactEditor( QString uid ) --- kaddressbook/kaddressbookservice.cpp +++ kaddressbook/kaddressbookservice.cpp @@ -30,9 +30,9 @@ KAddressBookService::KAddressBookService { } -void KAddressBookService::importVCard( const QString& vCard ) +void KAddressBookService::importVCardFromData( const QString& vCard ) { - mCore->importVCard( vCard ); + mCore->importVCardFromData( vCard ); } void KAddressBookService::importVCard( const KURL& url ) --- kaddressbook/kabcore.cpp +++ kaddressbook/kabcore.cpp @@ -687,9 +687,9 @@ void KABCore::importVCard( const KURL &u mXXPortManager->importVCard( url ); } -void KABCore::importVCard( const QString &vCardURL ) +void KABCore::importVCardFromData( const QString &vCard ) { - mXXPortManager->importVCard( vCardURL ); + mXXPortManager->importVCardFromData( vCard ); } void KABCore::editContact( const QString &uid ) --- kaddressbook/kaddressbookiface.h +++ kaddressbook/kaddressbookiface.h @@ -25,6 +25,7 @@ #define KADDRESSBOOKIFACE_H #include <dcopobject.h> +#include <kurl.h> #include <qstringlist.h> #include <kdepimmacros.h> @@ -34,7 +35,8 @@ class KDE_EXPORT KAddressBookIface : vir k_dcop: virtual void addEmail( QString addr ) = 0; - virtual void importVCard( const QString& vCardURL ) = 0; + virtual void importVCard( const KURL& url ) = 0; + virtual void importVCardFromData( const QString& vCard ) = 0; virtual ASYNC showContactEditor( QString uid ) = 0; --- kaddressbook/kaddressbookservice.h +++ kaddressbook/kaddressbookservice.h @@ -40,7 +40,7 @@ class KAddressBookService : virtual publ @param vCard The vCard in string representation. */ - void importVCard( const QString& vCard ); + void importVCardFromData( const QString& vCard ); /** This method will add a vcard to the address book. --- kaddressbook/xxportmanager.h +++ kaddressbook/xxportmanager.h @@ -53,7 +53,7 @@ class KDE_EXPORT XXPortManager : public public slots: void importVCard( const KURL &url ); - void importVCard( const QString &vCard ); + void importVCardFromData( const QString &vCard ); signals: void modified(); --- kaddressbook/kabcore.h +++ kaddressbook/kabcore.h @@ -301,7 +301,7 @@ class KDE_EXPORT KABCore : public KAB::C /** DCOP METHOD: Imports the given vCard. */ - virtual void importVCard( const QString& vCardURL ); + virtual void importVCardFromData( const QString& vCard ); /** DCOP METHOD: Opens contact editor to input a new contact. --- kaddressbook/kaddressbookmain.cpp +++ kaddressbook/kaddressbookmain.cpp @@ -84,9 +84,14 @@ void KAddressBookMain::addEmail( QString mCore->addEmail( addr ); } -void KAddressBookMain::importVCard( const QString& file ) +void KAddressBookMain::importVCard( const KURL& url ) { - mCore->importVCard( KURL( file ) ); + mCore->importVCard( url ); +} + +void KAddressBookMain::importVCardFromData( const QString& vCard ) +{ + mCore->importVCardFromData( vCard ); } ASYNC KAddressBookMain::showContactEditor( QString uid ) --- libkdepim/interfaces/AddressBookServiceIface.h +++ libkdepim/interfaces/AddressBookServiceIface.h @@ -43,7 +43,7 @@ namespace KPIM { @param vCard The vCard in string representation. */ - virtual void importVCard( const QString& vCard ) = 0; + virtual void importVCardFromData( const QString& vCard ) = 0; /** This method will add a vcard to the address book. ++++++ r709032.diff ++++++ ------------------------------------------------------------------------ r709032 | tilladam | 2007-09-06 14:10:42 +0200 (Thu, 06 Sep 2007) | 2 lines Deinline ExtraFolder ctor and dtor and make them manage opening/closing the folders. ------------------------------------------------------------------------ --- kmail/kmailicalifaceimpl.cpp +++ kmail/kmailicalifaceimpl.cpp @@ -128,6 +128,18 @@ const char* KMailICalIfaceImpl::annotati return s_folderContentsType[type].annotation; } +ExtraFolder::ExtraFolder( KMFolder* f ) + : folder( f ) +{ + folder->open("kmailicaliface::extrafolder"); +} + +ExtraFolder::~ExtraFolder() +{ + folder->close("kmailicaliface::extrafolder"); +} + + /* This interface has three parts to it - libkcal interface; kmail interface; and helper functions. --- kmail/kmailicalifaceimpl.h +++ kmail/kmailicalifaceimpl.h @@ -56,7 +56,8 @@ namespace KMail { // Local helper class class ExtraFolder { public: - ExtraFolder( KMFolder* f ) : folder( f ) {} + ExtraFolder( KMFolder* f ); + ~ExtraFolder(); QGuardedPtr<KMFolder> folder; }; ++++++ r709066.diff ++++++ ------------------------------------------------------------------------ r709066 | vkrause | 2007-09-06 16:00:22 +0200 (Thu, 06 Sep 2007) | 37 lines Merged revisions 702833-702837,702839,702841-702888,702890-702952,702954-703209,703211-703454,703456-703461,703463-703760,703762-703855,703857-703886,703888-703946,703948-703961,703963-704170,704172-704178,704180-704185,704187-704195,704197-704304,704306-705719,705721-708727,708729-709065 via svnmerge from https://vkrause@svn.kde.org/home/kde/branches/work/~vkrause/enterprise ........ r706113 | vkrause | 2007-08-29 15:17:57 +0200 (Wed, 29 Aug 2007) | 3 lines Show only the status menu if a context menu is requested on a status column. ........ r706139 | vkrause | 2007-08-29 16:28:00 +0200 (Wed, 29 Aug 2007) | 2 lines Toggle message status when clicking on a status column. ........ r706145 | vkrause | 2007-08-29 16:40:27 +0200 (Wed, 29 Aug 2007) | 2 lines Prevent changing flags in read-only folders. ........ r708324 | vkrause | 2007-09-04 16:21:33 +0200 (Tue, 04 Sep 2007) | 3 lines - handle multi-state columns correctly - don't trigger when trying to select multiple items ........ r709045 | vkrause | 2007-09-06 14:54:59 +0200 (Thu, 06 Sep 2007) | 4 lines - consider margin for default column width - move flag columns to the front when enabling them, unless they have been moved manually already ........ r709056 | vkrause | 2007-09-06 15:39:13 +0200 (Thu, 06 Sep 2007) | 2 lines Rename todo message flag to avoid confusion with korganizer todos. ........ r709061 | vkrause | 2007-09-06 15:49:42 +0200 (Thu, 06 Sep 2007) | 2 lines Make sure we always have the correct message status action states. ........ ------------------------------------------------------------------------ --- kmail/kmheaders.cpp +++ kmail/kmheaders.cpp @@ -128,7 +128,7 @@ KMHeaders::KMHeaders(KMMainWidget *aOwne mPopup->setCheckable(true); mPopup->insertItem(i18n("Status"), KPaintInfo::COL_STATUS); mPopup->insertItem(i18n("Important"), KPaintInfo::COL_IMPORTANT); - mPopup->insertItem(i18n("Todo"), KPaintInfo::COL_TODO); + mPopup->insertItem(i18n("Action Item"), KPaintInfo::COL_TODO); mPopup->insertItem(i18n("Attachment"), KPaintInfo::COL_ATTACHMENT); mPopup->insertItem(i18n("Spam/Ham"), KPaintInfo::COL_SPAM_HAM); mPopup->insertItem(i18n("Watched/Ignored"), KPaintInfo::COL_WATCHED_IGNORED); @@ -256,6 +256,7 @@ void KMHeaders::slotToggleColumn(int id, bool *show = 0; int *col = 0; int width = 0; + int moveToCol = -1; switch ( static_cast<KPaintInfo::ColumnIds>(id) ) { @@ -270,56 +271,72 @@ void KMHeaders::slotToggleColumn(int id, { show = &mPaintInfo.showAttachment; col = &mPaintInfo.attachmentCol; - width = pixAttachment->width(); + width = pixAttachment->width() + 8; + if ( *col == header()->mapToIndex( *col ) ) + moveToCol = 0; break; } case KPaintInfo::COL_IMPORTANT: { show = &mPaintInfo.showImportant; col = &mPaintInfo.importantCol; - width = pixFlag->width(); + width = pixFlag->width() + 8; + if ( *col == header()->mapToIndex( *col ) ) + moveToCol = 0; break; } case KPaintInfo::COL_TODO: { show = &mPaintInfo.showTodo; col = &mPaintInfo.todoCol; - width = pixTodo->width(); + width = pixTodo->width() + 8; + if ( *col == header()->mapToIndex( *col ) ) + moveToCol = 0; break; } case KPaintInfo::COL_SPAM_HAM: { show = &mPaintInfo.showSpamHam; col = &mPaintInfo.spamHamCol; - width = pixSpam->width(); + width = pixSpam->width() + 8; + if ( *col == header()->mapToIndex( *col ) ) + moveToCol = 0; break; } case KPaintInfo::COL_WATCHED_IGNORED: { show = &mPaintInfo.showWatchedIgnored; col = &mPaintInfo.watchedIgnoredCol; - width = pixWatched->width(); + width = pixWatched->width() + 8; + if ( *col == header()->mapToIndex( *col ) ) + moveToCol = 0; break; } case KPaintInfo::COL_STATUS: { show = &mPaintInfo.showStatus; col = &mPaintInfo.statusCol; - width = pixNew->width(); + width = pixNew->width() + 8; + if ( *col == header()->mapToIndex( *col ) ) + moveToCol = 0; break; } case KPaintInfo::COL_SIGNED: { show = &mPaintInfo.showSigned; col = &mPaintInfo.signedCol; - width = pixFullySigned->width(); + width = pixFullySigned->width() + 8; + if ( *col == header()->mapToIndex( *col ) ) + moveToCol = 0; break; } case KPaintInfo::COL_CRYPTO: { show = &mPaintInfo.showCrypto; col = &mPaintInfo.cryptoCol; - width = pixFullyEncrypted->width(); + width = pixFullyEncrypted->width() + 8; + if ( *col == header()->mapToIndex( *col ) ) + moveToCol = 0; break; } case KPaintInfo::COL_RECEIVER: @@ -345,6 +362,8 @@ void KMHeaders::slotToggleColumn(int id, if (*show) { header()->setResizeEnabled(true, *col); setColumnWidth(*col, width); + if ( moveToCol >= 0 ) + header()->moveSection( *col, moveToCol ); } else { header()->setResizeEnabled(false, *col); @@ -2263,6 +2282,31 @@ void KMHeaders::contentsMousePressEvent( if ((e->button() == LeftButton) ) mMousePressed = true; } + + // check if we are on a status column and toggle it + if ( lvi && e->button() == LeftButton && !( e->state() & (ShiftButton | ControlButton | AltButton | MetaButton) ) ) { + bool flagsToggleable = GlobalSettings::self()->allowLocalFlags() || !(mFolder ? mFolder->isReadOnly() : true); + int section = header()->sectionAt( e->pos().x() ); + HeaderItem *item = static_cast<HeaderItem*>( lvi ); + KMMsgBase *msg = mFolder->getMsgBase(item->msgId()); + if ( section == mPaintInfo.flagCol && flagsToggleable ) { + setMsgStatus( KMMsgStatusFlag, true ); + } else if ( section == mPaintInfo.importantCol && flagsToggleable ) { + setMsgStatus( KMMsgStatusFlag, true ); + } else if ( section == mPaintInfo.todoCol && flagsToggleable ) { + setMsgStatus( KMMsgStatusTodo, true ); + } else if ( section == mPaintInfo.watchedIgnoredCol && flagsToggleable ) { + if ( msg->isWatched() || msg->isIgnored() ) + setMsgStatus( KMMsgStatusIgnored, true ); + else + setMsgStatus( KMMsgStatusWatched, true ); + } else if ( section == mPaintInfo.statusCol ) { + if ( msg->isUnread() || msg->isNew() ) + setMsgStatus( KMMsgStatusRead ); + else + setMsgStatus( KMMsgStatusUnread ); + } + } } //----------------------------------------------------------------------------- @@ -2324,6 +2368,22 @@ void KMHeaders::highlightMessage(QListVi void KMHeaders::slotRMB() { if (!topLevelWidget()) return; // safe bet + mOwner->updateMessageActions(); + + // check if the user clicked into a status column and only show the respective menues + QListViewItem *item = itemAt( viewport()->mapFromGlobal( QCursor::pos() ) ); + if ( item ) { + int section = header()->sectionAt( viewportToContents( viewport()->mapFromGlobal( QCursor::pos() ) ).x() ); + if ( section == mPaintInfo.flagCol || section == mPaintInfo.importantCol + || section == mPaintInfo.todoCol || section == mPaintInfo.statusCol ) { + mOwner->statusMenu()->popup( QCursor::pos() ); + return; + } + if ( section == mPaintInfo.watchedIgnoredCol ) { + mOwner->threadStatusMenu()->popup( QCursor::pos() ); + return; + } + } QPopupMenu *menu = new QPopupMenu(this); --- kmail/kmmainwidget.cpp +++ kmail/kmmainwidget.cpp @@ -3004,10 +3004,10 @@ void KMMainWidget::setupActions() mToggleFlagAction->setCheckedState( i18n("Remove &Important Message Mark") ); mStatusMenu->insert( mToggleFlagAction ); - mToggleTodoAction = new KToggleAction(i18n("Mark Message as &To-do"), "mail_todo", + mToggleTodoAction = new KToggleAction(i18n("Mark Message as &Action Item"), "mail_todo", 0, this, SLOT(slotSetMsgStatusTodo()), actionCollection(), "status_todo"); - mToggleTodoAction->setCheckedState( i18n("Remove &To-do Message Mark") ); + mToggleTodoAction->setCheckedState( i18n("Remove &Action Item Message Mark") ); mStatusMenu->insert( mToggleTodoAction ); //----- "Mark Thread" submenu @@ -3041,10 +3041,10 @@ void KMMainWidget::setupActions() mToggleThreadFlagAction->setCheckedState( i18n("Remove &Important Thread Mark") ); mThreadStatusMenu->insert( mToggleThreadFlagAction ); - mToggleThreadTodoAction = new KToggleAction(i18n("Mark Thread as &To-do"), "mail_todo", + mToggleThreadTodoAction = new KToggleAction(i18n("Mark Thread as &Action Item"), "mail_todo", 0, this, SLOT(slotSetThreadStatusTodo()), actionCollection(), "thread_todo"); - mToggleThreadTodoAction->setCheckedState( i18n("Remove &To-do Thread Mark") ); + mToggleThreadTodoAction->setCheckedState( i18n("Remove &Action Item Thread Mark") ); mThreadStatusMenu->insert( mToggleThreadTodoAction ); //------- "Watch and ignore thread" actions Property changes on: . ___________________________________________________________________ Name: svnmerge-integrated - /branches/KDE/3.5/kdepim:1-658468 /branches/work/~vkrause/enterprise:1-702832,702889,702953-703455,703761-704186,704305 + /branches/KDE/3.5/kdepim:1-658468 /branches/work/~vkrause/enterprise:1-702837,702839-709065 ++++++ r709084.diff ++++++ ------------------------------------------------------------------------ r709084 | tilladam | 2007-09-06 16:33:00 +0200 (Thu, 06 Sep 2007) | 4 lines Store the crypto type as well, across drafts (and templates, incidently). Kolab Issue 1924. ------------------------------------------------------------------------ --- kmail/kmcomposewin.cpp +++ kmail/kmcomposewin.cpp @@ -1838,6 +1838,9 @@ void KMComposeWin::setMsg(KMMessage* new mLastSignActionState = (mMsg->headerField( "X-KMail-SignatureActionEnabled" ) == "true"); if ( mMsg->headers().FindField( "X-KMail-EncryptActionEnabled" ) ) mLastEncryptActionState = (mMsg->headerField( "X-KMail-EncryptActionEnabled" ) == "true"); + if ( mMsg->headers().FindField( "X-KMail-CryptoMessageFormat" ) ) + mCryptoModuleAction->setCurrentItem( format2cb( static_cast<Kleo::CryptoMessageFormat>( + mMsg->headerField( "X-KMail-CryptoMessageFormat" ).toInt() ) ) ); mLastIdentityHasSigningKey = !ident.pgpSigningKey().isEmpty() || !ident.smimeSigningKey().isEmpty(); mLastIdentityHasEncryptionKey = !ident.pgpEncryptionKey().isEmpty() || !ident.smimeEncryptionKey().isEmpty(); @@ -4052,9 +4055,11 @@ void KMComposeWin::doSend( KMail::Messag // signing and encryption state, so let's add a header instead mMsg->setHeaderField( "X-KMail-SignatureActionEnabled", mSignAction->isChecked()? "true":"false" ); mMsg->setHeaderField( "X-KMail-EncryptActionEnabled", mEncryptAction->isChecked()? "true":"false" ); + mMsg->setHeaderField( "X-KMail-CryptoMessageFormat", QString::number( cryptoMessageFormat() ) ); } else { mMsg->removeHeaderField( "X-KMail-SignatureActionEnabled" ); mMsg->removeHeaderField( "X-KMail-EncryptActionEnabled" ); + mMsg->removeHeaderField( "X-KMail-CryptoMessageFormat" ); } ++++++ r709322.diff ++++++ ------------------------------------------------------------------------ r709322 | vkrause | 2007-09-07 09:41:05 +0200 (Fri, 07 Sep 2007) | 2 lines Revert r700060 as well, it break single folder mail check. ------------------------------------------------------------------------ --- kmail/accountmanager.h +++ kmail/accountmanager.h @@ -97,8 +97,6 @@ public slots: void singleInvalidateIMAPFolders( KMAccount * ); void intCheckMail( int, bool interactive = true ); - /** Call processNextCheck with the false argument. **/ - void slotProcessNextCheck(); void processNextCheck( bool newMail ); /** this slot increases the count of new mails to show a total number --- kmail/popaccount.cpp +++ kmail/popaccount.cpp @@ -788,7 +788,7 @@ void PopAccount::slotJobFinished() { mSlave = 0; stage = Idle; if( mMailCheckProgressItem ) { // do this only once... - bool canceled = !kmkernel || kmkernel->mailCheckAborted() || mMailCheckProgressItem->canceled(); + bool canceled = kmkernel->mailCheckAborted() || mMailCheckProgressItem->canceled(); int numMessages = canceled ? indexOfCurrentMsg : idsOfMsgs.count(); BroadcastStatus::instance()->setStatusMsgTransmissionCompleted( this->name(), numMessages, numBytes, numBytesRead, numBytesToRead, mLeaveOnServer, mMailCheckProgressItem ); --- kmail/accountmanager.cpp +++ kmail/accountmanager.cpp @@ -122,13 +122,9 @@ void AccountManager::singleCheckMail(KMA return; } - QTimer::singleShot(0, this, SLOT(slotProcessNextCheck())); -} -//----------------------------------------------------------------------------- -void AccountManager::slotProcessNextCheck() -{ - processNextCheck( false ); + processNextCheck(false); } + //----------------------------------------------------------------------------- void AccountManager::processNextCheck( bool _newMail ) { ++++++ r710624.diff ++++++ ------------------------------------------------------------------------ r710624 | tilladam | 2007-09-10 15:48:59 +0200 (Mon, 10 Sep 2007) | 5 lines Bump the kontact plugin version to reflect the profile loading changes and update the version in those plugins we ship. Fixed crashes from basket on startup in kubuntu, for example. ------------------------------------------------------------------------ --- kontact/plugins/akregator/akregatorplugin.desktop +++ kontact/plugins/akregator/akregatorplugin.desktop @@ -5,7 +5,7 @@ Icon=akregator ServiceTypes=Kontact/Plugin,KPluginInfo X-KDE-Library=libkontact_akregator -X-KDE-KontactPluginVersion=5 +X-KDE-KontactPluginVersion=6 X-KDE-KontactPartLibraryName=libakregatorpart X-KDE-KontactPartLoadOnStart=false --- kontact/plugins/test/kptestplugin.desktop +++ kontact/plugins/test/kptestplugin.desktop @@ -5,7 +5,7 @@ Icon=konsole ServiceTypes=Kontact/Plugin,KPluginInfo X-KDE-Library=libkptestplugin -X-KDE-KontactPluginVersion=5 +X-KDE-KontactPluginVersion=6 X-KDE-PluginInfo-Name=kptestplugin X-KDE-PluginInfo-Version=0.1 --- kontact/plugins/weather/weatherplugin.desktop +++ kontact/plugins/weather/weatherplugin.desktop @@ -7,7 +7,7 @@ TryExec=kweatherservice X-KDE-Library=libkontact_weatherplugin X-KDE-KontactIdentifier=weather -X-KDE-KontactPluginVersion=5 +X-KDE-KontactPluginVersion=6 X-KDE-KontactPluginHasSummary=true X-KDE-KontactPluginHasPart=false --- kontact/plugins/knode/knodeplugin.desktop +++ kontact/plugins/knode/knodeplugin.desktop @@ -5,7 +5,7 @@ Icon=kontact_news ServiceTypes=Kontact/Plugin,KPluginInfo X-KDE-Library=libkontact_knodeplugin -X-KDE-KontactPluginVersion=5 +X-KDE-KontactPluginVersion=6 X-KDE-KontactPartLibraryName=libknodepart X-KDE-KontactPartExecutableName=knode --- kontact/plugins/specialdates/specialdatesplugin.desktop +++ kontact/plugins/specialdates/specialdatesplugin.desktop @@ -5,7 +5,7 @@ Icon=cookie ServiceTypes=Kontact/Plugin,KPluginInfo X-KDE-Library=libkontact_specialdatesplugin -X-KDE-KontactPluginVersion=5 +X-KDE-KontactPluginVersion=6 X-KDE-KontactPluginHasPart=false X-KDE-KontactPluginHasSummary=true --- kontact/plugins/kitchensync/kitchensync.desktop +++ kontact/plugins/kitchensync/kitchensync.desktop @@ -5,7 +5,7 @@ Icon=kitchensync ServiceTypes=Kontact/Plugin,KPluginInfo X-KDE-Library=libkontact_kitchensync -X-KDE-KontactPluginVersion=5 +X-KDE-KontactPluginVersion=6 X-KDE-KontactPartLibraryName=libkitchensyncpart X-KDE-PluginInfo-Name=kontact_kitchensync --- kontact/plugins/kpilot/kpilotplugin.desktop +++ kontact/plugins/kpilot/kpilotplugin.desktop @@ -6,7 +6,7 @@ ServiceTypes=Kontact/Plugin,KPluginInfo X-KDE-Library=libkontact_kpilotplugin X-KDE-KontactIdentifier=kpilot -X-KDE-KontactPluginVersion=5 +X-KDE-KontactPluginVersion=6 X-KDE-KontactPluginHasSummary=true X-KDE-KontactPluginHasPart=false --- kontact/plugins/knotes/knotesplugin.desktop +++ kontact/plugins/knotes/knotesplugin.desktop @@ -5,7 +5,7 @@ Icon=kontact_notes ServiceTypes=Kontact/Plugin,KPluginInfo X-KDE-Library=libkontact_knotesplugin -X-KDE-KontactPluginVersion=5 +X-KDE-KontactPluginVersion=6 X-KDE-KontactPluginHasSummary=true X-KDE-PluginInfo-Website=http://pim.kde.org/components/knotes.php --- kontact/plugins/karm/karmplugin.desktop +++ kontact/plugins/karm/karmplugin.desktop @@ -5,7 +5,7 @@ Icon=karm ServiceTypes=Kontact/Plugin,KPluginInfo X-KDE-Library=libkontact_karm -X-KDE-KontactPluginVersion=5 +X-KDE-KontactPluginVersion=6 X-KDE-KontactPartLibraryName=libkarmpart X-KDE-PluginInfo-Name=kontact_karm --- kontact/plugins/kaddressbook/kaddressbookplugin.desktop +++ kontact/plugins/kaddressbook/kaddressbookplugin.desktop @@ -5,7 +5,7 @@ Icon=kontact_contacts ServiceTypes=Kontact/Plugin,KPluginInfo X-KDE-Library=libkontact_kaddressbookplugin -X-KDE-KontactPluginVersion=5 +X-KDE-KontactPluginVersion=6 X-KDE-KontactPartLibraryName=libkaddressbookpart X-KDE-KontactPartExecutableName=kaddressbook X-KDE-KontactPluginHasSummary=false --- kontact/plugins/korganizer/todoplugin.desktop +++ kontact/plugins/korganizer/todoplugin.desktop @@ -5,7 +5,7 @@ Icon=kontact_todo ServiceTypes=Kontact/Plugin X-KDE-Library=libkontact_todoplugin -X-KDE-KontactPluginVersion=5 +X-KDE-KontactPluginVersion=6 X-KDE-KontactPartLibraryName=libkorganizerpart X-KDE-KontactPartExecutableName=korganizer X-KDE-KontactPluginHasSummary=true --- kontact/plugins/korganizer/journalplugin.desktop +++ kontact/plugins/korganizer/journalplugin.desktop @@ -5,7 +5,7 @@ Icon=kontact_journal ServiceTypes=Kontact/Plugin X-KDE-Library=libkontact_journalplugin -X-KDE-KontactPluginVersion=5 +X-KDE-KontactPluginVersion=6 X-KDE-KontactPartLibraryName=libkorganizerpart X-KDE-KontactPartExecutableName=korganizer X-KDE-KontactPluginHasSummary=false --- kontact/plugins/korganizer/korganizerplugin.desktop +++ kontact/plugins/korganizer/korganizerplugin.desktop @@ -5,7 +5,7 @@ Icon=kontact_date ServiceTypes=Kontact/Plugin,KPluginInfo X-KDE-Library=libkontact_korganizerplugin -X-KDE-KontactPluginVersion=5 +X-KDE-KontactPluginVersion=6 X-KDE-KontactPartLibraryName=libkorganizerpart X-KDE-KontactPartExecutableName=korganizer X-KDE-KontactPluginHasSummary=true --- kontact/plugins/kmail/kmailplugin.desktop +++ kontact/plugins/kmail/kmailplugin.desktop @@ -5,7 +5,7 @@ Icon=kontact_mail ServiceTypes=Kontact/Plugin,KPluginInfo X-KDE-Library=libkontact_kmailplugin -X-KDE-KontactPluginVersion=5 +X-KDE-KontactPluginVersion=6 X-KDE-KontactPartLibraryName=libkmailpart X-KDE-KontactPartExecutableName=kmail X-KDE-KontactPartLoadOnStart=true --- kontact/plugins/summary/summaryplugin.desktop +++ kontact/plugins/summary/summaryplugin.desktop @@ -5,7 +5,7 @@ Icon=kontact_summary ServiceTypes=Kontact/Plugin,KPluginInfo X-KDE-Library=libkontact_summaryplugin -X-KDE-KontactPluginVersion=5 +X-KDE-KontactPluginVersion=6 X-KDE-PluginInfo-Name=kontact_summaryplugin X-KDE-PluginInfo-Version=0.1 --- kontact/plugins/newsticker/newstickerplugin.desktop +++ kontact/plugins/newsticker/newstickerplugin.desktop @@ -6,7 +6,7 @@ ServiceTypes=Kontact/Plugin,KPluginInfo TryExec=rssservice X-KDE-Library=libkontact_newstickerplugin -X-KDE-KontactPluginVersion=5 +X-KDE-KontactPluginVersion=6 X-KDE-KontactPluginHasSummary=true X-KDE-KontactPluginHasPart=false --- kontact/interfaces/plugin.h +++ kontact/interfaces/plugin.h @@ -42,7 +42,7 @@ namespace KParts { class ReadOnlyPart; } Increase this version number whenever you make a change in the API. */ -#define KONTACT_PLUGIN_VERSION 5 +#define KONTACT_PLUGIN_VERSION 6 namespace Kontact { ++++++ r711165.diff ++++++ ------------------------------------------------------------------------ r711165 | mueller | 2007-09-11 17:53:42 +0200 (Tue, 11 Sep 2007) | 2 lines reapply kmkernel checks ------------------------------------------------------------------------ --- kmail/popaccount.cpp +++ kmail/popaccount.cpp @@ -788,7 +788,7 @@ void PopAccount::slotJobFinished() { mSlave = 0; stage = Idle; if( mMailCheckProgressItem ) { // do this only once... - bool canceled = kmkernel->mailCheckAborted() || mMailCheckProgressItem->canceled(); + bool canceled = !kmkernel || kmkernel->mailCheckAborted() || mMailCheckProgressItem->canceled(); int numMessages = canceled ? indexOfCurrentMsg : idsOfMsgs.count(); BroadcastStatus::instance()->setStatusMsgTransmissionCompleted( this->name(), numMessages, numBytes, numBytesRead, numBytesToRead, mLeaveOnServer, mMailCheckProgressItem ); ++++++ r711601.diff ++++++ ------------------------------------------------------------------------ r711601 | mueller | 2007-09-12 14:06:03 +0200 (Wed, 12 Sep 2007) | 2 lines fix duplicated label due to a merge error. (bnc:309321) ------------------------------------------------------------------------ --- certmanager/lib/ui/keyselectiondialog.cpp +++ certmanager/lib/ui/keyselectiondialog.cpp @@ -344,9 +344,6 @@ void Kleo::KeySelectionDialog::init( boo mTopLayout->addWidget( textLabel ); } - if ( !text.isEmpty() ) - mTopLayout->addWidget( new QLabel( text, page ) ); - QHBoxLayout * hlay = new QHBoxLayout( mTopLayout ); // inherits spacing QLineEdit * le = new QLineEdit( page ); le->setText( initialQuery ); ++++++ r711603.diff ++++++ ------------------------------------------------------------------------ r711603 | vkrause | 2007-09-12 14:09:47 +0200 (Wed, 12 Sep 2007) | 2 lines Work correctly with multiple main windows. ------------------------------------------------------------------------ Index: kmail/favoritefolderview.h =================================================================== --- kmail/favoritefolderview.h (revision 711602) +++ kmail/favoritefolderview.h (revision 711603) @@ -48,7 +48,8 @@ class FavoriteFolderView : public Folder Q_OBJECT public: - FavoriteFolderView( QWidget *parent = 0 ); + FavoriteFolderView( KMMainWidget *mainWidget, QWidget *parent = 0 ); + ~FavoriteFolderView(); void readConfig(); void writeConfig(); @@ -67,7 +68,7 @@ class FavoriteFolderView : public Folder private: static QString prettyName( KMFolderTreeItem* fti ); - static KMFolderTreeItem* findFolderTreeItem( KMFolder* folder ); + KMFolderTreeItem* findFolderTreeItem( KMFolder* folder ) const; private slots: void selectionChanged(); @@ -79,9 +80,12 @@ class FavoriteFolderView : public Folder void initializeFavorites(); void renameFolder(); void addFolder(); + void notifyInstancesOnChange(); private: KMFolderTreeItem* mContextMenuItem; + static QValueList<FavoriteFolderView*> mInstances; + bool mReadingConfig; }; } Index: kmail/kmmainwidget.cpp =================================================================== --- kmail/kmmainwidget.cpp (revision 711602) +++ kmail/kmmainwidget.cpp (revision 711603) @@ -660,7 +660,7 @@ void KMMainWidget::createWidgets(void) // create list of folders mFolderViewSplitter = new QSplitter( Qt::Vertical, mFolderViewParent ); mFolderViewSplitter->setOpaqueResize( KGlobalSettings::opaqueResize() ); - mFavoriteFolderView = new KMail::FavoriteFolderView( mFolderViewSplitter ); + mFavoriteFolderView = new KMail::FavoriteFolderView( this, mFolderViewSplitter ); if ( mFavoritesCheckMailAction ) connect( mFavoritesCheckMailAction, SIGNAL(activated()), mFavoriteFolderView, SLOT(checkMail()) ); QWidget *folderTreeParent = mFolderViewParent; Index: kmail/favoritefolderview.cpp =================================================================== --- kmail/favoritefolderview.cpp (revision 711602) +++ kmail/favoritefolderview.cpp (revision 711603) @@ -81,7 +81,6 @@ class FavoriteFolderViewToolTip : public using namespace KMail; - FavoriteFolderViewItem::FavoriteFolderViewItem(FavoriteFolderView * parent, const QString & name, KMFolder * folder) : KMFolderTreeItem( parent, name, folder ), mOldName( folder->label() ) @@ -162,11 +161,14 @@ void FavoriteFolderViewItem::nameChanged } +QValueList<FavoriteFolderView*> FavoriteFolderView::mInstances; -FavoriteFolderView::FavoriteFolderView(QWidget * parent) : - FolderTreeBase( kmkernel->getKMMainWidget(), parent ), - mContextMenuItem( 0 ) +FavoriteFolderView::FavoriteFolderView( KMMainWidget *mainWidget, QWidget * parent) : + FolderTreeBase( mainWidget, parent ), + mContextMenuItem( 0 ), + mReadingConfig( false ) { + assert( mainWidget ); addColumn( i18n("Favorite Folders") ); setResizeMode( LastColumn ); header()->setClickEnabled( false ); @@ -182,6 +184,7 @@ FavoriteFolderView::FavoriteFolderView(Q connect( this, SIGNAL(dropped(QDropEvent*,QListViewItem*)), SLOT(dropped(QDropEvent*,QListViewItem*)) ); connect( this, SIGNAL(contextMenuRequested(QListViewItem*, const QPoint &, int)), SLOT(contextMenu(QListViewItem*,const QPoint&)) ); + connect( this, SIGNAL(moved()), SLOT(notifyInstancesOnChange()) ); connect( kmkernel->folderMgr(), SIGNAL(changed()), SLOT(initializeFavorites()) ); connect( kmkernel->dimapFolderMgr(), SIGNAL(changed()), SLOT(initializeFavorites()) ); @@ -198,10 +201,18 @@ FavoriteFolderView::FavoriteFolderView(Q setFont( f ); new FavoriteFolderViewToolTip( this ); + + mInstances.append( this ); +} + +FavoriteFolderView::~FavoriteFolderView() +{ + mInstances.remove( this ); } void FavoriteFolderView::readConfig() { + mReadingConfig = true; clear(); QValueList<int> folderIds = GlobalSettings::self()->favoriteFolderIds(); QStringList folderNames = GlobalSettings::self()->favoriteFolderNames(); @@ -226,6 +237,7 @@ void FavoriteFolderView::readConfig() QTimer::singleShot( 0, this, SLOT(initializeFavorites()) ); readColorConfig(); + mReadingConfig = false; } void FavoriteFolderView::writeConfig() @@ -243,7 +255,7 @@ void FavoriteFolderView::writeConfig() bool FavoriteFolderView::acceptDrag(QDropEvent * e) const { - KMFolderTree *ft = kmkernel->getKMMainWidget()->folderTree(); + KMFolderTree *ft = mainWidget()->folderTree(); assert( ft ); if ( e->provides( "application/x-qlistviewitem" ) && (e->source() == ft->viewport() || e->source() == viewport() ) ) @@ -261,6 +273,7 @@ KMFolderTreeItem* FavoriteFolderView::ad else item->moveItem( lastItem() ); ensureItemVisible( item ); + notifyInstancesOnChange(); return item; } @@ -269,7 +282,7 @@ void FavoriteFolderView::selectionChange KMFolderTreeItem *fti = static_cast<KMFolderTreeItem*>( selectedItem() ); if ( !fti ) return; - KMFolderTree *ft = kmkernel->getKMMainWidget()->folderTree(); + KMFolderTree *ft = mainWidget()->folderTree(); assert( ft ); assert( fti ); ft->showFolder( fti->folder() ); @@ -324,7 +337,7 @@ void FavoriteFolderView::folderRemoved(K void FavoriteFolderView::dropped(QDropEvent * e, QListViewItem * after) { QListViewItem* afterItem = after; - KMFolderTree *ft = kmkernel->getKMMainWidget()->folderTree(); + KMFolderTree *ft = mainWidget()->folderTree(); assert( ft ); if ( e->source() == ft->viewport() && e->provides( "application/x-qlistviewitem" ) ) { for ( QListViewItemIterator it( ft ); it.current(); ++it ) { @@ -341,9 +354,7 @@ void FavoriteFolderView::dropped(QDropEv void FavoriteFolderView::contextMenu(QListViewItem * item, const QPoint & point) { - KMMainWidget *mainWidget = kmkernel->getKMMainWidget(); - assert( mainWidget ); - KMFolderTree *ft = mainWidget->folderTree(); + KMFolderTree *ft = mainWidget()->folderTree(); assert( ft ); KMFolderTreeItem *fti = static_cast<KMFolderTreeItem*>( item ); mContextMenuItem = fti; @@ -354,15 +365,15 @@ void FavoriteFolderView::contextMenu(QLi contextMenu.insertItem( SmallIconSet("edit"), i18n("Rename Favorite"), this, SLOT(renameFolder()) ); contextMenu.insertSeparator(); - mainWidget->action("mark_all_as_read")->plug( &contextMenu ); + mainWidget()->action("mark_all_as_read")->plug( &contextMenu ); if ( fti->folder()->folderType() == KMFolderTypeImap || fti->folder()->folderType() == KMFolderTypeCachedImap ) - mainWidget->action("refresh_folder")->plug( &contextMenu ); + mainWidget()->action("refresh_folder")->plug( &contextMenu ); if ( fti->folder()->isMailingListEnabled() ) - mainWidget->action("post_message")->plug( &contextMenu ); + mainWidget()->action("post_message")->plug( &contextMenu ); contextMenu.insertItem( SmallIconSet("configure_shortcuts"), i18n("&Assign Shortcut..."), fti, SLOT(assignShortcut()) ); contextMenu.insertItem( i18n("Expire..."), fti, SLOT(slotShowExpiryProperties()) ); - mainWidget->action("modify")->plug( &contextMenu ); + mainWidget()->action("modify")->plug( &contextMenu ); } else { contextMenu.insertItem( SmallIconSet("bookmark_add"), i18n("Add Favorite Folder..."), this, SLOT(addFolder()) ); @@ -374,12 +385,13 @@ void FavoriteFolderView::removeFolder() { delete mContextMenuItem; mContextMenuItem = 0; + notifyInstancesOnChange(); } void FavoriteFolderView::initializeFavorites() { QValueList<int> seenInboxes = GlobalSettings::self()->favoriteFolderViewSeenInboxes(); - KMFolderTree *ft = kmkernel->getKMMainWidget()->folderTree(); + KMFolderTree *ft = mainWidget()->folderTree(); assert( ft ); for ( QListViewItemIterator it( ft ); it.current(); ++it ) { KMFolderTreeItem *fti = static_cast<KMFolderTreeItem*>( it.current() ); @@ -404,6 +416,7 @@ void FavoriteFolderView::renameFolder() if ( !ok ) return; mContextMenuItem->setText( 0, name ); + notifyInstancesOnChange(); } QString FavoriteFolderView::prettyName(KMFolderTreeItem * fti) @@ -460,7 +473,6 @@ void FavoriteFolderView::readColorConfig QPalette newPal = palette(); newPal.setColor( QColorGroup::Base, mPaintInfo.colBack ); setPalette( newPal ); - } void FavoriteFolderView::addFolder() @@ -475,10 +487,10 @@ void FavoriteFolderView::addFolder() addFolder( folder, fti ? prettyName( fti ) : folder->label() ); } -KMFolderTreeItem * FavoriteFolderView::findFolderTreeItem(KMFolder * folder) +KMFolderTreeItem * FavoriteFolderView::findFolderTreeItem(KMFolder * folder) const { assert( folder ); - KMFolderTree *ft = kmkernel->getKMMainWidget()->folderTree(); + KMFolderTree *ft = mainWidget()->folderTree(); assert( ft ); for ( QListViewItemIterator it( ft ); it.current(); ++it ) { KMFolderTreeItem *fti = static_cast<KMFolderTreeItem*>( it.current() ); @@ -509,4 +521,16 @@ void FavoriteFolderView::checkMail() } } +void FavoriteFolderView::notifyInstancesOnChange() +{ + if ( mReadingConfig ) + return; + writeConfig(); + for ( QValueList<FavoriteFolderView*>::ConstIterator it = mInstances.begin(); it != mInstances.end(); ++it ) { + if ( (*it) == this || (*it)->mReadingConfig ) + continue; + (*it)->readConfig(); + } +} + #include "favoritefolderview.moc" ++++++ r711604.diff ++++++ ------------------------------------------------------------------------ r711604 | vkrause | 2007-09-12 14:16:42 +0200 (Wed, 12 Sep 2007) | 4 lines Fix crash when closing KMail. Kolab issue 1955. ------------------------------------------------------------------------ --- kmail/kmailicalifaceimpl.cpp +++ kmail/kmailicalifaceimpl.cpp @@ -134,9 +134,10 @@ ExtraFolder::ExtraFolder( KMFolder* f ) folder->open("kmailicaliface::extrafolder"); } -ExtraFolder::~ExtraFolder() +ExtraFolder::~ExtraFolder() { - folder->close("kmailicaliface::extrafolder"); + if ( folder ) + folder->close("kmailicaliface::extrafolder"); } ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org
participants (1)
-
root@Hilbert.suse.de