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

List:       kde-pim
Subject:    Re: [Kde-pim] ManagerObserver not notified about active/inactive
From:       Guenter Schwann <schwann () icg ! tu-graz ! ac ! at>
Date:       2004-01-25 19:39:15
Message-ID: 200401252039.15526.schwann () icg ! tu-graz ! ac ! at
[Download RAW message or body]

[Attachment #2 (multipart/signed)]

[Attachment #4 (multipart/mixed)]


On Saturday 24 January 2004 14:33, Cornelius Schumacher wrote:
> Reimplement doClose() in ResourceCalendar and emit the signal from
> there. This also needs the doClose() function in subclasses of
> ResourceCalendar to be changed to call ResourceCalendar::doClose().

Here's a patch doing this. 
The next patch for D'n'D of events/todos will follow next week...

ciao
-- 
Guenter Schwann

["resources.diff" (text/x-diff)]

Index: egroupware/kcal_resourcexmlrpc.cpp
===================================================================
RCS file: /home/kde/kdepim/kresources/egroupware/kcal_resourcexmlrpc.cpp,v
retrieving revision 1.3
diff -u -3 -p -r1.3 kcal_resourcexmlrpc.cpp
--- egroupware/kcal_resourcexmlrpc.cpp	21 Jan 2004 14:34:57 -0000	1.3
+++ egroupware/kcal_resourcexmlrpc.cpp	25 Jan 2004 19:31:56 -0000
@@ -301,6 +301,7 @@ void ResourceXMLRPC::doClose()
 
   mCalendar.close();
   mOpen = false;
+  ResourceCalendar::doClose();
 }
 
 
Index: exchange/resourceexchange.cpp
===================================================================
RCS file: /home/kde/kdepim/kresources/exchange/resourceexchange.cpp,v
retrieving revision 1.22
diff -u -3 -p -r1.22 resourceexchange.cpp
--- exchange/resourceexchange.cpp	18 Jan 2004 01:34:42 -0000	1.22
+++ exchange/resourceexchange.cpp	25 Jan 2004 19:31:56 -0000
@@ -156,6 +156,7 @@ void ResourceExchange::doClose()
     mCache->close();
     delete mCache; mCache = 0;
   }
+  ResourceCalendar::doClose();
 //  setModified( false );
 }
 

["libkcal.diff" (text/x-diff)]

? Doxyfile
Index: calendarresources.cpp
===================================================================
RCS file: /home/kde/kdepim/libkcal/calendarresources.cpp,v
retrieving revision 1.36
diff -u -3 -p -r1.36 calendarresources.cpp
--- calendarresources.cpp	18 Jan 2004 20:49:39 -0000	1.36
+++ calendarresources.cpp	25 Jan 2004 19:31:02 -0000
@@ -99,6 +99,8 @@ CalendarResources::~CalendarResources()
   close();
 
   delete mManager;
+  delete mStandardPolicy;
+  delete mAskPolicy;
 }
 
 void CalendarResources::readConfig( KConfig *config )
@@ -111,7 +113,7 @@ void CalendarResources::load()
   if ( !mManager->standardResource() ) {
     kdDebug(5800) << "Warning! No standard resource yet." << endl;
   }
-	
+
   // set the timezone for all resources. Otherwise we'll have those terrible tz troubles ;-((
   CalendarResourceManager::Iterator i1;
   for ( i1 = mManager->begin(); i1 != mManager->end(); ++i1 ) {
@@ -320,7 +322,7 @@ Todo::List CalendarResources::rawTodos()
       mResourceMap[ *it2 ] = *it;
     }
   }
-
+  
   return result;
 }
 
@@ -336,7 +338,6 @@ Todo *CalendarResources::todo( const QSt
       return todo;
     }
   }
-
   // not found
   return 0;
 }
@@ -356,7 +357,6 @@ Todo::List CalendarResources::todos( con
       mResourceMap[ *it2 ] = *it;
     }
   }
-
   return result;
 }
 
@@ -598,8 +598,11 @@ void CalendarResources::connectResource(
            SIGNAL( calendarChanged() ) );
   connect( resource, SIGNAL( resourceSaved( ResourceCalendar * ) ),
            SIGNAL( calendarSaved() ) );
+  connect( resource, SIGNAL( resourceClosed( ResourceCalendar * ) ),
+           SLOT( clearResourceMap( ResourceCalendar * ) ) );
 }
 
