#include "dolphin_generalsettings.h"
#include "draganddrophelper.h"
#include "folderexpander.h"
-#include "selectionmanager.h"
#include "tooltips/tooltipmanager.h"
#include "versioncontrolobserver.h"
#include "viewextensionsfactory.h"
QListView(parent),
m_active(false),
m_container(container),
- m_selectionManager(0),
- m_autoScroller(0),
+ m_extensionsFactory(0),
m_url(url),
m_childUrl(),
m_font(),
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);
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()),
updateDecorationSize(dolphinView->showPreview());
- new ViewExtensionsFactory(this, controller);
+ m_extensionsFactory = new ViewExtensionsFactory(this, controller);
}
DolphinColumnView::~DolphinColumnView()
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();
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)
m_decorationSize = size;
- if (m_selectionManager != 0) {
- m_selectionManager->reset();
- }
-
doItemsLayout();
}
class DolphinModel;
class DolphinSortFilterProxyModel;
class DolphinDirLister;
-class DolphinViewAutoScroller;
class KFileItem;
class KFileItemList;
class SelectionManager;
+class ViewExtensionsFactory;
/**
* Represents one column inside the DolphinColumnViewContainer.
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
#include "dolphinsortfilterproxymodel.h"
#include "dolphinviewautoscroller.h"
#include "draganddrophelper.h"
-#include "selectionmanager.h"
#include "viewextensionsfactory.h"
#include "viewproperties.h"
#include "zoomlevelinfo.h"
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(),
setModel(proxyModel);
setMouseTracking(true);
- m_autoScroller = new DolphinViewAutoScroller(this);
const ViewProperties props(controller->url());
setSortIndicatorSection(props.sorting());
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()),
connect(m_expandableFoldersAction, SIGNAL(toggled(bool)),
this, SLOT(setFoldersExpandable(bool)));
- new ViewExtensionsFactory(this, controller);
+ m_extensionsFactory = new ViewExtensionsFactory(this, controller);
}
DolphinDetailsView::~DolphinDetailsView()
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();
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.
setIconSize(QSize(iconSize, iconSize));
m_decorationSize = QSize(iconSize, iconSize);
- if (m_selectionManager != 0) {
- m_selectionManager->reset();
- }
-
doItemsLayout();
}
#include <libdolphin_export.h>
class DolphinController;
-class SelectionManager;
class DolphinSortFilterProxyModel;
-class DolphinViewAutoScroller;
+class ViewExtensionsFactory;
/**
* @brief Represents the details view which shows the name, size,
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;
#include "dolphincontroller.h"
#include "settings/dolphinsettings.h"
#include "dolphinsortfilterproxymodel.h"
-#include "dolphinviewautoscroller.h"
#include "dolphin_iconsmodesettings.h"
#include "dolphin_generalsettings.h"
#include "draganddrophelper.h"
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),
viewport()->setAcceptDrops(true);
setMouseTracking(true);
- m_autoScroller = new DolphinViewAutoScroller(this);
connect(this, SIGNAL(clicked(const QModelIndex&)),
controller, SLOT(requestTab(const QModelIndex&)));
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()),
connect(KGlobalSettings::self(), SIGNAL(settingsChanged(int)),
this, SLOT(slotGlobalSettingsChanged(int)));
- new ViewExtensionsFactory(this, controller);
+ m_extensionsFactory = new ViewExtensionsFactory(this, controller);
}
DolphinIconsView::~DolphinIconsView()
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();
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)
if (delegate != 0) {
delegate->setMaximumSize(m_itemSize);
}
-
- if (m_selectionManager != 0) {
- m_selectionManager->reset();
- }
}
int DolphinIconsView::additionalInfoCount() const
#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.
private:
DolphinController* m_controller;
- SelectionManager* m_selectionManager;
- DolphinViewAutoScroller* m_autoScroller;
DolphinCategoryDrawer* m_categoryDrawer;
+ ViewExtensionsFactory* m_extensionsFactory;
QFont m_font;
QSize m_decorationSize;
m_controller(0),
m_fileItemDelegate(0),
m_viewAccessor(proxyModel),
- m_selectionModel(0),
m_selectionChangedTimer(0),
m_versionControlObserver(0),
m_rootUrl(),
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);
// 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);
#include "dolphincontroller.h"
#include "dolphinsortfilterproxymodel.h"
#include "dolphinview.h"
+#include "dolphinviewautoscroller.h"
+#include "selectionmanager.h"
#include "settings/dolphinsettings.h"
#include "tooltips/tooltipmanager.h"
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);
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()
m_previewGenerator->setPreviewShown(show);
}
+void ViewExtensionsFactory::requestActivation()
+{
+ m_controller->requestActivation();
+}
+
#include "viewextensionsfactory.moc"
#include <QObject>
class DolphinController;
+class DolphinViewAutoScroller;
class KFilePreviewGenerator;
+class QModelIndex;
+class SelectionManager;
class ToolTipManager;
class QAbstractItemView;
{
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