X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/baaab6d17beb78e3209c2d6fa87c04f7b97abfe2..4e370297de110dbb5c6c231dd460e2a7d46e496b:/src/dolphincolumnview.cpp diff --git a/src/dolphincolumnview.cpp b/src/dolphincolumnview.cpp index 6f1b5dc77..11ecf8aa7 100644 --- a/src/dolphincolumnview.cpp +++ b/src/dolphincolumnview.cpp @@ -31,7 +31,6 @@ #include "draganddrophelper.h" #include "folderexpander.h" #include "tooltips/tooltipmanager.h" -#include "versioncontrolobserver.h" #include "viewextensionsfactory.h" #include "zoomlevelinfo.h" @@ -86,13 +85,12 @@ DolphinColumnView::DolphinColumnView(QWidget* parent, m_font = KGlobalSettings::generalFont(); } else { m_font = QFont(settings->fontFamily(), - settings->fontSize(), + qRound(settings->fontSize()), settings->fontWeight(), settings->italicFont()); + m_font.setPointSizeF(settings->fontSize()); } - activate(); - connect(this, SIGNAL(viewportEntered()), m_container->m_controller, SLOT(emitViewportEntered())); connect(this, SIGNAL(entered(const QModelIndex&)), @@ -126,26 +124,20 @@ DolphinColumnView::DolphinColumnView(QWidget* parent, connect(KGlobalSettings::self(), SIGNAL(kdisplayFontChanged()), this, SLOT(updateFont())); - /*FolderExpander* folderExpander = new FolderExpander(this, m_proxyModel); - folderExpander->setEnabled(DolphinSettings::instance().generalSettings()->autoExpandFolders()); - connect (folderExpander, SIGNAL(enterDir(const QModelIndex&)), - m_container->m_controller, SLOT(triggerItem(const QModelIndex&))); - - new VersionControlObserver(this);*/ - DolphinController* controller = m_container->m_controller; connect(controller, SIGNAL(zoomLevelChanged(int)), this, SLOT(setZoomLevel(int))); const QString nameFilter = controller->nameFilter(); if (!nameFilter.isEmpty()) { - m_proxyModel->setFilterRegExp(nameFilter); + m_proxyModel->setFilterFixedString(nameFilter); } - connect(controller, SIGNAL(nameFilterChanged(const QString&)), - this, SLOT(setNameFilter(const QString&))); - m_extensionsFactory = new ViewExtensionsFactory(this, controller); updateDecorationSize(dolphinView->showPreview()); + updateBackground(); + m_extensionsFactory = new ViewExtensionsFactory(this, controller); + + m_dirLister->openUrl(url, KDirLister::NoFlags); } DolphinColumnView::~DolphinColumnView() @@ -202,10 +194,27 @@ KFileItem DolphinColumnView::itemAt(const QPoint& pos) const return item; } +void DolphinColumnView::setSelectionModel(QItemSelectionModel* model) +{ + // If a change of the selection is done although the view is not active + // (e. g. by the selection markers), the column must be activated. This + // is done by listening to the current selectionChanged() signal. + if (selectionModel() != 0) { + disconnect(selectionModel(), SIGNAL(selectionChanged(QItemSelection, QItemSelection)), + this, SLOT(requestActivation())); + } + + QListView::setSelectionModel(model); + + connect(selectionModel(), SIGNAL(selectionChanged(QItemSelection, QItemSelection)), + this, SLOT(requestActivation())); +} + QStyleOptionViewItem DolphinColumnView::viewOptions() const { QStyleOptionViewItem viewOptions = QListView::viewOptions(); viewOptions.font = m_font; + viewOptions.fontMetrics = QFontMetrics(m_font); viewOptions.decorationSize = m_decorationSize; viewOptions.showDecorationSelected = true; return viewOptions; @@ -329,37 +338,15 @@ void DolphinColumnView::keyPressEvent(QKeyEvent* event) void DolphinColumnView::contextMenuEvent(QContextMenuEvent* event) { - if (!m_active) { - m_container->requestActivation(this); - Q_ASSERT(m_container->m_controller->itemView() == this); - m_container->m_controller->triggerUrlChangeRequest(m_url); - } - Q_ASSERT(m_active); - + requestActivation(); QListView::contextMenuEvent(event); - - const QModelIndex index = indexAt(event->pos()); - if (!index.isValid()) { - clearSelection(); - } - - const QPoint pos = m_container->viewport()->mapFromGlobal(event->globalPos()); - Q_ASSERT(m_container->m_controller->itemView() == this); - m_container->m_controller->triggerContextMenuRequest(pos); + m_container->m_controller->triggerContextMenuRequest(event->pos()); } void DolphinColumnView::wheelEvent(QWheelEvent* event) { - // let Ctrl+wheel events propagate to the DolphinView for icon zooming - if (event->modifiers() & Qt::ControlModifier) { - event->ignore(); - return; - } - - const int height = m_decorationSize.height(); - const int step = (height >= KIconLoader::SizeHuge) ? height / 10 : (KIconLoader::SizeHuge - height) / 2; + const int step = m_decorationSize.height(); verticalScrollBar()->setSingleStep(step); - QListView::wheelEvent(event); } @@ -372,26 +359,12 @@ void DolphinColumnView::leaveEvent(QEvent* event) m_container->m_controller->emitViewportEntered(); } -void DolphinColumnView::selectionChanged(const QItemSelection& selected, const QItemSelection& deselected) -{ - QListView::selectionChanged(selected, deselected); - - //QItemSelectionModel* selModel = m_container->selectionModel(); - //selModel->select(selected, QItemSelectionModel::Select); - //selModel->select(deselected, QItemSelectionModel::Deselect); -} - void DolphinColumnView::currentChanged(const QModelIndex& current, const QModelIndex& previous) { QListView::currentChanged(current, previous); m_extensionsFactory->handleCurrentIndexChange(current, previous); } -void DolphinColumnView::setNameFilter(const QString& nameFilter) -{ - m_proxyModel->setFilterRegExp(nameFilter); -} - void DolphinColumnView::setZoomLevel(int level) { const int size = ZoomLevelInfo::iconSizeForZoomLevel(level); @@ -415,11 +388,9 @@ void DolphinColumnView::slotEntered(const QModelIndex& index) void DolphinColumnView::requestActivation() { - m_container->m_controller->setItemView(this); m_container->m_controller->requestActivation(); if (!m_active) { m_container->requestActivation(this); - m_container->m_controller->triggerUrlChangeRequest(m_url); selectionModel()->clear(); } }