QObject(view),
m_pendingItemStatesUpdate(false),
m_revisionedDirectory(false),
+ m_silentUpdate(false),
m_view(view),
m_dirLister(0),
m_dolphinModel(0),
void RevisionControlObserver::delayedDirectoryVerification()
{
+ m_silentUpdate = false;
+ m_dirVerificationTimer->start();
+}
+
+void RevisionControlObserver::silentDirectoryVerification()
+{
+ m_silentUpdate = true;
m_dirVerificationTimer->start();
}
connect(m_dirLister, SIGNAL(newItems(const KFileItemList&)),
this, SLOT(delayedDirectoryVerification()));
connect(m_plugin, SIGNAL(revisionStatesChanged()),
- this, SLOT(delayedDirectoryVerification()));
+ this, SLOT(silentDirectoryVerification()));
}
updateItemStates();
} else if (m_revisionedDirectory) {
disconnect(m_dirLister, SIGNAL(newItems(const KFileItemList&)),
this, SLOT(delayedDirectoryVerification()));
disconnect(m_plugin, SIGNAL(revisionStatesChanged()),
- this, SLOT(delayedDirectoryVerification()));
+ this, SLOT(silentDirectoryVerification()));
}
}
void RevisionControlObserver::applyUpdatedItemStates()
{
if (!m_updateItemStatesThread->retrievedItems()) {
+ // ignore m_silentUpdate for an error message
emit errorMessage(i18nc("@info:status", "Update of revision information failed."));
return;
}
m_dolphinModel->blockSignals(signalsBlocked);
m_view->viewport()->repaint();
- // Using an empty message results in clearing the previously shown information message and showing
- // the default status bar information. This is useful as the user already gets feedback that the
- // operation has been completed because of the icon emblems.
- emit operationCompletedMessage(QString());
+ if (!m_silentUpdate) {
+ // Using an empty message results in clearing the previously shown information message and showing
+ // the default status bar information. This is useful as the user already gets feedback that the
+ // operation has been completed because of the icon emblems.
+ emit operationCompletedMessage(QString());
+ }
if (m_pendingItemStatesUpdate) {
m_pendingItemStatesUpdate = false;
itemStates.append(itemState);
}
- emit infoMessage(i18nc("@info:status", "Updating revision information..."));
+ if (!m_silentUpdate) {
+ emit infoMessage(i18nc("@info:status", "Updating revision information..."));
+ }
m_updateItemStatesThread->setData(m_plugin, itemStates);
m_updateItemStatesThread->start(); // applyUpdatedItemStates() is called when finished
}
void operationCompletedMessage(const QString& msg);
private slots:
+ /**
+ * Invokes verifyDirectory() with a small delay. If delayedDirectoryVerification()
+ * is invoked before the delay has been exceeded, the delay will be reset. This
+ * assures that a lot of short requests for directory verification only result
+ * in one (expensive) call.
+ */
void delayedDirectoryVerification();
+
+ /**
+ * Invokes verifyDirectory() with a small delay. In opposite to
+ * delayedDirectoryVerification() it and assures that the verification of
+ * the directory is done silently without information messages.
+ */
+ void silentDirectoryVerification();
+
void verifyDirectory();
void applyUpdatedItemStates();
bool m_pendingItemStatesUpdate;
bool m_revisionedDirectory;
+ bool m_silentUpdate; // if true, no messages will be send during the update
+ // of revision states
QAbstractItemView* m_view;
KDirLister* m_dirLister;