[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdepim/korganizer
From: Allen Winter <winter () kde ! org>
Date: 2008-08-12 19:41:32
Message-ID: 1218570092.881247.21027.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 846016 by winterz:
e3 merge
SVN commit 843189 by vkrause:
Don't clear and refill the agenda view if no data has changed and the
view is updated for a different reason, eg. when switching between the
todo and event view.
Kolab issue 2904
M +6 -0 calendarview.cpp
M +2 -0 calendarview.h
M +10 -0 koviewmanager.cpp
M +2 -0 koviewmanager.h
M +1 -1 resourceview.cpp
M +10 -0 views/agendaview/agendaview.cpp
M +1 -0 views/agendaview/agendaview.h
M +42 -1 views/agendaview/koagendaview.cpp
M +11 -1 views/agendaview/koagendaview.h
M +7 -0 views/multiagendaview/multiagendaview.cpp
M +2 -0 views/multiagendaview/multiagendaview.h
--- trunk/KDE/kdepim/korganizer/calendarview.cpp #846015:846016
@@ -2344,4 +2344,10 @@
delete oldIncidence;
}
+void CalendarView::resourcesChanged()
+{
+ mViewManager->resourcesChanged();
+ updateView();
+}
+
#include "calendarview.moc"
--- trunk/KDE/kdepim/korganizer/calendarview.h #846015:846016
@@ -587,6 +587,8 @@
void moveIncidenceTo( Incidence *, const QDate & );
void filterActivated( int filterNum );
+ void resourcesChanged();
+
protected slots:
/** Select a view or adapt the current view to display the specified dates. */
void showDates( const KCal::DateList & );
--- trunk/KDE/kdepim/korganizer/koviewmanager.cpp #846015:846016
@@ -520,3 +520,13 @@
{
showView( static_cast<KOrg::BaseView*>( widget ) );
}
+
+void KOViewManager::resourcesChanged()
+{
+ if ( mAgendaView ) {
+ mAgendaView->resourcesChanged();
+ }
+ if ( mAgendaSideBySideView ) {
+ mAgendaSideBySideView->resourcesChanged();
+ }
+}
--- trunk/KDE/kdepim/korganizer/koviewmanager.h #846015:846016
@@ -117,6 +117,8 @@
void zoomInVertically();
void zoomOutVertically();
+ void resourcesChanged();
+
private slots:
void currentAgendaViewTabChanged( QWidget * );
--- trunk/KDE/kdepim/korganizer/resourceview.cpp #846015:846016
@@ -65,7 +65,7 @@
mResourceView = new ResourceView( mCalendar, parent );
QObject::connect( mResourceView, SIGNAL(resourcesChanged()),
- mView, SLOT(updateView()) );
+ mView, SLOT(resourcesChanged()) );
QObject::connect( mResourceView, SIGNAL(resourcesChanged()),
mView, SLOT(updateCategories()) );
--- trunk/KDE/kdepim/korganizer/views/agendaview/agendaview.cpp #846015:846016
@@ -17,12 +17,22 @@
*/
#include "agendaview.h"
+#include <kcal/calendarresources.h>
using namespace KOrg;
AgendaView::AgendaView( Calendar *cal, QWidget *parent )
: KOEventView( cal, parent )
{
+ KCal::CalendarResources *calres = dynamic_cast<KCal::CalendarResources *>( cal );
+ if ( calres ) {
+ connect( calres, SIGNAL(signalResourceAdded(ResourceCalendar *)),
+ SLOT(resourcesChanged()) );
+ connect( calres, SIGNAL(signalResourceModified( ResourceCalendar *)),
+ SLOT(resourcesChanged()) );
+ connect( calres, SIGNAL(signalResourceDeleted(ResourceCalendar *)),
+ SLOT(resourcesChanged()) );
+ }
}
#include "agendaview.moc"
--- trunk/KDE/kdepim/korganizer/views/agendaview/agendaview.h #846015:846016
@@ -34,6 +34,7 @@
public slots:
virtual void finishTypeAhead() = 0;
+ virtual void resourcesChanged() = 0;
};
}
--- trunk/KDE/kdepim/korganizer/views/agendaview/koagendaview.cpp #846015:846016
@@ -142,7 +142,8 @@
mAllowAgendaUpdate( true ),
mUpdateItem( 0 ),
mResource( 0 ),
- mIsSideBySide( isSideBySide )
+ mIsSideBySide( isSideBySide ),
+ mPendingChanges( true )
{
mSelectedDates.append( QDate::currentDate() );
@@ -252,10 +253,18 @@
connect( mAllDayAgenda,
SIGNAL(newTimeSpanSignal(const QPoint &,const QPoint &)),
SLOT(newTimeSpanSelectedAllDay(const QPoint &,const QPoint &)) );
+
+ if ( cal ) {
+ cal->registerObserver( this );
+ }
}
KOAgendaView::~KOAgendaView()
{
+ if ( calendar() ) {
+ calendar()->unregisterObserver( this );
+ }
+
delete mAgendaPopup;
delete mAllDayAgendaPopup;
}
@@ -1068,6 +1077,13 @@
void KOAgendaView::showDates( const QDate &start, const QDate &end )
{
+ if ( !mSelectedDates.isEmpty() &&
+ mSelectedDates.first() == start &&
+ mSelectedDates.last() == end &&
+ !mPendingChanges ) {
+ return;
+ }
+
mSelectedDates.clear();
QDate d = start;
@@ -1309,6 +1325,8 @@
void KOAgendaView::fillAgenda()
{
+ mPendingChanges = false;
+
/* Remember the uids of the selected items. In case one of the
* items was deleted and re-added, we want to reselect it. */
const QString &selectedAgendaUid = mAgenda->lastSelectedUid();
@@ -1662,4 +1680,27 @@
return true;
}
+void KOAgendaView::resourcesChanged()
+{
+ mPendingChanges = true;
+}
+
+void KOAgendaView::calendarIncidenceAdded( Incidence *incidence )
+{
+ Q_UNUSED( incidence );
+ mPendingChanges = true;
+}
+
+void KOAgendaView::calendarIncidenceChanged( Incidence *incidence )
+{
+ Q_UNUSED( incidence );
+ mPendingChanges = true;
+}
+
+void KOAgendaView::calendarIncidenceRemoved( Incidence *incidence )
+{
+ Q_UNUSED( incidence );
+ mPendingChanges = true;
+}
+
#include "koagendaview.moc"
--- trunk/KDE/kdepim/korganizer/views/agendaview/koagendaview.h #846015:846016
@@ -28,6 +28,8 @@
#include "agendaview.h"
#include "calprinter.h"
+#include <kcal/calendar.h>
+
#include <QFrame>
#include <QPixmap>
#include <QVector>
@@ -88,7 +90,7 @@
KOAgendaView is the agenda-like view that displays events in a single
or multi-day view.
*/
-class KOAgendaView : public KOrg::AgendaView
+class KOAgendaView : public KOrg::AgendaView, public KCal::Calendar::CalendarObserver
{
Q_OBJECT
public:
@@ -134,6 +136,11 @@
KOAgenda *agenda() const { return mAgenda; }
QSplitter *splitter() const { return mSplitterAgenda; }
+ /* reimplemented from KCal::Calendar::CalendarObserver */
+ void calendarIncidenceAdded( Incidence *incidence );
+ void calendarIncidenceChanged( Incidence *incidence );
+ void calendarIncidenceRemoved( Incidence *incidence );
+
public slots:
virtual void updateView();
virtual void updateConfig();
@@ -174,6 +181,8 @@
void clearTimeSpanSelection();
+ void resourcesChanged();
+
// Used by the timelabelszone
void updateTimeBarWidth();
/** Create labels for the selected dates. */
@@ -271,6 +280,7 @@
QString mSubResource;
bool mIsSideBySide;
+ bool mPendingChanges;
};
#endif
--- trunk/KDE/kdepim/korganizer/views/multiagendaview/multiagendaview.cpp #846015:846016
@@ -459,4 +459,11 @@
}
}
+void MultiAgendaView::resourcesChanged()
+{
+ foreach ( KOAgendaView *agenda, mAgendaViews ) {
+ agenda->resourcesChanged();
+ }
+}
+
#include "multiagendaview.moc"
--- trunk/KDE/kdepim/korganizer/views/multiagendaview/multiagendaview.h #846015:846016
@@ -66,6 +66,8 @@
void show();
+ void resourcesChanged();
+
protected:
void resizeEvent( QResizeEvent *ev );
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic