#include "dolphinmodel.h"
#include "dolphincolumnviewcontainer.h"
-#include "dolphincontroller.h"
+#include "dolphinviewcontroller.h"
#include "dolphindirlister.h"
#include "dolphinsortfilterproxymodel.h"
#include "settings/dolphinsettings.h"
#include "folderexpander.h"
#include "tooltips/tooltipmanager.h"
#include "viewextensionsfactory.h"
+#include "viewmodecontroller.h"
#include "zoomlevelinfo.h"
#include <kcolorscheme.h>
}
connect(this, SIGNAL(viewportEntered()),
- m_container->m_controller, SLOT(emitViewportEntered()));
+ m_container->m_dolphinViewController, SLOT(emitViewportEntered()));
connect(this, SIGNAL(entered(const QModelIndex&)),
this, SLOT(slotEntered(const QModelIndex&)));
- const DolphinView* dolphinView = m_container->m_controller->dolphinView();
+ const DolphinView* dolphinView = m_container->m_dolphinViewController->view();
connect(dolphinView, SIGNAL(showPreviewChanged()),
this, SLOT(slotShowPreviewChanged()));
m_dirLister->setAutoUpdate(true);
m_dirLister->setMainWindow(window());
m_dirLister->setDelayedMimeTypes(true);
- const bool showHiddenFiles = m_container->m_controller->dolphinView()->showHiddenFiles();
+ const bool showHiddenFiles = m_container->m_dolphinViewController->view()->showHiddenFiles();
m_dirLister->setShowingDotFiles(showHiddenFiles);
m_dolphinModel = new DolphinModel(this);
connect(KGlobalSettings::self(), SIGNAL(kdisplayFontChanged()),
this, SLOT(updateFont()));
- DolphinController* controller = m_container->m_controller;
- connect(controller, SIGNAL(zoomLevelChanged(int)),
+ DolphinViewController* dolphinViewController = m_container->m_dolphinViewController;
+ connect(dolphinViewController, SIGNAL(zoomLevelChanged(int)),
this, SLOT(setZoomLevel(int)));
- const QString nameFilter = controller->nameFilter();
+ const ViewModeController* viewModeController = m_container->m_viewModeController;
+ const QString nameFilter = viewModeController->nameFilter();
if (!nameFilter.isEmpty()) {
m_proxyModel->setFilterFixedString(nameFilter);
}
updateDecorationSize(dolphinView->showPreview());
updateBackground();
- m_extensionsFactory = new ViewExtensionsFactory(this, controller);
+ m_extensionsFactory = new ViewExtensionsFactory(this, dolphinViewController, viewModeController);
m_dirLister->openUrl(url, KDirLister::NoFlags);
}
void DolphinColumnView::setActive(bool active)
{
- if (active && (m_container->focusProxy() != this)) {
- m_container->setFocusProxy(this);
- }
-
if (m_active != active) {
m_active = active;
void DolphinColumnView::startDrag(Qt::DropActions supportedActions)
{
- DragAndDropHelper::instance().startDrag(this, supportedActions, m_container->m_controller);
+ DragAndDropHelper::instance().startDrag(this, supportedActions, m_container->m_dolphinViewController);
}
void DolphinColumnView::dragEnterEvent(QDragEnterEvent* event)
m_dropRect.setSize(QSize()); // set as invalid
if (index.isValid()) {
- m_container->m_controller->setItemView(this);
- const KFileItem item = m_container->m_controller->itemForIndex(index);
+ m_container->m_dolphinViewController->setItemView(this);
+ const KFileItem item = m_container->m_dolphinViewController->itemForIndex(index);
if (!item.isNull() && item.isDir()) {
m_dropRect = visualRect(index);
}
void DolphinColumnView::dropEvent(QDropEvent* event)
{
const QModelIndex index = indexAt(event->pos());
- m_container->m_controller->setItemView(this);
- const KFileItem item = m_container->m_controller->itemForIndex(index);
- m_container->m_controller->indicateDroppedUrls(item, url(), event);
+ m_container->m_dolphinViewController->setItemView(this);
+ const KFileItem item = m_container->m_dolphinViewController->itemForIndex(index);
+ m_container->m_dolphinViewController->indicateDroppedUrls(item, url(), event);
QListView::dropEvent(event);
}
requestActivation();
if (!indexAt(event->pos()).isValid()) {
if (QApplication::mouseButtons() & Qt::MidButton) {
- m_container->m_controller->replaceUrlByClipboard();
+ m_container->m_dolphinViewController->replaceUrlByClipboard();
}
} else if (event->button() == Qt::LeftButton) {
// TODO: see comment in DolphinIconsView::mousePressEvent()
}
void DolphinColumnView::keyPressEvent(QKeyEvent* event)
-{
+{
QListView::keyPressEvent(event);
- requestActivation();
- DolphinController* controller = m_container->m_controller;
+ DolphinViewController* controller = m_container->m_dolphinViewController;
controller->handleKeyPressEvent(event);
switch (event->key()) {
case Qt::Key_Right: {
{
requestActivation();
QListView::contextMenuEvent(event);
- m_container->m_controller->triggerContextMenuRequest(event->pos());
+ m_container->m_dolphinViewController->triggerContextMenuRequest(event->pos());
}
void DolphinColumnView::wheelEvent(QWheelEvent* event)
// if the mouse is above an item and moved very fast outside the widget,
// no viewportEntered() signal might be emitted although the mouse has been moved
// above the viewport
- m_container->m_controller->emitViewportEntered();
+ m_container->m_dolphinViewController->emitViewportEntered();
}
void DolphinColumnView::currentChanged(const QModelIndex& current, const QModelIndex& previous)
const int size = ZoomLevelInfo::iconSizeForZoomLevel(level);
ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings();
- const bool showPreview = m_container->m_controller->dolphinView()->showPreview();
+ const bool showPreview = m_container->m_dolphinViewController->view()->showPreview();
if (showPreview) {
settings->setPreviewSize(size);
} else {
void DolphinColumnView::slotEntered(const QModelIndex& index)
{
- m_container->m_controller->setItemView(this);
- m_container->m_controller->emitItemEntered(index);
+ m_container->m_dolphinViewController->setItemView(this);
+ m_container->m_dolphinViewController->emitItemEntered(index);
}
void DolphinColumnView::requestActivation()
{
- m_container->m_controller->requestActivation();
+ m_container->m_dolphinViewController->requestActivation();
if (!m_active) {
m_container->requestActivation(this);
selectionModel()->clear();
void DolphinColumnView::slotShowPreviewChanged()
{
- const DolphinView* view = m_container->m_controller->dolphinView();
+ const DolphinView* view = m_container->m_dolphinViewController->view();
updateDecorationSize(view->showPreview());
}
if (KGlobalSettings::singleClick()) {
connect(this, SIGNAL(clicked(const QModelIndex&)),
- m_container->m_controller, SLOT(triggerItem(const QModelIndex&)));
+ m_container->m_dolphinViewController, SLOT(triggerItem(const QModelIndex&)));
} else {
connect(this, SIGNAL(doubleClicked(const QModelIndex&)),
- m_container->m_controller, SLOT(triggerItem(const QModelIndex&)));
+ m_container->m_dolphinViewController, SLOT(triggerItem(const QModelIndex&)));
}
if (selectionModel() && selectionModel()->currentIndex().isValid()) {
clearFocus();
if (KGlobalSettings::singleClick()) {
disconnect(this, SIGNAL(clicked(const QModelIndex&)),
- m_container->m_controller, SLOT(triggerItem(const QModelIndex&)));
+ m_container->m_dolphinViewController, SLOT(triggerItem(const QModelIndex&)));
} else {
disconnect(this, SIGNAL(doubleClicked(const QModelIndex&)),
- m_container->m_controller, SLOT(triggerItem(const QModelIndex&)));
+ m_container->m_dolphinViewController, SLOT(triggerItem(const QModelIndex&)));
}
+ // It is important to disconnect the connection to requestActivation() temporary, otherwise the internal
+ // clearing of the selection would result in activating the column again.
+ disconnect(selectionModel(), SIGNAL(selectionChanged(QItemSelection, QItemSelection)),
+ this, SLOT(requestActivation()));
const QModelIndex current = selectionModel()->currentIndex();
selectionModel()->clear();
selectionModel()->setCurrentIndex(current, QItemSelectionModel::NoUpdate);
+ connect(selectionModel(), SIGNAL(selectionChanged(QItemSelection, QItemSelection)),
+ this, SLOT(requestActivation()));
+
updateBackground();
}