[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