/***************************************************************************
- * Copyright (C) 2007 by Peter Penz <peter.penz@gmx.at> *
+ * Copyright (C) 2007 by Peter Penz <peter.penz19@gmail.com> *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
***************************************************************************/
#include "dolphinviewcontainer.h"
-#include <kprotocolmanager.h>
-
-#include <QtGui/QApplication>
-#include <QtGui/QKeyEvent>
-#include <QtGui/QItemSelection>
-#include <QtGui/QBoxLayout>
-#include <QtCore/QTimer>
-#include <QtGui/QScrollBar>
-
-#include <kdesktopfile.h>
-#include <kfileitemdelegate.h>
-#include <kfileplacesmodel.h>
-#include <kglobalsettings.h>
-#include <klocale.h>
-#include <kiconeffect.h>
-#include <kio/netaccess.h>
-#include <kio/previewjob.h>
-#include <kmenu.h>
-#include <knewmenu.h>
+#include <KProtocolManager>
+
+#include <QApplication>
+#include <QKeyEvent>
+#include <QItemSelection>
+#include <QBoxLayout>
+#include <QTimer>
+#include <QScrollBar>
+
+#include <KDesktopFile>
+#include <KFileItemDelegate>
+#include <KFilePlacesModel>
+#include <KGlobalSettings>
+#include <KLocale>
+#include <KIconEffect>
+#include <KIO/NetAccess>
+#include <KIO/PreviewJob>
+#include <KMenu>
+#include <KNewFileMenu>
#include <konqmimedata.h>
#include <konq_operations.h>
-#include <kshell.h>
-#include <kurl.h>
-#include <kurlcombobox.h>
-#include <kurlnavigator.h>
-#include <krun.h>
+#include <KShell>
+#include <KUrl>
+#include <KUrlComboBox>
+#include <KUrlNavigator>
+#include <KRun>
#include "dolphin_generalsettings.h"
#include "dolphinmainwindow.h"
#include "statusbar/dolphinstatusbar.h"
#include "views/dolphincolumnview.h"
#include "views/dolphindetailsview.h"
-#include "views/dolphindirlister.h"
-#include "views/dolphinsortfilterproxymodel.h"
#include "views/draganddrophelper.h"
#include "views/dolphiniconsview.h"
#include "views/dolphinmodel.h"
connect(m_searchBox, SIGNAL(search(QString)), this, SLOT(startSearching(QString)));
connect(m_searchBox, SIGNAL(returnPressed(QString)), this, SLOT(requestFocus()));
- DolphinDirLister* dirLister = new DolphinDirLister();
- dirLister->setAutoUpdate(true);
- dirLister->setMainWindow(window());
- dirLister->setDelayedMimeTypes(true);
-
- DolphinModel* dolphinModel = new DolphinModel(this);
- dolphinModel->setDirLister(dirLister); // dolphinModel takes ownership of dirLister
- dolphinModel->setDropsAllowed(DolphinModel::DropOnDirectory);
-
- DolphinSortFilterProxyModel* proxyModel = new DolphinSortFilterProxyModel(this);
- proxyModel->setSourceModel(dolphinModel);
- proxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
-
- // TODO: In the case of the column view the directory lister changes. Let the DolphinView
- // inform the container about this information for KDE SC 4.7
- connect(dirLister, SIGNAL(clear()),
- this, SLOT(delayedStatusBarUpdate()));
- connect(dirLister, SIGNAL(percent(int)),
- this, SLOT(updateProgress(int)));
- connect(dirLister, SIGNAL(itemsDeleted(const KFileItemList&)),
- this, SLOT(delayedStatusBarUpdate()));
- connect(dirLister, SIGNAL(newItems(KFileItemList)),
- this, SLOT(delayedStatusBarUpdate()));
- connect(dirLister, SIGNAL(infoMessage(const QString&)),
- this, SLOT(showInfoMessage(const QString&)));
- connect(dirLister, SIGNAL(errorMessage(const QString&)),
- this, SLOT(showErrorMessage(const QString&)));
- connect(dirLister, SIGNAL(urlIsFileError(const KUrl&)),
- this, SLOT(openFile(const KUrl&)));
-
- m_view = new DolphinView(this, url, proxyModel);
- connect(m_view, SIGNAL(urlChanged(const KUrl&)),
- m_urlNavigator, SLOT(setUrl(const KUrl&)));
- connect(m_view, SIGNAL(requestItemInfo(KFileItem)),
- this, SLOT(showItemInfo(KFileItem)));
- connect(m_view, SIGNAL(errorMessage(const QString&)),
- this, SLOT(showErrorMessage(const QString&)));
- connect(m_view, SIGNAL(infoMessage(const QString&)),
- this, SLOT(showInfoMessage(const QString&)));
- connect(m_view, SIGNAL(operationCompletedMessage(const QString&)),
- this, SLOT(showOperationCompletedMessage(const QString&)));
- connect(m_view, SIGNAL(itemTriggered(KFileItem)),
- this, SLOT(slotItemTriggered(KFileItem)));
- connect(m_view, SIGNAL(redirection(KUrl, KUrl)),
- this, SLOT(redirect(KUrl, KUrl)));
- connect(m_view, SIGNAL(selectionChanged(const KFileItemList&)),
- this, SLOT(delayedStatusBarUpdate()));
- connect(m_view, SIGNAL(startedPathLoading(KUrl)),
- this, SLOT(slotStartedPathLoading()));
- connect(m_view, SIGNAL(finishedPathLoading(KUrl)),
- this, SLOT(slotFinishedPathLoading()));
- connect(m_view, SIGNAL(writeStateChanged(bool)),
- this, SIGNAL(writeStateChanged(bool)));
+ m_view = new DolphinView(url, this);
+ connect(m_view, SIGNAL(urlChanged(const KUrl&)), m_urlNavigator, SLOT(setUrl(const KUrl&)));
+ connect(m_view, SIGNAL(writeStateChanged(bool)), this, SIGNAL(writeStateChanged(bool)));
+ connect(m_view, SIGNAL(requestItemInfo(KFileItem)), this, SLOT(showItemInfo(KFileItem)));
+ connect(m_view, SIGNAL(errorMessage(const QString&)), this, SLOT(showErrorMessage(const QString&)));
+ connect(m_view, SIGNAL(infoMessage(const QString&)), this, SLOT(showInfoMessage(const QString&)));
+ connect(m_view, SIGNAL(itemTriggered(KFileItem)), this, SLOT(slotItemTriggered(KFileItem)));
+ connect(m_view, SIGNAL(redirection(KUrl, KUrl)), this, SLOT(redirect(KUrl, KUrl)));
+ connect(m_view, SIGNAL(startedPathLoading(KUrl)), this, SLOT(slotStartedPathLoading()));
+ connect(m_view, SIGNAL(finishedPathLoading(KUrl)), this, SLOT(slotFinishedPathLoading()));
+ connect(m_view, SIGNAL(itemCountChanged()), this, SLOT(delayedStatusBarUpdate()));
+ connect(m_view, SIGNAL(pathLoadingProgress(int)), this, SLOT(updateProgress(int)));
+ connect(m_view, SIGNAL(infoMessage(const QString&)), this, SLOT(showInfoMessage(const QString&)));
+ connect(m_view, SIGNAL(errorMessage(const QString&)), this, SLOT(showErrorMessage(const QString&)));
+ connect(m_view, SIGNAL(urlIsFileError(const KUrl&)), this, SLOT(openFile(const KUrl&)));
+ connect(m_view, SIGNAL(selectionChanged(const KFileItemList&)), this, SLOT(delayedStatusBarUpdate()));
+ connect(m_view, SIGNAL(operationCompletedMessage(const QString&)), this, SLOT(showOperationCompletedMessage(const QString&)));
connect(m_urlNavigator, SIGNAL(urlChanged(const KUrl&)),
this, SLOT(slotUrlNavigatorLocationChanged(const KUrl&)));
return m_view->isActive();
}
+const DolphinStatusBar* DolphinViewContainer::statusBar() const
+{
+ return m_statusBar;
+}
+
+DolphinStatusBar* DolphinViewContainer::statusBar()
+{
+ return m_statusBar;
+}
+
+const KUrlNavigator* DolphinViewContainer::urlNavigator() const
+{
+ return m_urlNavigator;
+}
+
+KUrlNavigator* DolphinViewContainer::urlNavigator()
+{
+ return m_urlNavigator;
+}
+
+const DolphinView* DolphinViewContainer::view() const
+{
+ return m_view;
+}
+
+DolphinView* DolphinViewContainer::view()
+{
+ return m_view;
+}
+
+const DolphinSearchBox* DolphinViewContainer::searchBox() const
+{
+ return m_searchBox;
+}
+
+DolphinSearchBox* DolphinViewContainer::searchBox()
+{
+ return m_searchBox;
+}
+
void DolphinViewContainer::refresh()
{
GeneralSettings* settings = DolphinSettings::instance().generalSettings();
m_urlNavigator->setVisible(!enabled);
if (enabled) {
+ KUrl url = m_urlNavigator->locationUrl();
+ m_searchBox->setText(QString());
+ m_searchBox->setReadOnly(isSearchUrl(url), url);
+
// Remember the most recent non-search URL as search path
// of the search-box, so that it can be restored
// when switching back to the URL navigator.
- KUrl url = m_urlNavigator->locationUrl();
-
int index = m_urlNavigator->historyIndex();
const int historySize = m_urlNavigator->historySize();
while (isSearchUrl(url) && (index < historySize)) {
void DolphinViewContainer::setFilterBarVisible(bool visible)
{
- Q_ASSERT(m_filterBar != 0);
+ Q_ASSERT(m_filterBar);
if (visible) {
m_filterBar->show();
m_filterBar->setFocus();
{
m_statusBarTimestamp.start();
- // As the item count information is less important
- // in comparison with other messages, it should only
- // be shown if:
- // - the status bar is empty or
- // - shows already the item count information or
- // - shows only a not very important information
const QString newMessage = m_view->statusBarText();
- const QString currentMessage = m_statusBar->message();
- const bool updateStatusBarMsg = currentMessage.isEmpty()
- || (currentMessage == m_statusBar->defaultText())
- || (m_statusBar->type() == DolphinStatusBar::Information);
-
m_statusBar->setDefaultText(newMessage);
- if (updateStatusBarMsg) {
+ // We don't want to override errors. Other messages are only protected by
+ // the Statusbar itself depending on timings (see DolphinStatusBar::setMessage).
+ if (m_statusBar->type() != DolphinStatusBar::Error) {
m_statusBar->setMessage(newMessage, DolphinStatusBar::Default);
}
}
m_statusBar->setProgress(100);
}
- if (isSearchUrl(url()) && (m_view->items().count() == 0)) {
+ if (isSearchUrl(url()) && m_view->items().isEmpty()) {
// 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);
void DolphinViewContainer::stopLoading()
{
m_view->stopLoading();
+ m_statusBar->setProgress(100);
}
bool DolphinViewContainer::isSearchUrl(const KUrl& url) const