#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*>&)),
m_dirLister = 0; // deleted by m_dolphinModel
}
-void DolphinViewContainer::setUrl(const KUrl& newUrl)
-{
- if (newUrl != m_urlNavigator->url()) {
- m_urlNavigator->setUrl(newUrl);
- // Temporary disable the 'File'->'Create New...' menu until
- // the write permissions can be checked in a fast way at
- // DolphinViewContainer::slotDirListerCompleted().
- m_isFolderWritable = false;
- if (isActive()) {
- m_mainWindow->newMenu()->menu()->setEnabled(false);
- }
- }
-}
-
const KUrl& DolphinViewContainer::url() const
{
return m_urlNavigator->url();
return m_filterBar->isVisible();
}
+void DolphinViewContainer::setUrl(const KUrl& newUrl)
+{
+ if (newUrl != m_urlNavigator->url()) {
+ m_urlNavigator->setUrl(newUrl);
+ // Temporary disable the 'File'->'Create New...' menu until
+ // the write permissions can be checked in a fast way at
+ // DolphinViewContainer::slotDirListerCompleted().
+ m_isFolderWritable = false;
+ if (isActive()) {
+ m_mainWindow->newMenu()->menu()->setEnabled(false);
+ }
+ }
+}
+
void DolphinViewContainer::showFilterBar(bool show)
{
Q_ASSERT(m_filterBar != 0);
// - 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();
- 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::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);
}
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);
}
}