QWidget* parent,
const KUrl& url) :
QWidget(parent),
- m_showProgress(false),
m_isFolderWritable(false),
m_mainWindow(mainWindow),
m_topLayout(0),
m_proxyModel->setSourceModel(m_dolphinModel);
m_proxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
+ connect(m_dirLister, SIGNAL(started(KUrl)),
+ this, SLOT(initializeProgress()));
connect(m_dirLister, SIGNAL(clear()),
this, SLOT(delayedStatusBarUpdate()));
connect(m_dirLister, SIGNAL(percent(int)),
// - shows already the item count information or
// - shows only a not very important information
// - if any progress is given don't show the item count info at all
- const QString msg(m_statusBar->message());
+ const QString msg = m_statusBar->message();
const bool updateStatusBarMsg = (msg.isEmpty()
|| (msg == m_statusBar->defaultText())
|| (m_statusBar->type() == DolphinStatusBar::Information))
}
}
-void DolphinViewContainer::updateProgress(int percent)
+void DolphinViewContainer::initializeProgress()
{
- if (!m_showProgress) {
- // Only show the directory loading progress if the status bar does
- // not contain another progress information. This means that
- // the directory loading progress information has the lowest priority.
- const QString progressText(m_statusBar->progressText());
- const QString loadingText(i18nc("@info:progress", "Loading folder..."));
- m_showProgress = progressText.isEmpty() || (progressText == loadingText);
- if (m_showProgress) {
- m_statusBar->setProgressText(loadingText);
- m_statusBar->setProgress(0);
- }
+ if (url().protocol() == "nepomuksearch") {
+ // The Nepomuk IO-slave does not provide any progress information. Give
+ // an immediate hint to the user that a searching is done:
+ m_statusBar->setProgressText(i18nc("@info", "Searching..."));
+ m_statusBar->setProgress(-1);
}
+ }
- if (m_showProgress) {
- m_statusBar->setProgress(percent);
+void DolphinViewContainer::updateProgress(int percent)
+{
+ if (m_statusBar->progressText().isEmpty()) {
+ m_statusBar->setProgressText(i18nc("@info:progress", "Loading folder..."));
}
+ m_statusBar->setProgress(percent);
}
void DolphinViewContainer::slotDirListerCompleted()
{
- if (m_showProgress) {
+ if (!m_statusBar->progressText().isEmpty()) {
m_statusBar->setProgressText(QString());
m_statusBar->setProgress(100);
- m_showProgress = false;
}
- updateStatusBar();
- QMetaObject::invokeMethod(this, "restoreContentsPos", Qt::QueuedConnection);
+ if ((url().protocol() == "nepomuksearch") && (m_dirLister->items().count() == 0)) {
+ // The dir lister has been completed on a Nepomuk-URI and no items have been found. Instead
+ // of showing the default status bar information ("0 items") a more helpful information is given:
+ m_statusBar->setMessage(i18nc("@info:status", "No items found."), DolphinStatusBar::Information);
+ } else {
+ updateStatusBar();
+ }
// Enable the 'File'->'Create New...' menu only if the directory
// supports writing.
void DolphinViewContainer::saveContentsPos(int x, int y)
{
+ // TODO: If DolphinViewContainer uses DolphinView::saveState(...) to save the
+ // view state in KDE 4.5, this funciton can be removed.
m_urlNavigator->savePosition(x, y);
}
-void DolphinViewContainer::restoreContentsPos()
-{
- if (!url().isEmpty()) {
- const QPoint pos = m_urlNavigator->savedPosition();
- m_view->setContentsPosition(pos.x(), pos.y());
- }
-}
-
void DolphinViewContainer::activate()
{
setActive(true);
"Protocol not supported by Dolphin, Konqueror has been launched"));
}
- QString secureUrl = KShell::quoteArg(url.pathOrUrl());
+ const QString secureUrl = KShell::quoteArg(url.pathOrUrl());
const QString command = app + ' ' + secureUrl;
KRun::runCommand(command, app, app, this);
} else {
// the previous directory as active item:
const KUrl url = m_urlNavigator->historyUrl(index - 1);
m_view->activateItem(url);
+ QPoint pos = m_urlNavigator->savedPosition();
+ m_view->setRestoredContentsPosition(pos);
}
}