[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdepim/korganizer
From: Sergio Luis Martins <iamsergio () gmail ! com>
Date: 2010-09-22 13:06:41
Message-ID: 20100922130641.5A966AC888 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1178234 by smartins:
Don't set a collection that doesn't support the mime type of the incidence we are \
trying to create.
We also could disable the "New to-do" popup action when you press multi-agenda view \
on a folder that only supports events, and vice-versa.
M +29 -15 calendarview.cpp
M +8 -1 calendarview.h
--- trunk/KDE/kdepim/korganizer/calendarview.cpp #1178233:1178234
@@ -1163,13 +1163,8 @@
IncidenceEditorNG::IncidenceDialog *eventEditor = newEventEditor( event );
Q_ASSERT( eventEditor );
-
- Akonadi::Collection::Id defaultCollectionId = \
mViewManager->currentView()->collectionId();
-
- Akonadi::Collection requestedCol = mCalendar->collection( defaultCollectionId );
-
// Fallsback to the default collection defined in config
- eventEditor->selectCollection( requestedCol.isValid() ? requestedCol : \
defaultCollection() ); + eventEditor->selectCollection( defaultCollection( \
KCalCore::Event::eventMimeType() ) ); }
}
@@ -1225,7 +1220,7 @@
item.setPayload( todo );
IncidenceEditorNG::IncidenceDialog *dialog = mDialogManager->createDialog( item \
);
- dialog->selectCollection( defaultCollection() );
+ dialog->selectCollection( defaultCollection( KCalCore::Todo::todoMimeType()) );
dialog->load( item );
}
}
@@ -1262,7 +1257,7 @@
if ( collection.isValid() ) {
dialog->selectCollection( collection );
} else {
- dialog->selectCollection( defaultCollection() );
+ dialog->selectCollection( defaultCollection( KCalCore::Todo::todoMimeType() ) \
); }
dialog->load( item );
@@ -1313,12 +1308,12 @@
item.setPayload( journal );
IncidenceEditorNG::IncidenceDialog *dialog = mDialogManager->createDialog( item \
);
- dialog->selectCollection( defaultCollection() );
+ dialog->selectCollection( defaultCollection( \
KCalCore::Journal::journalMimeType() ) );
if ( collection.isValid() ) {
dialog->selectCollection( collection );
} else {
- dialog->selectCollection( defaultCollection() );
+ dialog->selectCollection( defaultCollection( \
KCalCore::Journal::journalMimeType() ) ); }
dialog->load( item );
}
@@ -1338,7 +1333,7 @@
item.setPayload( journal );
IncidenceEditorNG::IncidenceDialog *dialog = mDialogManager->createDialog( item \
);
- dialog->selectCollection( defaultCollection() );
+ dialog->selectCollection( defaultCollection( \
KCalCore::Journal::journalMimeType() ) ); dialog->load( item );
}
}
@@ -1388,7 +1383,7 @@
if ( collection.isValid() ) {
dialog->selectCollection( collection );
} else {
- dialog->selectCollection( defaultCollection() );
+ dialog->selectCollection( defaultCollection( KCalCore::Todo::todoMimeType() ) \
); }
dialog->load( item );
}
@@ -3120,11 +3115,30 @@
mCreatingEnabled = enabled;
}
-Akonadi::Collection CalendarView::defaultCollection() const
+Akonadi::Collection CalendarView::defaultCollection( const QLatin1String &mimeType ) \
const {
- const Akonadi::Collection::Id id = \
CalendarSupport::KCalPrefs::instance()->defaultCalendarId();
- return mCalendar->collection( id );
+ bool supportsMimeType;
+
+ /**
+ If the view's collection is valid and it supports mimeType, return it, \
otherwise + if the config's collection is valid and it supports mimeType, return \
it, otherwise + return an invalid collection.
+ */
+
+ Akonadi::Collection viewCollection = mCalendar->collection( \
mViewManager->currentView()->collectionId() ); +
+ supportsMimeType = viewCollection.contentMimeTypes().contains( mimeType ) || \
mimeType == ""; +
+
+ if ( viewCollection.isValid() && supportsMimeType ) {
+ return viewCollection;
+ } else {
+ Akonadi::Collection configCollection = mCalendar->collection( \
CalendarSupport::KCalPrefs::instance()->defaultCalendarId() ); + supportsMimeType \
= configCollection.contentMimeTypes().contains( mimeType ) || mimeType == ""; +
+ return ( configCollection.isValid() && supportsMimeType ) ? configCollection : \
Akonadi::Collection(); }
+}
#include "calendarview.moc"
--- trunk/KDE/kdepim/korganizer/calendarview.h #1178233:1178234
@@ -30,6 +30,7 @@
#include "koglobals.h"
#include "interfaces/korganizer/calendarviewbase.h"
+#include <KCalCore/Incidence>
#include <KCalCore/Visitor>
#include <calendarsupport/calendar.h>
@@ -694,7 +695,13 @@
//
void getIncidenceHierarchy( const Akonadi::Item &item, Akonadi::Item::List \
&items );
- Akonadi::Collection defaultCollection() const;
+ /**
+ Returns the default collection.
+ The view's collection takes precedence, only then the config one is used.
+ If mimeType is set, the collection to return will have to support that mime \
type. + IF no valid collection is found, an invalid one is returned.
+ */
+ Akonadi::Collection defaultCollection( const QLatin1String &mimeType = \
QLatin1String( "" ) ) const;
KOrg::History *mHistory;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic