#include "dolphinview.h"
-#include <QApplication>
-#include <QClipboard>
-#include <QDropEvent>
-#include <QItemSelectionModel>
-#include <QMouseEvent>
-#include <QVBoxLayout>
-#include <QTimer>
-#include <QScrollBar>
+#include <QtGui/QApplication>
+#include <QtGui/QClipboard>
+#include <QtGui/QKeyEvent>
+#include <QtGui/QItemSelection>
+#include <QtGui/QBoxLayout>
+#include <QtCore/QTimer>
+#include <QtGui/QScrollBar>
#include <kdirmodel.h>
#include <kfileitemdelegate.h>
#include <kfileplacesmodel.h>
+#include <kglobalsettings.h>
#include <klocale.h>
#include <kiconeffect.h>
#include <kio/netaccess.h>
QWidget(parent),
m_showProgress(false),
m_blockContentsMovedSignal(false),
+ m_initializeColumnView(false),
m_mode(mode),
m_iconSize(0),
m_folderCount(0),
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&)),
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()),
return m_urlNavigator->url();
}
+KUrl DolphinView::rootUrl() const
+{
+ return isColumnViewActive() ? m_dirLister->url() : url();
+}
+
bool DolphinView::isActive() const
{
return m_mainWindow->activeView() == this;
return itemView()->verticalScrollBar()->value();
}
-void DolphinView::emitRequestItemInfo(const KUrl& url)
-{
- emit requestItemInfo(url);
-}
-
bool DolphinView::isFilterBarVisible() const
{
return m_filterBar->isVisible();
ViewProperties props(m_urlNavigator->url());
props.setAdditionalInfo(info);
+ m_controller->setShowAdditionalInfo(info != KFileItemDelegate::NoInformation);
m_fileItemDelegate->setAdditionalInformation(info);
emit additionalInfoChanged(info);
startDirLister(url, true);
}
+void DolphinView::refresh()
+{
+ createView();
+ reload();
+}
+
void DolphinView::mouseReleaseEvent(QMouseEvent* event)
{
QWidget::mouseReleaseEvent(event);
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();
KFileItemDelegate::AdditionalInformation info = props.additionalInfo();
if (info != m_fileItemDelegate->additionalInformation()) {
+ m_controller->setShowAdditionalInfo(info != KFileItemDelegate::NoInformation);
m_fileItemDelegate->setAdditionalInformation(info);
-
emit additionalInfoChanged(info);
}
m_dirLister->stop();
bool openDir = true;
- bool keepOldDirs = isColumnViewActive();
+ bool keepOldDirs = isColumnViewActive() && !m_initializeColumnView;
+ m_initializeColumnView = false;
+
if (keepOldDirs) {
if (reload) {
keepOldDirs = false;
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()
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