┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dolphincolumnview.cpp26
-rw-r--r--src/dolphincolumnview.h4
-rw-r--r--src/dolphindetailsview.cpp25
-rw-r--r--src/dolphindetailsview.h6
-rw-r--r--src/dolphiniconsview.cpp25
-rw-r--r--src/dolphiniconsview.h6
-rw-r--r--src/dolphinview.cpp8
-rw-r--r--src/viewextensionsfactory.cpp54
-rw-r--r--src/viewextensionsfactory.h44
9 files changed, 95 insertions, 103 deletions
diff --git a/src/dolphincolumnview.cpp b/src/dolphincolumnview.cpp
index c3cf10f38..05544405b 100644
--- a/src/dolphincolumnview.cpp
+++ b/src/dolphincolumnview.cpp
@@ -30,7 +30,6 @@
#include "dolphin_generalsettings.h"
#include "draganddrophelper.h"
#include "folderexpander.h"
-#include "selectionmanager.h"
#include "tooltips/tooltipmanager.h"
#include "versioncontrolobserver.h"
#include "viewextensionsfactory.h"
@@ -56,8 +55,7 @@ DolphinColumnView::DolphinColumnView(QWidget* parent,
QListView(parent),
m_active(false),
m_container(container),
- m_selectionManager(0),
- m_autoScroller(0),
+ m_extensionsFactory(0),
m_url(url),
m_childUrl(),
m_font(),
@@ -80,8 +78,6 @@ DolphinColumnView::DolphinColumnView(QWidget* parent,
setVerticalScrollMode(QListView::ScrollPerPixel);
setHorizontalScrollMode(QListView::ScrollPerPixel);
- m_autoScroller = new DolphinViewAutoScroller(this);
-
// apply the column mode settings to the widget
const ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings();
Q_ASSERT(settings != 0);
@@ -139,14 +135,6 @@ DolphinColumnView::DolphinColumnView(QWidget* parent,
setModel(m_proxyModel);
- if (DolphinSettings::instance().generalSettings()->showSelectionToggle()) {
- m_selectionManager = new SelectionManager(this);
- connect(m_selectionManager, SIGNAL(selectionChanged()),
- this, SLOT(requestActivation()));
- connect(m_container->m_controller, SIGNAL(urlChanged(const KUrl&)),
- m_selectionManager, SLOT(reset()));
- }
-
//m_dirLister->openUrl(url, KDirLister::NoFlags);
connect(KGlobalSettings::self(), SIGNAL(kdisplayFontChanged()),
@@ -172,7 +160,7 @@ DolphinColumnView::DolphinColumnView(QWidget* parent,
updateDecorationSize(dolphinView->showPreview());
- new ViewExtensionsFactory(this, controller);
+ m_extensionsFactory = new ViewExtensionsFactory(this, controller);
}
DolphinColumnView::~DolphinColumnView()
@@ -409,10 +397,6 @@ void DolphinColumnView::contextMenuEvent(QContextMenuEvent* event)
void DolphinColumnView::wheelEvent(QWheelEvent* event)
{
- if (m_selectionManager != 0) {
- m_selectionManager->reset();
- }
-
// let Ctrl+wheel events propagate to the DolphinView for icon zooming
if (event->modifiers() & Qt::ControlModifier) {
event->ignore();
@@ -447,7 +431,7 @@ void DolphinColumnView::selectionChanged(const QItemSelection& selected, const Q
void DolphinColumnView::currentChanged(const QModelIndex& current, const QModelIndex& previous)
{
QListView::currentChanged(current, previous);
- m_autoScroller->handleCurrentIndexChange(current, previous);
+ m_extensionsFactory->handleCurrentIndexChange(current, previous);
}
void DolphinColumnView::setNameFilter(const QString& nameFilter)
@@ -548,10 +532,6 @@ void DolphinColumnView::updateDecorationSize(bool showPreview)
m_decorationSize = size;
- if (m_selectionManager != 0) {
- m_selectionManager->reset();
- }
-
doItemsLayout();
}
diff --git a/src/dolphincolumnview.h b/src/dolphincolumnview.h
index 1dc154358..3d7432bd4 100644
--- a/src/dolphincolumnview.h
+++ b/src/dolphincolumnview.h
@@ -33,10 +33,10 @@ class DolphinColumnViewContainer;
class DolphinModel;
class DolphinSortFilterProxyModel;
class DolphinDirLister;
-class DolphinViewAutoScroller;
class KFileItem;
class KFileItemList;
class SelectionManager;
+class ViewExtensionsFactory;
/**
* Represents one column inside the DolphinColumnViewContainer.
@@ -124,7 +124,7 @@ private:
bool m_active;
DolphinColumnViewContainer* m_container;
SelectionManager* m_selectionManager;
- DolphinViewAutoScroller* m_autoScroller;
+ ViewExtensionsFactory* m_extensionsFactory;
KUrl m_url; // URL of the directory that is shown
KUrl m_childUrl; // URL of the next column that is shown
diff --git a/src/dolphindetailsview.cpp b/src/dolphindetailsview.cpp
index 83bc7cdd3..460afd359 100644
--- a/src/dolphindetailsview.cpp
+++ b/src/dolphindetailsview.cpp
@@ -27,7 +27,6 @@
#include "dolphinsortfilterproxymodel.h"
#include "dolphinviewautoscroller.h"
#include "draganddrophelper.h"
-#include "selectionmanager.h"
#include "viewextensionsfactory.h"
#include "viewproperties.h"
#include "zoomlevelinfo.h"
@@ -56,8 +55,7 @@ DolphinDetailsView::DolphinDetailsView(QWidget* parent,
m_useDefaultIndexAt(true),
m_ignoreScrollTo(false),
m_controller(controller),
- m_selectionManager(0),
- m_autoScroller(0),
+ m_extensionsFactory(0),
m_expandableFoldersAction(0),
m_font(),
m_decorationSize(),
@@ -81,7 +79,6 @@ DolphinDetailsView::DolphinDetailsView(QWidget* parent,
setModel(proxyModel);
setMouseTracking(true);
- m_autoScroller = new DolphinViewAutoScroller(this);
const ViewProperties props(controller->url());
setSortIndicatorSection(props.sorting());
@@ -113,14 +110,6 @@ DolphinDetailsView::DolphinDetailsView(QWidget* parent,
controller, SLOT(triggerItem(const QModelIndex&)));
}
- if (DolphinSettings::instance().generalSettings()->showSelectionToggle()) {
- m_selectionManager = new SelectionManager(this);
- connect(m_selectionManager, SIGNAL(selectionChanged()),
- this, SLOT(requestActivation()));
- connect(m_controller, SIGNAL(urlChanged(const KUrl&)),
- m_selectionManager, SLOT(reset()));
- }
-
connect(this, SIGNAL(entered(const QModelIndex&)),
this, SLOT(slotEntered(const QModelIndex&)));
connect(this, SIGNAL(viewportEntered()),
@@ -165,7 +154,7 @@ DolphinDetailsView::DolphinDetailsView(QWidget* parent,
connect(m_expandableFoldersAction, SIGNAL(toggled(bool)),
this, SLOT(setFoldersExpandable(bool)));
- new ViewExtensionsFactory(this, controller);
+ m_extensionsFactory = new ViewExtensionsFactory(this, controller);
}
DolphinDetailsView::~DolphinDetailsView()
@@ -411,10 +400,6 @@ void DolphinDetailsView::resizeEvent(QResizeEvent* event)
void DolphinDetailsView::wheelEvent(QWheelEvent* event)
{
- if (m_selectionManager != 0) {
- m_selectionManager->reset();
- }
-
// let Ctrl+wheel events propagate to the DolphinView for icon zooming
if (event->modifiers() & Qt::ControlModifier) {
event->ignore();
@@ -430,7 +415,7 @@ void DolphinDetailsView::wheelEvent(QWheelEvent* event)
void DolphinDetailsView::currentChanged(const QModelIndex& current, const QModelIndex& previous)
{
QTreeView::currentChanged(current, previous);
- m_autoScroller->handleCurrentIndexChange(current, previous);
+ m_extensionsFactory->handleCurrentIndexChange(current, previous);
// Stay consistent with QListView: When changing the current index by key presses,
// also change the selection.
@@ -900,10 +885,6 @@ void DolphinDetailsView::updateDecorationSize(bool showPreview)
setIconSize(QSize(iconSize, iconSize));
m_decorationSize = QSize(iconSize, iconSize);
- if (m_selectionManager != 0) {
- m_selectionManager->reset();
- }
-
doItemsLayout();
}
diff --git a/src/dolphindetailsview.h b/src/dolphindetailsview.h
index 562b6d264..a099d96e7 100644
--- a/src/dolphindetailsview.h
+++ b/src/dolphindetailsview.h
@@ -26,9 +26,8 @@
#include <libdolphin_export.h>
class DolphinController;
-class SelectionManager;
class DolphinSortFilterProxyModel;
-class DolphinViewAutoScroller;
+class ViewExtensionsFactory;
/**
* @brief Represents the details view which shows the name, size,
@@ -203,8 +202,7 @@ private:
bool m_ignoreScrollTo : 1; // true if calls to scrollTo(...) should do nothing.
DolphinController* m_controller;
- SelectionManager* m_selectionManager;
- DolphinViewAutoScroller* m_autoScroller;
+ ViewExtensionsFactory* m_extensionsFactory;
QAction* m_expandableFoldersAction;
QFont m_font;
diff --git a/src/dolphiniconsview.cpp b/src/dolphiniconsview.cpp
index 2670aab82..efbcfd6fb 100644
--- a/src/dolphiniconsview.cpp
+++ b/src/dolphiniconsview.cpp
@@ -23,7 +23,6 @@
#include "dolphincontroller.h"
#include "settings/dolphinsettings.h"
#include "dolphinsortfilterproxymodel.h"
-#include "dolphinviewautoscroller.h"
#include "dolphin_iconsmodesettings.h"
#include "dolphin_generalsettings.h"
#include "draganddrophelper.h"
@@ -45,9 +44,8 @@ DolphinIconsView::DolphinIconsView(QWidget* parent,
DolphinSortFilterProxyModel* proxyModel) :
KCategorizedView(parent),
m_controller(controller),
- m_selectionManager(0),
- m_autoScroller(0),
m_categoryDrawer(0),
+ m_extensionsFactory(0),
m_font(),
m_decorationSize(),
m_decorationPosition(QStyleOptionViewItem::Top),
@@ -66,7 +64,6 @@ DolphinIconsView::DolphinIconsView(QWidget* parent,
viewport()->setAcceptDrops(true);
setMouseTracking(true);
- m_autoScroller = new DolphinViewAutoScroller(this);
connect(this, SIGNAL(clicked(const QModelIndex&)),
controller, SLOT(requestTab(const QModelIndex&)));
@@ -78,14 +75,6 @@ DolphinIconsView::DolphinIconsView(QWidget* parent,
controller, SLOT(triggerItem(const QModelIndex&)));
}
- if (DolphinSettings::instance().generalSettings()->showSelectionToggle()) {
- m_selectionManager = new SelectionManager(this);
- connect(m_selectionManager, SIGNAL(selectionChanged()),
- this, SLOT(requestActivation()));
- connect(m_controller, SIGNAL(urlChanged(const KUrl&)),
- m_selectionManager, SLOT(reset()));
- }
-
connect(this, SIGNAL(entered(const QModelIndex&)),
controller, SLOT(emitItemEntered(const QModelIndex&)));
connect(this, SIGNAL(viewportEntered()),
@@ -135,7 +124,7 @@ DolphinIconsView::DolphinIconsView(QWidget* parent,
connect(KGlobalSettings::self(), SIGNAL(settingsChanged(int)),
this, SLOT(slotGlobalSettingsChanged(int)));
- new ViewExtensionsFactory(this, controller);
+ m_extensionsFactory = new ViewExtensionsFactory(this, controller);
}
DolphinIconsView::~DolphinIconsView()
@@ -328,10 +317,6 @@ void DolphinIconsView::keyPressEvent(QKeyEvent* event)
void DolphinIconsView::wheelEvent(QWheelEvent* event)
{
- if (m_selectionManager != 0) {
- m_selectionManager->reset();
- }
-
// let Ctrl+wheel events propagate to the DolphinView for icon zooming
if (event->modifiers() & Qt::ControlModifier) {
event->ignore();
@@ -377,7 +362,7 @@ void DolphinIconsView::leaveEvent(QEvent* event)
void DolphinIconsView::currentChanged(const QModelIndex& current, const QModelIndex& previous)
{
KCategorizedView::currentChanged(current, previous);
- m_autoScroller->handleCurrentIndexChange(current, previous);
+ m_extensionsFactory->handleCurrentIndexChange(current, previous);
}
void DolphinIconsView::resizeEvent(QResizeEvent* event)
@@ -521,10 +506,6 @@ void DolphinIconsView::updateGridSize(bool showPreview, int additionalInfoCount)
if (delegate != 0) {
delegate->setMaximumSize(m_itemSize);
}
-
- if (m_selectionManager != 0) {
- m_selectionManager->reset();
- }
}
int DolphinIconsView::additionalInfoCount() const
diff --git a/src/dolphiniconsview.h b/src/dolphiniconsview.h
index d94a00e71..5c9392425 100644
--- a/src/dolphiniconsview.h
+++ b/src/dolphiniconsview.h
@@ -32,10 +32,9 @@
#include <libdolphin_export.h>
class DolphinController;
-class SelectionManager;
class DolphinCategoryDrawer;
class DolphinSortFilterProxyModel;
-class DolphinViewAutoScroller;
+class ViewExtensionsFactory;
/**
* @brief Represents the view, where each item is shown as an icon.
@@ -96,9 +95,8 @@ private:
private:
DolphinController* m_controller;
- SelectionManager* m_selectionManager;
- DolphinViewAutoScroller* m_autoScroller;
DolphinCategoryDrawer* m_categoryDrawer;
+ ViewExtensionsFactory* m_extensionsFactory;
QFont m_font;
QSize m_decorationSize;
diff --git a/src/dolphinview.cpp b/src/dolphinview.cpp
index 42305be1f..2af260f24 100644
--- a/src/dolphinview.cpp
+++ b/src/dolphinview.cpp
@@ -92,7 +92,6 @@ DolphinView::DolphinView(QWidget* parent,
m_controller(0),
m_fileItemDelegate(0),
m_viewAccessor(proxyModel),
- m_selectionModel(0),
m_selectionChangedTimer(0),
m_versionControlObserver(0),
m_rootUrl(),
@@ -1366,12 +1365,13 @@ void DolphinView::initializeView()
m_fileItemDelegate->setMinimizedNameColumn(m_mode == DetailsView);
view->setItemDelegate(m_fileItemDelegate);
- view->setModel(m_viewAccessor.proxyModel());
+ // TODO: reactivate selection model
+ /*view->setModel(m_viewAccessor.proxyModel());
if (m_selectionModel != 0) {
view->setSelectionModel(m_selectionModel);
} else {
m_selectionModel = view->selectionModel();
- }
+ }*/
m_selectionChangedTimer = new QTimer(this);
m_selectionChangedTimer->setSingleShot(true);
@@ -1381,7 +1381,7 @@ void DolphinView::initializeView()
// reparent the selection model, as it should not be deleted
// when deleting the model
- m_selectionModel->setParent(this);
+ //m_selectionModel->setParent(this);
view->setSelectionMode(QAbstractItemView::ExtendedSelection);
diff --git a/src/viewextensionsfactory.cpp b/src/viewextensionsfactory.cpp
index 91f9ff466..b4b37983b 100644
--- a/src/viewextensionsfactory.cpp
+++ b/src/viewextensionsfactory.cpp
@@ -22,6 +22,8 @@
#include "dolphincontroller.h"
#include "dolphinsortfilterproxymodel.h"
#include "dolphinview.h"
+#include "dolphinviewautoscroller.h"
+#include "selectionmanager.h"
#include "settings/dolphinsettings.h"
#include "tooltips/tooltipmanager.h"
@@ -35,9 +37,14 @@ ViewExtensionsFactory::ViewExtensionsFactory(QAbstractItemView* view,
QObject(view),
m_controller(controller),
m_toolTipManager(0),
- m_previewGenerator(0)
+ m_previewGenerator(0),
+ m_selectionManager(0),
+ m_autoScroller(0)
{
- if (DolphinSettings::instance().generalSettings()->showToolTips()) {
+ GeneralSettings* settings = DolphinSettings::instance().generalSettings();
+
+ // initialize tooltips
+ if (settings->showToolTips()) {
DolphinSortFilterProxyModel* proxyModel = static_cast<DolphinSortFilterProxyModel*>(view->model());
m_toolTipManager = new ToolTipManager(view, proxyModel);
@@ -45,23 +52,57 @@ ViewExtensionsFactory::ViewExtensionsFactory(QAbstractItemView* view,
m_toolTipManager, SLOT(hideTip()));
}
+ // initialize preview generator
m_previewGenerator = new KFilePreviewGenerator(view);
m_previewGenerator->setPreviewShown(controller->dolphinView()->showPreview());
connect(controller, SIGNAL(zoomLevelChanged(int)),
- this, SLOT(updateIcons()));
+ this, SLOT(slotZoomLevelChanged()));
connect(controller, SIGNAL(cancelPreviews()),
this, SLOT(cancelPreviews()));
connect(controller->dolphinView(), SIGNAL(showPreviewChanged()),
this, SLOT(slotShowPreviewChanged()));
+
+ // initialize selection manager
+ if (settings->showSelectionToggle()) {
+ m_selectionManager = new SelectionManager(view);
+ connect(m_selectionManager, SIGNAL(selectionChanged()),
+ this, SLOT(requestActivation()));
+ connect(controller, SIGNAL(urlChanged(const KUrl&)),
+ m_selectionManager, SLOT(reset()));
+ }
+
+ // initialize auto scroller
+ m_autoScroller = new DolphinViewAutoScroller(view);
+ connect(controller, SIGNAL(currentIndexChanged(QModelIndex, QModelIndex)),
+ m_autoScroller, SLOT(handleCurrentIndexChanged(QModelIndex, QModelIndex)));
+
+ view->viewport()->installEventFilter(this);
}
ViewExtensionsFactory::~ViewExtensionsFactory()
{
}
-void ViewExtensionsFactory::updateIcons()
+void ViewExtensionsFactory::handleCurrentIndexChange(const QModelIndex& current, const QModelIndex& previous)
+{
+ m_autoScroller->handleCurrentIndexChange(current, previous);
+}
+
+bool ViewExtensionsFactory::eventFilter(QObject* watched, QEvent* event)
+{
+ Q_UNUSED(watched);
+ if ((event->type() == QEvent::Wheel) && (m_selectionManager != 0)) {
+ m_selectionManager->reset();
+ }
+ return false;
+}
+
+void ViewExtensionsFactory::slotZoomLevelChanged()
{
m_previewGenerator->updateIcons();
+ if (m_selectionManager != 0) {
+ m_selectionManager->reset();
+ }
}
void ViewExtensionsFactory::cancelPreviews()
@@ -75,5 +116,10 @@ void ViewExtensionsFactory::slotShowPreviewChanged()
m_previewGenerator->setPreviewShown(show);
}
+void ViewExtensionsFactory::requestActivation()
+{
+ m_controller->requestActivation();
+}
+
#include "viewextensionsfactory.moc"
diff --git a/src/viewextensionsfactory.h b/src/viewextensionsfactory.h
index e89a7ce36..e5e8056b7 100644
--- a/src/viewextensionsfactory.h
+++ b/src/viewextensionsfactory.h
@@ -23,7 +23,10 @@
#include <QObject>
class DolphinController;
+class DolphinViewAutoScroller;
class KFilePreviewGenerator;
+class QModelIndex;
+class SelectionManager;
class ToolTipManager;
class QAbstractItemView;
@@ -40,28 +43,33 @@ class ViewExtensionsFactory : public QObject
{
Q_OBJECT
- public:
- explicit ViewExtensionsFactory(QAbstractItemView* view,
- DolphinController* controller);
- virtual ~ViewExtensionsFactory();
+public:
+ explicit ViewExtensionsFactory(QAbstractItemView* view,
+ DolphinController* controller);
+ virtual ~ViewExtensionsFactory();
- private slots:
- /**
- * Tells the preview generator to update all icons.
- */
- void updateIcons();
+ /**
+ * Must be invoked by the item view, when QAbstractItemView::currentChanged()
+ * has been called. Assures that the current item stays visible when it has been
+ * changed by the keyboard.
+ */
+ void handleCurrentIndexChange(const QModelIndex& current, const QModelIndex& previous);
- /**
- * Tells the preview generator to cancel all pending previews.
- */
- void cancelPreviews();
+protected:
+ virtual bool eventFilter(QObject* watched, QEvent* event);
- void slotShowPreviewChanged();
+private slots:
+ void slotZoomLevelChanged();
+ void cancelPreviews();
+ void slotShowPreviewChanged();
+ void requestActivation();
- private:
- DolphinController* m_controller;
- ToolTipManager* m_toolTipManager;
- KFilePreviewGenerator* m_previewGenerator;
+private:
+ DolphinController* m_controller;
+ ToolTipManager* m_toolTipManager;
+ KFilePreviewGenerator* m_previewGenerator;
+ SelectionManager* m_selectionManager;
+ DolphinViewAutoScroller* m_autoScroller;
};
#endif