+
 ResourceCalendar *CalendarResources::resource(Incidence *inc)
 {
   if ( mResourceMap.find( inc ) != mResourceMap.end() ) {
@@ -608,6 +611,17 @@ ResourceCalendar *CalendarResources::res
   return 0;
 }
 
+ResourceCalendar *CalendarResources::resource(const QString &UID)
+{
+  QMap<Incidence*, ResourceCalendar*>::iterator it;
+  for ( it=mResourceMap.begin(); it!=mResourceMap.end(); it++ ) {
+    if ( it.key()->uid() == UID )
+      return it.data();
+  }
+  return 0;
+}
+
+
 void CalendarResources::resourceAdded( ResourceCalendar *resource )
 {
   kdDebug(5800) << "Resource added: " << resource->resourceName() << endl;
@@ -757,4 +771,19 @@ int CalendarResources::decrementChangeCo
   return count;
 }
 
+void CalendarResources::clearResourceMap( ResourceCalendar *resource )
+{
+  QMap<Incidence*, ResourceCalendar*>::iterator it;
+  QMap<Incidence*, ResourceCalendar*>::iterator iit;
+  it=mResourceMap.begin();
+  while ( it != mResourceMap.end() )
+  {
+    iit = it;
+    it++;
+    if ( iit.data() == resource ) {
+      mResourceMap.erase( iit );
+    }
+  }
+}
+
 #include "calendarresources.moc"
Index: calendarresources.h
===================================================================
RCS file: /home/kde/kdepim/libkcal/calendarresources.h,v
retrieving revision 1.29
diff -u -3 -p -r1.29 calendarresources.h
--- calendarresources.h	18 Jan 2004 20:49:40 -0000	1.29
+++ calendarresources.h	25 Jan 2004 19:31:02 -0000
@@ -242,9 +242,12 @@ class CalendarResources : public Calenda
     /** Return all alarms, which ocur before given date. */
     Alarm::List alarmsTo( const QDateTime &to );
 
-    /** Return Resource for given uid */
+    /** Return Resource for given Incidence */
     ResourceCalendar *resource(Incidence *);
 
+    /** Return Resource for given uid */
+    ResourceCalendar *resource(const QString &UID);
+    
     bool beginChange( Incidence * );
     bool endChange( Incidence * );
 
@@ -285,6 +288,9 @@ class CalendarResources : public Calenda
 
     int incrementChangeCount( ResourceCalendar * );
     int decrementChangeCount( ResourceCalendar * );
+  
+  protected slots:
+    void clearResourceMap( ResourceCalendar *resource );
 
   private:
     void init();
Index: resourcecalendar.cpp
===================================================================
RCS file: /home/kde/kdepim/libkcal/resourcecalendar.cpp,v
retrieving revision 1.9
diff -u -3 -p -r1.9 resourcecalendar.cpp
--- resourcecalendar.cpp	22 Jul 2003 18:56:46 -0000	1.9
+++ resourcecalendar.cpp	25 Jan 2004 19:31:02 -0000
@@ -56,4 +56,9 @@ Incidence::List ResourceCalendar::rawInc
   return Calendar::mergeIncidenceList( rawEvents(), rawTodos(), journals() );
 }
 
+void ResourceCalendar::doClose()
+{
+  emit resourceClosed( this );
+}
+
 #include "resourcecalendar.moc"
Index: resourcecalendar.h
===================================================================
RCS file: /home/kde/kdepim/libkcal/resourcecalendar.h,v
retrieving revision 1.19
diff -u -3 -p -r1.19 resourcecalendar.h
--- resourcecalendar.h	19 Dec 2003 17:00:05 -0000	1.19
+++ resourcecalendar.h	25 Jan 2004 19:31:02 -0000
@@ -161,6 +161,11 @@ class ResourceCalendar : public KRES::Re
       finished.
     */    
     void resourceSaved( ResourceCalendar * );
+    /**
+      This signal is emitted when the resource is closed. For example when the
+      resource is deactivated.
+    */
+    void resourceClosed( ResourceCalendar * );
 
   public:
     /**
@@ -240,6 +245,13 @@ class ResourceCalendar : public KRES::Re
     */    
     virtual void setTimeZoneId( const QString &tzid ) = 0;
 
+  protected:
+    /**
+    Close this resource. 
+    Pre-condition: resource is open. Post-condition: resource is closed.
+    */
+    virtual void doClose();
+    
   private:
     class Private;
     Private *d;
Index: resourcekabc.cpp
===================================================================
RCS file: /home/kde/kdepim/libkcal/resourcekabc.cpp,v
retrieving revision 1.11
diff -u -3 -p -r1.11 resourcekabc.cpp
--- resourcekabc.cpp	30 Oct 2003 09:44:04 -0000	1.11
+++ resourcekabc.cpp	25 Jan 2004 19:31:02 -0000
@@ -229,6 +229,7 @@ void ResourceKABC::doClose()
 
   mCalendar.close();
   mOpen = false;
+  ResourceCalendar::doClose();
 }
 
 
Index: resourcelocal.cpp
===================================================================
RCS file: /home/kde/kdepim/libkcal/resourcelocal.cpp,v
retrieving revision 1.19
diff -u -3 -p -r1.19 resourcelocal.cpp
--- resourcelocal.cpp	24 Oct 2003 13:47:46 -0000	1.19
+++ resourcelocal.cpp	25 Jan 2004 19:31:02 -0000
@@ -167,6 +167,7 @@ void ResourceLocal::doClose()
 
   mCalendar.close();
   mOpen = false;
+  ResourceCalendar::doClose();
 }
 
 
Index: resourcelocaldir.cpp
===================================================================
RCS file: /home/kde/kdepim/libkcal/resourcelocaldir.cpp,v
retrieving revision 1.17
diff -u -3 -p -r1.17 resourcelocaldir.cpp
--- resourcelocaldir.cpp	24 Oct 2003 13:47:46 -0000	1.17
+++ resourcelocaldir.cpp	25 Jan 2004 19:31:02 -0000
@@ -198,6 +198,7 @@ void ResourceLocalDir::doClose()
 
   mCalendar.close();
   mOpen = false;
+  ResourceCalendar::doClose();
 }
 
 
Index: resourceremote.cpp
===================================================================
RCS file: /home/kde/kdepim/libkcal/resourceremote.cpp,v
retrieving revision 1.14
diff -u -3 -p -r1.14 resourceremote.cpp
--- resourceremote.cpp	25 Oct 2003 01:12:50 -0000	1.14
+++ resourceremote.cpp	25 Jan 2004 19:31:02 -0000
@@ -268,6 +268,7 @@ void ResourceRemote::doClose()
 
   mCalendar.close();
   mOpen = false;
+  ResourceCalendar::doClose();
 }
 
 KABC::Lock *ResourceRemote::lock()

[Attachment #9 (application/pgp-signature)]

_______________________________________________
kde-pim mailing list
kde-pim@mail.kde.org
https://mail.kde.org/mailman/listinfo/kde-pim
kde-pim home page at http://pim.kde.org/

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

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