Hello community, here is the log from the commit of package kdepimlibs4 for openSUSE:13.1 checked in at 2013-10-03 15:54:33 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:13.1/kdepimlibs4 (Old) and /work/SRC/openSUSE:13.1/.kdepimlibs4.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kdepimlibs4" Changes: -------- --- /work/SRC/openSUSE:13.1/kdepimlibs4/kdepimlibs4.changes 2013-09-23 10:55:43.000000000 +0200 +++ /work/SRC/openSUSE:13.1/.kdepimlibs4.new/kdepimlibs4.changes 2013-10-03 15:54:36.000000000 +0200 @@ -1,0 +2,7 @@ +Sat Sep 28 15:04:56 UTC 2013 - tittiatc...@gmail.com + +- Update to 4.11.2 + * KDE 4.11.2 bugfix release + * See http://www.kde.org/announcements/announce-4.11.2.php + +------------------------------------------------------------------- Old: ---- kdepimlibs-4.11.1.tar.xz New: ---- kdepimlibs-4.11.2.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kdepimlibs4.spec ++++++ --- /var/tmp/diff_new_pack.U38Uru/_old 2013-10-03 15:54:36.000000000 +0200 +++ /var/tmp/diff_new_pack.U38Uru/_new 2013-10-03 15:54:36.000000000 +0200 @@ -17,7 +17,7 @@ Name: kdepimlibs4 -Version: 4.11.1 +Version: 4.11.2 Release: 0 Summary: KDE PIM Libraries License: LGPL-2.1+ ++++++ kdepimlibs-4.11.1.tar.xz -> kdepimlibs-4.11.2.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.11.1/CMakeLists.txt new/kdepimlibs-4.11.2/CMakeLists.txt --- old/kdepimlibs-4.11.1/CMakeLists.txt 2013-08-29 20:34:27.000000000 +0200 +++ new/kdepimlibs-4.11.2/CMakeLists.txt 2013-09-26 21:22:19.000000000 +0200 @@ -7,7 +7,7 @@ ############### The kdepimlibs version (used e.g. in KdepimLibsConfig.cmake) ############### set(KDEPIMLIBS_VERSION_MAJOR 4) set(KDEPIMLIBS_VERSION_MINOR 11) -set(KDEPIMLIBS_VERSION_PATCH 1) +set(KDEPIMLIBS_VERSION_PATCH 2) set(KDEPIMLIBS_VERSION ${KDEPIMLIBS_VERSION_MAJOR}.${KDEPIMLIBS_VERSION_MINOR}.${KDEPIMLIBS_VERSION_PATCH}) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.11.1/akonadi/calendar/calendarbase.cpp new/kdepimlibs-4.11.2/akonadi/calendar/calendarbase.cpp --- old/kdepimlibs-4.11.1/akonadi/calendar/calendarbase.cpp 2013-08-28 19:06:13.000000000 +0200 +++ new/kdepimlibs-4.11.2/akonadi/calendar/calendarbase.cpp 2013-09-26 21:22:19.000000000 +0200 @@ -353,9 +353,9 @@ return i; } -Item CalendarBase::item( const Incidence::Ptr& inc ) const +Item CalendarBase::item( const Incidence::Ptr &incidence ) const { - return item( inc->instanceIdentifier() ); + return incidence ? item( incidence->instanceIdentifier() ) : Item(); } Akonadi::Item::List CalendarBase::items() const diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.11.1/akonadi/calendar/calendarbase.h new/kdepimlibs-4.11.2/akonadi/calendar/calendarbase.h --- old/kdepimlibs-4.11.1/akonadi/calendar/calendarbase.h 2013-08-28 19:06:13.000000000 +0200 +++ new/kdepimlibs-4.11.2/akonadi/calendar/calendarbase.h 2013-09-26 21:22:19.000000000 +0200 @@ -73,7 +73,7 @@ * Returns the Item containing the incidence with uid @p uid or an invalid Item * if the incidence isn't found. */ - Akonadi::Item item( const KCalCore::Incidence::Ptr &inc ) const; + Akonadi::Item item( const KCalCore::Incidence::Ptr &incidence ) const; /** * Returns the Item with @p id or an invalid Item if not found. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.11.1/akonadi/calendar/etmcalendar.cpp new/kdepimlibs-4.11.2/akonadi/calendar/etmcalendar.cpp --- old/kdepimlibs-4.11.1/akonadi/calendar/etmcalendar.cpp 2013-08-28 19:06:13.000000000 +0200 +++ new/kdepimlibs-4.11.2/akonadi/calendar/etmcalendar.cpp 2013-09-26 21:22:19.000000000 +0200 @@ -398,7 +398,6 @@ // The Google resource, for example, changes the UID when we create incidences. handleUidChange( item, newIncidence->instanceIdentifier() ); existingIncidence = q->incidence( newIncidence->uid(), newIncidence->recurrenceId() ); - Q_ASSERT( existingIncidence ); } // The item needs updating too, revision changed. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.11.1/akonadi/calendar/freebusymanager.cpp new/kdepimlibs-4.11.2/akonadi/calendar/freebusymanager.cpp --- old/kdepimlibs-4.11.1/akonadi/calendar/freebusymanager.cpp 2013-08-28 19:06:13.000000000 +0200 +++ new/kdepimlibs-4.11.2/akonadi/calendar/freebusymanager.cpp 2013-09-26 21:22:19.000000000 +0200 @@ -77,24 +77,60 @@ return retUrl; } -bool fbExists( const KUrl &url ) +// We need this function because using KIO::NetAccess::exists() +// is useless for the http and https protocols. And getting back +// arbitrary data is also useless because a server can respond back +// with a "no such document" page. So we need smart checking. +FbCheckerJob::FbCheckerJob( const QList<KUrl> &urlsToCheck, QObject *parent ) + : KJob( parent ), + mUrlsToCheck(urlsToCheck) { - // We need this function because using KIO::NetAccess::exists() - // is useless for the http and https protocols. And getting back - // arbitrary data is also useless because a server can respond back - // with a "no such document" page. So we need smart checking. - - KIO::Job *job = KIO::get( url, KIO::NoReload, KIO::HideProgressInfo ); - QByteArray data; - if ( KIO::NetAccess::synchronousRun( job, 0, &data ) ) { - QString dataStr( data ); - if ( dataStr.contains( "BEGIN:VCALENDAR" ) ) { - return true; - } +} + +void FbCheckerJob::start() +{ + checkNextUrl(); +} + +void FbCheckerJob::checkNextUrl() +{ + if ( mUrlsToCheck.isEmpty() ) { + kDebug() << "No fb file found"; + setError( KJob::UserDefinedError ); + emitResult(); + return; } - return false; + const KUrl url = mUrlsToCheck.takeFirst(); + + mData.clear(); + KIO::TransferJob *job = KIO::get( url, KIO::NoReload, KIO::HideProgressInfo ); + connect( job, SIGNAL(data(KIO::Job*,QByteArray)), this, SLOT(dataReceived(KIO::Job*, QByteArray)) ); + connect( job, SIGNAL(result(KJob*)), this, SLOT(onGetJobFinished(KJob*)) ); +} + +void FbCheckerJob::dataReceived( KIO::Job*, const QByteArray &data ) +{ + mData.append( data ); } +void FbCheckerJob::onGetJobFinished( KJob *job ) +{ + KIO::TransferJob *transferJob = static_cast<KIO::TransferJob*>( job ); + if ( mData.contains( "BEGIN:VCALENDAR" ) ) { + kDebug() << "found freebusy"; + mValidUrl = transferJob->url(); + emitResult(); + } else { + checkNextUrl(); + } +} + +KUrl FbCheckerJob::validUrl() const +{ + return mValidUrl; +} + + /// FreeBusyManagerPrivate::FreeBusyProviderRequest FreeBusyManagerPrivate::FreeBusyProviderRequest::FreeBusyProviderRequest( const QString &provider ) @@ -170,12 +206,16 @@ mBrokenUrl = targetURL.isEmpty() || !targetURL.isValid(); } +static QString configFile() +{ + static QString file = KStandardDirs::locateLocal( "data", QLatin1String( "korganizer/freebusyurls" ) ); + return file; +} + void FreeBusyManagerPrivate::fetchFreeBusyUrl( const QString &email ) { // First check if there is a specific FB url for this email - QString configFile = KStandardDirs::locateLocal( "data", - QLatin1String( "korganizer/freebusyurls" ) ); - KConfig cfg( configFile ); + KConfig cfg( configFile() ); KConfigGroup group = cfg.group( email ); QString url = group.readEntry( QLatin1String( "url" ) ); if ( !url.isEmpty() ) { @@ -208,16 +248,13 @@ } Akonadi::ContactSearchJob *job = qobject_cast<Akonadi::ContactSearchJob*>( _job ); - QString configFile = KStandardDirs::locateLocal( "data", - QLatin1String( "korganizer/freebusyurls" ) ); - KConfig cfg( configFile ); + KConfig cfg( configFile() ); KConfigGroup group = cfg.group( email ); QString url = group.readEntry( QLatin1String( "url" ) ); - QString pref; const KABC::Addressee::List contacts = job->contacts(); foreach ( const KABC::Addressee &contact, contacts ) { - pref = contact.preferredEmail(); + const QString pref = contact.preferredEmail(); if ( !pref.isEmpty() && pref != email ) { group = cfg.group( pref ); url = group.readEntry ( "url" ); @@ -283,6 +320,7 @@ // else we search for a fb file in the specified URL with known possible extensions const QStringList extensions = QStringList() << "xfb" << "ifb" << "vfb"; QStringList::ConstIterator ext; + QList<KUrl> urlsToCheck; for ( ext = extensions.constBegin(); ext != extensions.constEnd(); ++ext ) { // build a url for this extension const KUrl sourceUrl = CalendarSettings::self()->freeBusyRetrieveUrl(); @@ -296,18 +334,30 @@ } dirURL.setUser( CalendarSettings::self()->freeBusyRetrieveUser() ); dirURL.setPass( CalendarSettings::self()->freeBusyRetrievePassword() ); - if ( fbExists( dirURL ) ) { - // write the URL to the cache - KConfigGroup group = cfg.group( email ); - group.writeEntry( "url", dirURL.prettyUrl() ); // prettyURL() does not write user nor password - kDebug() << "Found url email=" << email << "; url=" << dirURL; - emit freeBusyUrlRetrieved( email, dirURL ); - return; - } + urlsToCheck << dirURL; } + KJob *checkerJob = new FbCheckerJob( urlsToCheck, this ); + checkerJob->setProperty( "email", email ); + connect( checkerJob, SIGNAL(result(KJob*)), this, SLOT(fbCheckerJobFinished(KJob*)) ); + checkerJob->start(); +} - kDebug() << "Returning invalid url"; - emit freeBusyUrlRetrieved( email, KUrl() ); +void FreeBusyManagerPrivate::fbCheckerJobFinished( KJob *job ) +{ + const QString email = job->property( "email" ).toString(); + if ( !job->error() ) { + FbCheckerJob *checkerJob = static_cast<FbCheckerJob*>( job ); + KUrl dirURL = checkerJob->validUrl(); + // write the URL to the cache + KConfig cfg( configFile() ); + KConfigGroup group = cfg.group( email ); + group.writeEntry( "url", dirURL.prettyUrl() ); // prettyURL() does not write user nor password + kDebug() << "Found url email=" << email << "; url=" << dirURL; + emit freeBusyUrlRetrieved( email, dirURL ); + } else { + kDebug() << "Returning invalid url"; + emit freeBusyUrlRetrieved( email, KUrl() ); + } } QString FreeBusyManagerPrivate::freeBusyToIcal( const KCalCore::FreeBusy::Ptr &freebusy ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.11.1/akonadi/calendar/freebusymanager_p.h new/kdepimlibs-4.11.2/akonadi/calendar/freebusymanager_p.h --- old/kdepimlibs-4.11.1/akonadi/calendar/freebusymanager_p.h 2013-06-28 19:34:42.000000000 +0200 +++ new/kdepimlibs-4.11.2/akonadi/calendar/freebusymanager_p.h 2013-09-26 21:22:19.000000000 +0200 @@ -31,7 +31,12 @@ #include <QtDBus/QDBusContext> #include <QtDBus/QDBusInterface> -class KJob; +#include <KJob> +#include <KUrl> + +namespace KIO { +class Job; +} namespace Akonadi { @@ -117,11 +122,32 @@ void onFreeBusyRetrieved( const QString &email, const QString &freeBusy, bool success, const QString &errorText ); void processMailSchedulerResult( Akonadi::Scheduler::Result result, const QString &errorMsg ); + void fbCheckerJobFinished( KJob* ); signals: void freeBusyUrlRetrieved( const QString &email, const KUrl &url ); }; +class FbCheckerJob : public KJob +{ + Q_OBJECT +public: + explicit FbCheckerJob( const QList<KUrl> &urlsToCheck, QObject *parent = 0 ); + virtual void start(); + + KUrl validUrl() const; + +private slots: + void onGetJobFinished( KJob *job ); + void dataReceived( KIO::Job *, const QByteArray &data ); + +private: + void checkNextUrl(); + QList<KUrl> mUrlsToCheck; + QByteArray mData; + KUrl mValidUrl; +}; + } #endif // FREEBUSYMANAGER_P_H diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.11.1/akonadi/calendar/history_p.cpp new/kdepimlibs-4.11.2/akonadi/calendar/history_p.cpp --- old/kdepimlibs-4.11.1/akonadi/calendar/history_p.cpp 2013-08-28 19:06:13.000000000 +0200 +++ new/kdepimlibs-4.11.2/akonadi/calendar/history_p.cpp 2013-09-26 21:22:19.000000000 +0200 @@ -56,8 +56,10 @@ Akonadi::Item::List::iterator it = mItems.begin(); while ( it != mItems.end() ) { - if ( (*it).id() == oldId ) + if ( (*it).id() == oldId ) { (*it).setId( newId ); + (*it).setRevision( 0 ); + } ++it; } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.11.1/akonadi/calendar/itiphandler.cpp new/kdepimlibs-4.11.2/akonadi/calendar/itiphandler.cpp --- old/kdepimlibs-4.11.1/akonadi/calendar/itiphandler.cpp 2013-08-28 19:06:13.000000000 +0200 +++ new/kdepimlibs-4.11.2/akonadi/calendar/itiphandler.cpp 2013-09-26 21:22:19.000000000 +0200 @@ -241,16 +241,19 @@ delete publishdlg; } -void ITIPHandler::sendAsICalendar( const KCalCore::Incidence::Ptr &incidence, +void ITIPHandler::sendAsICalendar( const KCalCore::Incidence::Ptr &originalIncidence, QWidget *parentWidget ) { Q_UNUSED( parentWidget ); - Q_ASSERT( incidence ); - if ( !incidence ) { + Q_ASSERT( originalIncidence ); + if ( !originalIncidence ) { kError() << "Invalid incidence"; return; } + // Clone so we can change organizer and recurid + KCalCore::Incidence::Ptr incidence = KCalCore::Incidence::Ptr( originalIncidence->clone() ); + KPIMIdentities::IdentityManager identityManager; QPointer<Akonadi::PublishDialog> publishdlg = new Akonadi::PublishDialog; @@ -262,6 +265,11 @@ Akonadi::CalendarUtils::email() ) ) ); } + if ( incidence->hasRecurrenceId() ) { + // For an individual occurrence, recur id doesn't make sense, since we're not sending the whole recurrence series. + incidence->setRecurrenceId(KDateTime()); + } + KCalCore::ICalFormat format; const QString from = Akonadi::CalendarUtils::email(); const bool bccMe = Akonadi::CalendarSettings::self()->bcc(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.11.1/akonadi/collectionfetchjob.cpp new/kdepimlibs-4.11.2/akonadi/collectionfetchjob.cpp --- old/kdepimlibs-4.11.1/akonadi/collectionfetchjob.cpp 2013-08-28 19:06:13.000000000 +0200 +++ new/kdepimlibs-4.11.2/akonadi/collectionfetchjob.cpp 2013-09-26 21:22:19.000000000 +0200 @@ -98,6 +98,17 @@ emit q->collectionsReceived( mPendingCollections ); mPendingCollections.clear(); } + + QString jobDebuggingString() const + { + if ( mBase.isValid() ) { + return QString::fromLatin1( "Collection Id %1" ).arg( mBase.id() ); + } else if ( CollectionUtils::hasValidHierarchicalRID( mBase ) ) { + return QString::fromUtf8( '(' + ProtocolHelper::hierarchicalRidToByteArray( mBase ) + ')' ); + } else { + return QString::fromLatin1( "Collection RemoteId %1" ).arg( mBase.remoteId() ); + } + } }; CollectionFetchJob::CollectionFetchJob( const Collection &collection, Type type, QObject *parent ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.11.1/akonadi/collectionmodel.cpp new/kdepimlibs-4.11.2/akonadi/collectionmodel.cpp --- old/kdepimlibs-4.11.1/akonadi/collectionmodel.cpp 2013-08-28 19:06:13.000000000 +0200 +++ new/kdepimlibs-4.11.2/akonadi/collectionmodel.cpp 2013-09-26 21:22:19.000000000 +0200 @@ -143,13 +143,12 @@ return QModelIndex(); } - Collection col = d->collections.value( index.internalId() ); + const Collection col = d->collections.value( index.internalId() ); if ( !col.isValid() ) { return QModelIndex(); } - - Collection parentCol = d->collections.value( col.parentCollection().id() ); + const Collection parentCol = d->collections.value( col.parentCollection().id() ); if ( !parentCol.isValid() ) { return QModelIndex(); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.11.1/akonadi/contact/actions/sendsmsaction.cpp new/kdepimlibs-4.11.2/akonadi/contact/actions/sendsmsaction.cpp --- old/kdepimlibs-4.11.1/akonadi/contact/actions/sendsmsaction.cpp 2013-08-28 19:06:13.000000000 +0200 +++ new/kdepimlibs-4.11.2/akonadi/contact/actions/sendsmsaction.cpp 2013-09-26 21:22:19.000000000 +0200 @@ -50,6 +50,16 @@ { const QString number = phoneNumber.number().trimmed(); + // synchronize + ContactActionsSettings::self()->readConfig(); + + QString command = ContactActionsSettings::self()->smsCommand(); + + if ( command.isEmpty() ) { + KMessageBox::sorry( 0, i18n( "There is no application set which could be executed. Please go to the settings dialog and configure one." ) ); + return; + } + QPointer<SmsDialog> dlg( new SmsDialog( number ) ); if ( dlg->exec() != QDialog::Accepted ) { // the cancel button has been clicked delete dlg; @@ -58,8 +68,6 @@ const QString message = ( dlg != 0 ? dlg->message() : QString() ); delete dlg; - // synchronize - ContactActionsSettings::self()->readConfig(); // we handle skype separated if ( ContactActionsSettings::self()->sendSmsAction() == ContactActionsSettings::UseSkypeSms ) { @@ -74,13 +82,6 @@ return; } - QString command = ContactActionsSettings::self()->smsCommand(); - - if ( command.isEmpty() ) { - KMessageBox::sorry( 0, i18n( "There is no application set which could be executed. Please go to the settings dialog and configure one." ) ); - return; - } - /* * %N the raw number * %n the number with all additional non-number characters removed diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.11.1/akonadi/contact/contacteditordialog.cpp new/kdepimlibs-4.11.2/akonadi/contact/contacteditordialog.cpp --- old/kdepimlibs-4.11.1/akonadi/contact/contacteditordialog.cpp 2013-08-28 19:06:13.000000000 +0200 +++ new/kdepimlibs-4.11.2/akonadi/contact/contacteditordialog.cpp 2013-09-26 21:22:19.000000000 +0200 @@ -83,7 +83,7 @@ connect( q, SIGNAL(cancelClicked()), q, SLOT(slotCancelClicked()) ); connect( mEditor, SIGNAL(finished()), q, SLOT(slotFinish()) ); - q->setInitialSize( QSize( 800, 500 ) ); + readConfig(); } void slotOkClicked() @@ -104,6 +104,26 @@ q->reject(); } + void readConfig() + { + KConfig config( QLatin1String( "akonadi_contactrc" ) ); + KConfigGroup group( &config, QLatin1String( "ContactEditor" ) ); + const QSize size = group.readEntry( "Size", QSize() ); + if ( size.isValid() ) { + q->resize( size ); + } else { + q->resize( 800, 500 ); + } + } + + void writeConfig() + { + KConfig config( QLatin1String( "akonadi_contactrc" ) ); + KConfigGroup group( &config, QLatin1String( "ContactEditor" ) ); + group.writeEntry( "Size", q->size() ); + group.sync(); + } + ContactEditorDialog *q; CollectionComboBox *mAddressBookBox; ContactEditorDialog::Mode mMode; @@ -127,6 +147,7 @@ ContactEditorDialog::~ContactEditorDialog() { + d->writeConfig(); delete d; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.11.1/akonadi/contact/contactviewerdialog.cpp new/kdepimlibs-4.11.2/akonadi/contact/contactviewerdialog.cpp --- old/kdepimlibs-4.11.1/akonadi/contact/contactviewerdialog.cpp 2013-08-28 19:06:13.000000000 +0200 +++ new/kdepimlibs-4.11.2/akonadi/contact/contactviewerdialog.cpp 2013-09-26 21:22:19.000000000 +0200 @@ -20,24 +20,51 @@ */ #include "contactviewerdialog.h" - #include "contactviewer.h" +#include "contactdefaultactions.h" #include <akonadi/item.h> -#include <klocalizedstring.h> +using namespace Akonadi; -#include <QVBoxLayout> +#include <KConfig> +#include <KLocalizedString> -using namespace Akonadi; +#include <QVBoxLayout> class ContactViewerDialog::Private { public: + Private( ContactViewerDialog *parent ) + : q( parent ) + { + } + + void readConfig() + { + KConfig config( QLatin1String( "akonadi_contactrc" ) ); + KConfigGroup group( &config, QLatin1String( "ContactViewer" ) ); + const QSize size = group.readEntry( "Size", QSize() ); + if ( size.isValid() ) { + q->resize( size ); + } else { + q->resize( 500, 600 ); + } + } + + void writeConfig() + { + KConfig config( QLatin1String( "akonadi_contactrc" ) ); + KConfigGroup group( &config, QLatin1String( "ContactViewer" ) ); + group.writeEntry( "Size", q->size() ); + group.sync(); + } + + ContactViewerDialog *q; ContactViewer *mViewer; }; ContactViewerDialog::ContactViewerDialog( QWidget *parent ) - : KDialog( parent ), d( new Private ) + : KDialog( parent ), d( new Private( this ) ) { setCaption( i18n( "Show Contact" ) ); setButtons( Ok ); @@ -50,11 +77,15 @@ d->mViewer = new ContactViewer; layout->addWidget( d->mViewer ); - setInitialSize( QSize( 500, 600 ) ); + ContactDefaultActions *actions = new ContactDefaultActions( this ); + actions->connectToView( d->mViewer ); + + d->readConfig(); } ContactViewerDialog::~ContactViewerDialog() { + d->writeConfig(); delete d; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.11.1/akonadi/contact/editor/kdatepickerpopup.cpp new/kdepimlibs-4.11.2/akonadi/contact/editor/kdatepickerpopup.cpp --- old/kdepimlibs-4.11.1/akonadi/contact/editor/kdatepickerpopup.cpp 2013-08-28 19:06:13.000000000 +0200 +++ new/kdepimlibs-4.11.2/akonadi/contact/editor/kdatepickerpopup.cpp 2013-09-26 21:22:19.000000000 +0200 @@ -70,19 +70,11 @@ connect( mDatePicker, SIGNAL(dateSelected(QDate)), SLOT(slotDateChanged(QDate)) ); - connect( this, SIGNAL(aboutToHide()), SLOT(slotHidePickerPopup())); mDatePicker->setDate( date ); buildMenu(); } -void KDatePickerPopup::slotHidePickerPopup() -{ - if (mDatePicker->date() != mDate) { - emit dateChanged( mDatePicker->date() ); - } -} - void KDatePickerPopup::buildMenu() { if ( isVisible() ) { @@ -132,8 +124,11 @@ } #endif -void KDatePickerPopup::slotDateChanged( const QDate &/*date*/ ) +void KDatePickerPopup::slotDateChanged( const QDate &date ) { + if (date != mDate) { + emit dateChanged( date ); + } hide(); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.11.1/akonadi/contact/editor/kdatepickerpopup_p.h new/kdepimlibs-4.11.2/akonadi/contact/editor/kdatepickerpopup_p.h --- old/kdepimlibs-4.11.1/akonadi/contact/editor/kdatepickerpopup_p.h 2013-08-28 19:06:13.000000000 +0200 +++ new/kdepimlibs-4.11.2/akonadi/contact/editor/kdatepickerpopup_p.h 2013-09-26 21:22:19.000000000 +0200 @@ -103,7 +103,6 @@ void slotNextWeek(); void slotNextMonth(); void slotNoDate(); - void slotHidePickerPopup(); private: void buildMenu(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.11.1/akonadi/contact/editor/kedittagsdialog.cpp new/kdepimlibs-4.11.2/akonadi/contact/editor/kedittagsdialog.cpp --- old/kdepimlibs-4.11.1/akonadi/contact/editor/kedittagsdialog.cpp 2013-08-28 19:06:13.000000000 +0200 +++ new/kdepimlibs-4.11.2/akonadi/contact/editor/kedittagsdialog.cpp 2013-09-26 21:22:19.000000000 +0200 @@ -131,9 +131,15 @@ QListWidgetItem* item = m_tagsList->item( i ); if ( item->checkState() == Qt::Checked ) { const QString label = item->data( Qt::UserRole ).toString(); - Nepomuk2::Tag tag( label ); - tag.setLabel( label ); - m_tags.append( tag ); + const QString uri = item->data(UrlTag).toString(); + if (uri.isEmpty()) { + Nepomuk2::Tag tag( label ); + tag.setLabel( label ); + m_tags.append( tag ); + } else { + Nepomuk2::Tag tag( uri ); + m_tags.append( tag ); + } } } @@ -231,6 +237,7 @@ QListWidgetItem *item = new QListWidgetItem( label, m_tagsList ); item->setData( Qt::UserRole, label ); + item->setData( UrlTag, tag.uri().toString()); bool check = false; foreach ( const Nepomuk2::Tag& selectedTag, m_tags ) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.11.1/akonadi/contact/editor/kedittagsdialog_p.h new/kdepimlibs-4.11.2/akonadi/contact/editor/kedittagsdialog_p.h --- old/kdepimlibs-4.11.1/akonadi/contact/editor/kedittagsdialog_p.h 2013-06-28 19:34:42.000000000 +0200 +++ new/kdepimlibs-4.11.2/akonadi/contact/editor/kedittagsdialog_p.h 2013-09-26 21:22:19.000000000 +0200 @@ -65,6 +65,10 @@ void removeNewTagItem(); private: + enum ItemType { + UrlTag = Qt::UserRole + 1 + }; + QVector<Nepomuk2::Tag> m_tags; QListWidget* m_tagsList; QListWidgetItem* m_newTagItem; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.11.1/akonadi/contact/emailaddressselectiondialog.cpp new/kdepimlibs-4.11.2/akonadi/contact/emailaddressselectiondialog.cpp --- old/kdepimlibs-4.11.1/akonadi/contact/emailaddressselectiondialog.cpp 2013-08-28 19:06:13.000000000 +0200 +++ new/kdepimlibs-4.11.2/akonadi/contact/emailaddressselectiondialog.cpp 2013-09-26 21:22:19.000000000 +0200 @@ -47,7 +47,7 @@ void readConfig() { - KConfigGroup group( KGlobal::config(), "EmailAddressSelectionDialog" ); + KConfigGroup group( KGlobal::config(), QLatin1String( "EmailAddressSelectionDialog" ) ); const QSize size = group.readEntry( "Size", QSize() ); if ( size.isValid() ) { q->resize( size ); @@ -58,7 +58,7 @@ void writeConfig() { - KConfigGroup group( KGlobal::config(), "EmailAddressSelectionDialog" ); + KConfigGroup group( KGlobal::config(), QLatin1String( "EmailAddressSelectionDialog" ) ); group.writeEntry( "Size", q->size() ); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.11.1/akonadi/subscriptiondialog.cpp new/kdepimlibs-4.11.2/akonadi/subscriptiondialog.cpp --- old/kdepimlibs-4.11.1/akonadi/subscriptiondialog.cpp 2013-08-28 19:06:13.000000000 +0200 +++ new/kdepimlibs-4.11.2/akonadi/subscriptiondialog.cpp 2013-09-26 21:22:19.000000000 +0200 @@ -103,6 +103,23 @@ filterRecursiveCollectionFilter->setIncludeCheckedOnly( checked ); } + void writeConfig() + { + KConfigGroup group( KGlobal::config(), "SubscriptionDialog" ); + group.writeEntry( "Size", q->size() ); + } + + void readConfig() + { + KConfigGroup group( KGlobal::config(), "SubscriptionDialog" ); + const QSize sizeDialog = group.readEntry( "Size", QSize() ); + if ( sizeDialog.isValid() ) { + q->resize( sizeDialog ); + } else { + q->resize( 300,200); + } + } + void slotUnSubscribe(); void slotSubscribe(); @@ -254,10 +271,12 @@ connect( this, SIGNAL(okClicked()), SLOT(done()) ); connect( this, SIGNAL(cancelClicked()), SLOT(deleteLater()) ); Control::widgetNeedsAkonadi( mainWidget ); + d->readConfig(); } -SubscriptionDialog::~ SubscriptionDialog() +SubscriptionDialog::~SubscriptionDialog() { + d->writeConfig(); delete d; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.11.1/kcalcore/incidencebase.cpp new/kdepimlibs-4.11.2/kcalcore/incidencebase.cpp --- old/kdepimlibs-4.11.1/kcalcore/incidencebase.cpp 2013-08-28 19:06:13.000000000 +0200 +++ new/kdepimlibs-4.11.2/kcalcore/incidencebase.cpp 2013-09-26 21:22:19.000000000 +0200 @@ -149,10 +149,19 @@ IncidenceBase &IncidenceBase::assign( const IncidenceBase &other ) { CustomProperties::operator=( other ); + + const bool uidChanged = other.uid() != uid(); + d->init( *other.d ); mReadOnly = other.mReadOnly; d->mDirtyFields.clear(); - d->mDirtyFields.insert( FieldUnknown ); + d->mDirtyFields.insert( FieldUnknown ); // Means stuff might have changed. + + // Observers using the observer interface have no way of finding out if there + // was a uid change so, exceptionally, lets set this field dirty. + if ( uidChanged ) + d->mDirtyFields.insert( FieldUid ); + return *this; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.11.1/kcalcore/occurrenceiterator.cpp new/kdepimlibs-4.11.2/kcalcore/occurrenceiterator.cpp --- old/kdepimlibs-4.11.1/kcalcore/occurrenceiterator.cpp 2013-08-28 19:06:13.000000000 +0200 +++ new/kdepimlibs-4.11.2/kcalcore/occurrenceiterator.cpp 2013-09-26 21:22:19.000000000 +0200 @@ -188,8 +188,22 @@ calendar.filter()->apply( &todos ); } + Journal::List journals; + const Journal::List allJournals = calendar.rawJournals(); + foreach ( const KCalCore::Journal::Ptr &journal, allJournals ) { + const QDate journalStart = journal->dtStart().toTimeSpec( start.timeSpec() ).date(); + if ( journal->dtStart().isValid() && + journalStart >= start.date() && + journalStart <= end.date() ) + journals << journal; + } + + if ( calendar.filter() ) { + calendar.filter()->apply( &journals ); + } + const Incidence::List incidences = - KCalCore::Calendar::mergeIncidenceList( events, todos, Journal::List() ); + KCalCore::Calendar::mergeIncidenceList( events, todos, journals ); d->setupIterator( calendar, incidences ); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.11.1/kcalcore/tests/testoccurrenceiterator.cpp new/kdepimlibs-4.11.2/kcalcore/tests/testoccurrenceiterator.cpp --- old/kdepimlibs-4.11.1/kcalcore/tests/testoccurrenceiterator.cpp 2013-08-28 19:06:13.000000000 +0200 +++ new/kdepimlibs-4.11.2/kcalcore/tests/testoccurrenceiterator.cpp 2013-09-26 21:22:19.000000000 +0200 @@ -253,3 +253,26 @@ QCOMPARE(expectedEventOccurrences.size(), 0); } + +void TestOccurrenceIterator::testJournals() +{ + KCalCore::MemoryCalendar calendar( KDateTime::UTC ); + + const KDateTime today = KDateTime::currentDateTime( KDateTime::UTC ); + const KDateTime yesterday = today.addDays( -1 ); + const KDateTime tomorrow = today.addDays( 1 ); + + KCalCore::Journal::Ptr journal( new KCalCore::Journal() ); + journal->setUid( "journal" ); + journal->setDtStart( today ); + calendar.addJournal( journal ); + + KCalCore::OccurrenceIterator rIt( calendar, yesterday, tomorrow ); + QVERIFY( rIt.hasNext() ); + rIt.next(); + QCOMPARE( rIt.occurrenceStartDate(), today); + QVERIFY( !rIt.hasNext() ); + + KCalCore::OccurrenceIterator rIt2( calendar, tomorrow, tomorrow.addDays( 1 ) ); + QVERIFY( !rIt2.hasNext() ); +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.11.1/kcalcore/tests/testoccurrenceiterator.h new/kdepimlibs-4.11.2/kcalcore/tests/testoccurrenceiterator.h --- old/kdepimlibs-4.11.1/kcalcore/tests/testoccurrenceiterator.h 2013-08-28 19:06:13.000000000 +0200 +++ new/kdepimlibs-4.11.2/kcalcore/tests/testoccurrenceiterator.h 2013-09-26 21:22:19.000000000 +0200 @@ -29,6 +29,7 @@ void testAllDayEvents(); void testWithExceptionThisAndFuture(); void testSubDailyRecurrences(); + void testJournals(); }; #endif // TESTOCCURRENCEITERATOR_H diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.11.1/mailtransport/addtransportdialog.cpp new/kdepimlibs-4.11.2/mailtransport/addtransportdialog.cpp --- old/kdepimlibs-4.11.1/mailtransport/addtransportdialog.cpp 2013-06-28 19:34:42.000000000 +0200 +++ new/kdepimlibs-4.11.2/mailtransport/addtransportdialog.cpp 2013-09-26 21:22:19.000000000 +0200 @@ -52,11 +52,29 @@ Enables the OK button if a type is selected. */ void updateOkButton(); // slot + void writeConfig(); + void readConfig(); AddTransportDialog *const q; ::Ui::AddTransportDialog ui; }; + +void AddTransportDialog::Private::writeConfig() +{ + KConfigGroup group( KGlobal::config(), "AddTransportDialog" ); + group.writeEntry( "Size", q->size() ); +} + +void AddTransportDialog::Private::readConfig() +{ + KConfigGroup group( KGlobal::config(), "AddTransportDialog" ); + const QSize sizeDialog = group.readEntry( "Size", QSize(300,200) ); + if ( sizeDialog.isValid() ) { + q->resize( sizeDialog ); + } +} + TransportType AddTransportDialog::Private::selectedType() const { QList<QTreeWidgetItem*> sel = ui.typeListView->selectedItems(); @@ -111,10 +129,12 @@ this, SLOT(accept()) ); connect( d->ui.name, SIGNAL(textChanged(QString)), this, SLOT(updateOkButton()) ); + d->readConfig(); } AddTransportDialog::~AddTransportDialog() { + d->writeConfig(); delete d; } -- To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org For additional commands, e-mail: opensuse-commit+h...@opensuse.org