[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdepim/calendarviews/agenda
From: Sergio Luis Martins <iamsergio () gmail ! com>
Date: 2010-08-30 10:29:08
Message-ID: 20100830102908.AEE46AC857 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1169928 by smartins:
Instead of using a bool to say if there are changes pending, and a fillAgenda() is \
needed, use an enum, with values: IncidencesDeleted/Added/Edited and DatesChanged.
This way, if fillAgenda() sees that dates didn't change it won't have to update event \
indicatores, agenda columns, create day labels, set holiday masks...
M +16 -10 agendaview.cpp
M +6 -6 eventview.cpp
M +13 -2 eventview.h
M +3 -3 multiagenda/multiagendaview.cpp
M +1 -1 multiagenda/multiagendaview.h
--- trunk/KDE/kdepim/calendarviews/agenda/agendaview.cpp #1169927:1169928
@@ -216,8 +216,10 @@
void AgendaView::Private::calendarIncidenceAdded( const Akonadi::Item &incidence )
{
Q_UNUSED( incidence );
- if ( !q->updateNeeded() ) {
- q->setUpdateNeeded( true );
+ const Changes changes = q->changes();
+ q->setChanges( changes | IncidencesAdded );
+
+ if ( changes == NothingChanged ) {
QMetaObject::invokeMethod( q, "updateView", Qt::QueuedConnection );
}
}
@@ -225,8 +227,10 @@
void AgendaView::Private::calendarIncidenceChanged( const Akonadi::Item &incidence )
{
Q_UNUSED( incidence );
- if ( !q->updateNeeded() ) {
- q->setUpdateNeeded( true );
+ const Changes changes = q->changes();
+ q->setChanges( changes | IncidencesEdited );
+
+ if ( changes == NothingChanged ) {
QMetaObject::invokeMethod( q, "updateView", Qt::QueuedConnection );
}
}
@@ -234,8 +238,10 @@
void AgendaView::Private::calendarIncidenceDeleted( const Akonadi::Item &incidence )
{
Q_UNUSED( incidence );
- if ( !q->updateNeeded() ) {
- q->setUpdateNeeded( true );
+ const Changes changes = q->changes();
+ q->setChanges( changes | IncidencesDeleted );
+
+ if ( changes == NothingChanged ) {
QMetaObject::invokeMethod( q, "updateView", Qt::QueuedConnection );
}
}
@@ -1211,7 +1217,7 @@
// Update the view correctly if an agenda item move was aborted by
// cancelling one of the subsequent dialogs.
if ( !result ) {
- setUpdateNeeded( true );
+ setChanges( changes() | IncidencesEdited );
QMetaObject::invokeMethod( this, "updateView", Qt::QueuedConnection );
return;
}
@@ -1276,7 +1282,7 @@
}
// and update the view
- setUpdateNeeded( true );
+ setChanges( changes() | DatesChanged );
fillAgenda();
}
@@ -1513,11 +1519,11 @@
void AgendaView::fillAgenda()
{
- if ( !updateNeeded() ) {
+ if ( changes() == NothingChanged ) {
return;
}
- setUpdateNeeded( false );
+ setChanges( NothingChanged );
/* Remember the item Ids of the selected items. In case one of the
* items was deleted and re-added, we want to reselect it. */
--- trunk/KDE/kdepim/calendarviews/agenda/eventview.cpp #1169927:1169928
@@ -78,7 +78,7 @@
mPrefs( new Prefs() ),
mKCalPrefs( new CalendarSupport::KCalPrefs() ),
mChanger( 0 ),
- mPendingChanges( true )
+ mChanges( NothingChanged )
{
QByteArray cname = q->metaObject()->className();
cname.replace( ":", "_" );
@@ -129,7 +129,7 @@
KCalPrefsPtr mKCalPrefs;
CalendarSupport::IncidenceChanger *mChanger;
- bool mPendingChanges;
+ Changes mChanges;
};
CalendarSupport::CollectionSelection* EventView::Private::sGlobalCollectionSelection \
= 0; @@ -688,14 +688,14 @@
d->identifier = identifier;
}
-void EventView::setUpdateNeeded( bool needed )
+void EventView::setChanges( Changes changes )
{
- d->mPendingChanges = needed;
+ d->mChanges = changes;
}
-bool EventView::updateNeeded() const
+EventView::Changes EventView::changes() const
{
- return d->mPendingChanges;
+ return d->mChanges;
}
#include "eventview.moc"
--- trunk/KDE/kdepim/calendarviews/agenda/eventview.h #1169927:1169928
@@ -93,6 +93,16 @@
{
Q_OBJECT
public:
+
+ enum Change {
+ NothingChanged = 0,
+ IncidencesAdded = 1,
+ IncidencesEdited = 2,
+ IncidencesDeleted = 4,
+ DatesChanged = 8
+ };
+ Q_DECLARE_FLAGS(Changes, Change)
+
/**
* Constructs a view.
* @param cal is a pointer to the calendar object from which events
@@ -244,7 +254,7 @@
@param needed if the update is needed or not.
*/
- virtual void setUpdateNeeded( bool needed );
+ virtual void setChanges( Changes changes );
public Q_SLOTS:
@@ -427,6 +437,7 @@
void rowsAboutToBeRemoved( const QModelIndex &parent, int start, int end );
protected:
+
CalendarSupport::IncidenceChanger *changer() const;
/**
@@ -463,7 +474,7 @@
/**
Returns if there are pending changes and a redraw is needed.
*/
- bool updateNeeded() const;
+ Changes changes() const;
private:
/*
--- trunk/KDE/kdepim/calendarviews/agenda/multiagenda/multiagendaview.cpp \
#1169927:1169928 @@ -532,11 +532,11 @@
}
}
-void MultiAgendaView::setUpdateNeeded( bool needed )
+void MultiAgendaView::setChanges( Changes changes )
{
- EventView::setUpdateNeeded( needed );
+ EventView::setChanges( changes );
foreach ( AgendaView *agenda, mAgendaViews ) {
- agenda->setUpdateNeeded( needed );
+ agenda->setChanges( changes );
}
}
--- trunk/KDE/kdepim/calendarviews/agenda/multiagenda/multiagendaview.h \
#1169927:1169928 @@ -109,7 +109,7 @@
*/
void showConfigurationDialog( QWidget *parent );
- void setUpdateNeeded( bool needed );
+ void setChanges( Changes changes );
public slots:
void showDates( const QDate &start, const QDate &end );
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic