#include <kshell.h>
#include <kurl.h>
#include <kurlcombobox.h>
+#include <kurlnavigator.h>
#include <krun.h>
#include "dolphinmodel.h"
#include "dolphincolumnview.h"
#include "dolphincontroller.h"
-#include "dolphinstatusbar.h"
#include "dolphinmainwindow.h"
#include "dolphindirlister.h"
#include "dolphinsortfilterproxymodel.h"
#include "dolphincontextmenu.h"
#include "draganddrophelper.h"
#include "filterbar.h"
-#include "kurlnavigator.h"
+#include "statusbar/dolphinstatusbar.h"
#include "viewproperties.h"
#include "settings/dolphinsettings.h"
#include "dolphin_generalsettings.h"
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)),
connect(m_dirLister, SIGNAL(urlIsFileError(const KUrl&)),
this, SLOT(openFile(const KUrl&)));
- m_view = new DolphinView(this,
- url,
- m_dirLister,
- m_dolphinModel,
- m_proxyModel);
+ m_view = new DolphinView(this, url, m_proxyModel);
connect(m_view, SIGNAL(urlChanged(const KUrl&)),
m_urlNavigator, SLOT(setUrl(const KUrl&)));
connect(m_view, SIGNAL(requestContextMenu(KFileItem, const KUrl&, const QList<QAction*>&)),
// - 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;
}
- delayedStatusBarUpdate();
+ 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();
+ }
QMetaObject::invokeMethod(this, "restoreContentsPos", Qt::QueuedConnection);
// Enable the 'File'->'Create New...' menu only if the directory
void DolphinViewContainer::showItemInfo(const KFileItem& item)
{
if (item.isNull()) {
- m_statusBar->clear();
+ // Only clear the status bar if unimportant messages are shown.
+ // This prevents that information- or error-messages get hidden
+ // by moving the mouse above the viewport or when closing the
+ // context menu.
+ if (m_statusBar->type() == DolphinStatusBar::Default) {
+ m_statusBar->clear();
+ }
} else {
m_statusBar->setMessage(item.getStatusBarInfo(), DolphinStatusBar::Default);
}
"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 {