X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/61a4e8691d600a1d105142ce44570c4107600a04..2f0b7cc810b3b04de5194171cbb126e4e544da90:/src/dolphinview.cpp diff --git a/src/dolphinview.cpp b/src/dolphinview.cpp index 4c2c5f02d..9320cd4cf 100644 --- a/src/dolphinview.cpp +++ b/src/dolphinview.cpp @@ -20,18 +20,18 @@ #include "dolphinview.h" -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include #include #include #include +#include #include #include #include @@ -67,6 +67,7 @@ DolphinView::DolphinView(DolphinMainWindow* mainWindow, QWidget(parent), m_showProgress(false), m_blockContentsMovedSignal(false), + m_initializeColumnView(false), m_mode(mode), m_iconSize(0), m_folderCount(0), @@ -99,8 +100,11 @@ DolphinView::DolphinView(DolphinMainWindow* mainWindow, this, SLOT(updateCutItems())); m_urlNavigator = new KUrlNavigator(DolphinSettings::instance().placesModel(), url, this); - m_urlNavigator->setUrlEditable(DolphinSettings::instance().generalSettings()->editableUrl()); - m_urlNavigator->setHomeUrl(DolphinSettings::instance().generalSettings()->homeUrl()); + + const GeneralSettings* settings = DolphinSettings::instance().generalSettings(); + m_urlNavigator->setUrlEditable(settings->editableUrl()); + m_urlNavigator->setHomeUrl(settings->homeUrl()); + connect(m_urlNavigator, SIGNAL(urlChanged(const KUrl&)), this, SLOT(changeDirectory(const KUrl&))); connect(m_urlNavigator, SIGNAL(urlsDropped(const KUrl::List&, const KUrl&)), @@ -157,13 +161,17 @@ DolphinView::DolphinView(DolphinMainWindow* mainWindow, this, SLOT(emitSelectionChangedSignal())); connect(m_controller, SIGNAL(activated()), this, SLOT(requestActivation())); + connect(m_controller, SIGNAL(itemEntered(const QModelIndex&)), + this, SLOT(showHoverInformation(const QModelIndex&))); + connect(m_controller, SIGNAL(viewportEntered()), + this, SLOT(clearHoverInformation())); createView(); m_iconSize = K3Icon::SizeMedium; m_filterBar = new FilterBar(this); - m_filterBar->hide(); + m_filterBar->setVisible(settings->filterBar()); connect(m_filterBar, SIGNAL(filterChanged(const QString&)), this, SLOT(changeNameFilter(const QString&))); connect(m_filterBar, SIGNAL(closeRequest()), @@ -192,6 +200,11 @@ const KUrl& DolphinView::url() const return m_urlNavigator->url(); } +KUrl DolphinView::rootUrl() const +{ + return isColumnViewActive() ? m_dirLister->url() : url(); +} + bool DolphinView::isActive() const { return m_mainWindow->activeView() == this; @@ -396,11 +409,6 @@ int DolphinView::contentsY() const return itemView()->verticalScrollBar()->value(); } -void DolphinView::emitRequestItemInfo(const KUrl& url) -{ - emit requestItemInfo(url); -} - bool DolphinView::isFilterBarVisible() const { return m_filterBar->isVisible(); @@ -460,6 +468,7 @@ void DolphinView::setAdditionalInfo(KFileItemDelegate::AdditionalInformation inf ViewProperties props(m_urlNavigator->url()); props.setAdditionalInfo(info); + m_controller->setShowAdditionalInfo(info != KFileItemDelegate::NoInformation); m_fileItemDelegate->setAdditionalInformation(info); emit additionalInfoChanged(info); @@ -617,6 +626,12 @@ void DolphinView::reload() startDirLister(url, true); } +void DolphinView::refresh() +{ + createView(); + reload(); +} + void DolphinView::mouseReleaseEvent(QMouseEvent* event) { QWidget::mouseReleaseEvent(event); @@ -650,6 +665,14 @@ void DolphinView::changeDirectory(const KUrl& url) m_mode = mode; createView(); emit modeChanged(); + + if (m_mode == ColumnView) { + // The mode has been changed to the Column View. When starting the dir + // lister with DolphinView::startDirLister() it is important to give a + // hint that the dir lister may not keep the current directory + // although this is the default for showing a hierarchy. + m_initializeColumnView = true; + } } const bool showHiddenFiles = props.showHiddenFiles(); @@ -688,8 +711,8 @@ void DolphinView::changeDirectory(const KUrl& url) KFileItemDelegate::AdditionalInformation info = props.additionalInfo(); if (info != m_fileItemDelegate->additionalInformation()) { + m_controller->setShowAdditionalInfo(info != KFileItemDelegate::NoInformation); m_fileItemDelegate->setAdditionalInformation(info); - emit additionalInfoChanged(info); } @@ -896,7 +919,9 @@ void DolphinView::startDirLister(const KUrl& url, bool reload) m_dirLister->stop(); bool openDir = true; - bool keepOldDirs = isColumnViewActive(); + bool keepOldDirs = isColumnViewActive() && !m_initializeColumnView; + m_initializeColumnView = false; + if (keepOldDirs) { if (reload) { keepOldDirs = false; @@ -1138,10 +1163,23 @@ void DolphinView::emitContentsMoved() void DolphinView::updateActivationState() { m_urlNavigator->setActive(isActive()); + + QColor color = KGlobalSettings::baseColor(); if (isActive()) { emit urlChanged(url()); emit selectionChanged(selectedItems()); + } else { + // darken the background if the view is inactive + // TODO: does not work for a black background + color = color.darker(105); } + + QWidget* viewport = itemView()->viewport(); + QPalette palette; + palette.setColor(viewport->backgroundRole(), color); + viewport->setPalette(palette); + + update(); } void DolphinView::updateCutItems() @@ -1163,6 +1201,26 @@ void DolphinView::updateCutItems() applyCutItemEffect(); } +void DolphinView::showHoverInformation(const QModelIndex& index) +{ + if (hasSelection()) { + return; + } + + const KFileItem* item = fileItem(index); + if (item != 0) { + m_statusBar->setMessage(item->getStatusBarInfo(), DolphinStatusBar::Default); + emit requestItemInfo(item->url()); + } +} + +void DolphinView::clearHoverInformation() +{ + m_statusBar->clear(); + emit requestItemInfo(KUrl()); +} + + void DolphinView::createView() { // delete current view