tooltips/kformattedballoontipdelegate.cpp
tooltips/tooltipmanager.cpp
versioncontrolobserver.cpp
+ viewextensionsfactory.cpp
viewproperties.cpp
zoomlevelinfo.cpp
)
#include "selectionmanager.h"
#include "tooltips/tooltipmanager.h"
#include "versioncontrolobserver.h"
+#include "viewextensionsfactory.h"
#include "zoomlevelinfo.h"
#include <kcolorscheme.h>
#include <kdirlister.h>
#include <kfileitem.h>
-#include <kfilepreviewgenerator.h>
#include <kio/previewjob.h>
#include <kiconeffect.h>
#include <kjob.h>
m_container(container),
m_selectionManager(0),
m_autoScroller(0),
+ m_extensionsFactory(0),
m_url(url),
m_childUrl(),
m_font(),
m_dirLister(0),
m_dolphinModel(0),
m_proxyModel(0),
- m_previewGenerator(0),
- m_toolTipManager(0),
m_dropRect()
{
setMouseTracking(true);
m_selectionManager, SLOT(reset()));
}
- //m_previewGenerator = new KFilePreviewGenerator(this);
- //m_previewGenerator->setPreviewShown(m_container->m_controller->dolphinView()->showPreview());
-
- //if (DolphinSettings::instance().generalSettings()->showToolTips()) {
- // m_toolTipManager = new ToolTipManager(this, m_proxyModel);
- //}
-
//m_dirLister->openUrl(url, KDirLister::NoFlags);
connect(KGlobalSettings::self(), SIGNAL(kdisplayFontChanged()),
this, SLOT(setNameFilter(const QString&)));
updateDecorationSize(dolphinView->showPreview());
+
+ m_extensionsFactory = new ViewExtensionsFactory(this, controller);
}
DolphinColumnView::~DolphinColumnView()
default:
break;
}
-
- if (m_toolTipManager != 0) {
- m_toolTipManager->hideTip();
- }
}
void DolphinColumnView::contextMenuEvent(QContextMenuEvent* event)
clearSelection();
}
- if (m_toolTipManager != 0) {
- m_toolTipManager->hideTip();
- }
-
const QPoint pos = m_container->viewport()->mapFromGlobal(event->globalPos());
Q_ASSERT(m_container->m_controller->itemView() == this);
m_container->m_controller->triggerContextMenuRequest(pos);
class DolphinSortFilterProxyModel;
class DolphinDirLister;
class DolphinViewAutoScroller;
-class KFilePreviewGenerator;
class KFileItem;
class KFileItemList;
class SelectionManager;
-class ToolTipManager;
+class ViewExtensionsFactory;
/**
* Represents one column inside the DolphinColumnViewContainer.
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
DolphinModel* m_dolphinModel;
DolphinSortFilterProxyModel* m_proxyModel;
- KFilePreviewGenerator* m_previewGenerator;
-
- ToolTipManager* m_toolTipManager;
-
QRect m_dropRect;
friend class DolphinColumnViewContainer;
#include "dolphin_columnmodesettings.h"
-#include <kfilepreviewgenerator.h>
-
#include <QPoint>
#include <QScrollBar>
#include <QTimeLine>
-DolphinColumnViewContainer::DolphinColumnViewContainer(QWidget* parent, DolphinController* controller) :
+DolphinColumnViewContainer::DolphinColumnViewContainer(QWidget* parent,
+ DolphinController* controller) :
QScrollArea(parent),
m_controller(controller),
m_active(false),
}
// deleteWhenNotDragSource(column) does not necessarily delete column,
// and we want its preview generator destroyed immediately.
- column->m_previewGenerator->deleteLater();
- column->m_previewGenerator = 0;
column->hide();
// Prevent automatic destruction of column when this DolphinColumnViewContainer
// is destroyed.
Q_OBJECT
public:
- explicit DolphinColumnViewContainer(QWidget* parent, DolphinController* controller);
+ explicit DolphinColumnViewContainer(QWidget* parent,
+ DolphinController* controller);
virtual ~DolphinColumnViewContainer();
KUrl rootUrl() const;
{
if (m_url != url) {
m_url = url;
+ emit cancelPreviews();
emit urlChanged(url);
}
}
*
* The communication of the abstract view to the view implementations is done by:
* - setUrl()
- * - setShowHiddenFiles()
- * - setShowPreview()
* - indicateActivationChange()
* - setNameFilter()
* - setZoomLevel()
*/
void hideToolTip();
+ /**
+ * Is emitted if pending previews should be canceled (e. g. because of an URL change).
+ */
+ void cancelPreviews();
+
private slots:
void updateMouseButtonState();
#include "dolphinviewautoscroller.h"
#include "draganddrophelper.h"
#include "selectionmanager.h"
+#include "viewextensionsfactory.h"
#include "viewproperties.h"
#include "zoomlevelinfo.h"
#include <QPainter>
#include <QScrollBar>
-DolphinDetailsView::DolphinDetailsView(QWidget* parent, DolphinController* controller) :
+DolphinDetailsView::DolphinDetailsView(QWidget* parent,
+ DolphinController* controller,
+ DolphinSortFilterProxyModel* proxyModel) :
QTreeView(parent),
m_autoResize(true),
m_expandingTogglePressed(false),
m_controller(controller),
m_selectionManager(0),
m_autoScroller(0),
+ m_extensionsFactory(0),
m_expandableFoldersAction(0),
m_font(),
m_decorationSize(),
setRootIsDecorated(settings->expandableFolders());
setItemsExpandable(settings->expandableFolders());
setEditTriggers(QAbstractItemView::NoEditTriggers);
+ setModel(proxyModel);
setMouseTracking(true);
m_autoScroller = new DolphinViewAutoScroller(this);
m_expandableFoldersAction->setCheckable(true);
connect(m_expandableFoldersAction, SIGNAL(toggled(bool)),
this, SLOT(setFoldersExpandable(bool)));
+
+ m_extensionsFactory = new ViewExtensionsFactory(this, controller);
}
DolphinDetailsView::~DolphinDetailsView()
class DolphinController;
class SelectionManager;
+class DolphinSortFilterProxyModel;
class DolphinViewAutoScroller;
+class ViewExtensionsFactory;
/**
* @brief Represents the details view which shows the name, size,
Q_OBJECT
public:
- explicit DolphinDetailsView(QWidget* parent, DolphinController* controller);
+ explicit DolphinDetailsView(QWidget* parent,
+ DolphinController* controller,
+ DolphinSortFilterProxyModel* model);
virtual ~DolphinDetailsView();
protected:
DolphinController* m_controller;
SelectionManager* m_selectionManager;
DolphinViewAutoScroller* m_autoScroller;
+ ViewExtensionsFactory* m_extensionsFactory;
QAction* m_expandableFoldersAction;
QFont m_font;
#include "dolphin_generalsettings.h"
#include "draganddrophelper.h"
#include "selectionmanager.h"
+#include "viewextensionsfactory.h"
#include "zoomlevelinfo.h"
#include <kcategorizedsortfilterproxymodel.h>
#include <QApplication>
#include <QScrollBar>
-DolphinIconsView::DolphinIconsView(QWidget* parent, DolphinController* controller) :
+DolphinIconsView::DolphinIconsView(QWidget* parent,
+ DolphinController* controller,
+ 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),
m_dropRect()
{
Q_ASSERT(controller != 0);
+ setModel(proxyModel);
setLayoutDirection(Qt::LeftToRight);
setViewMode(QListView::IconMode);
setResizeMode(QListView::Adjust);
connect(KGlobalSettings::self(), SIGNAL(settingsChanged(int)),
this, SLOT(slotGlobalSettingsChanged(int)));
+
+ m_extensionsFactory = new ViewExtensionsFactory(this, controller);
}
DolphinIconsView::~DolphinIconsView()
class DolphinController;
class SelectionManager;
class DolphinCategoryDrawer;
+class DolphinSortFilterProxyModel;
class DolphinViewAutoScroller;
+class ViewExtensionsFactory;
/**
* @brief Represents the view, where each item is shown as an icon.
Q_OBJECT
public:
- explicit DolphinIconsView(QWidget* parent, DolphinController* controller);
+ explicit DolphinIconsView(QWidget* parent,
+ DolphinController* controller,
+ DolphinSortFilterProxyModel* proxyModel);
virtual ~DolphinIconsView();
protected slots:
SelectionManager* m_selectionManager;
DolphinViewAutoScroller* m_autoScroller;
DolphinCategoryDrawer* m_categoryDrawer;
+ ViewExtensionsFactory* m_extensionsFactory;
QFont m_font;
QSize m_decorationSize;
#include <kactioncollection.h>
#include <kcolorscheme.h>
#include <kdirlister.h>
-#include <kfilepreviewgenerator.h>
#include <kiconeffect.h>
#include <kfileitem.h>
#include <klocale.h>
#include "draganddrophelper.h"
#include "folderexpander.h"
#include "renamedialog.h"
-#include "tooltips/tooltipmanager.h"
#include "settings/dolphinsettings.h"
#include "versioncontrolobserver.h"
#include "viewproperties.h"
m_viewAccessor(proxyModel),
m_selectionModel(0),
m_selectionChangedTimer(0),
- m_previewGenerator(0),
- m_toolTipManager(0),
m_versionControlObserver(0),
m_rootUrl(),
m_activeItemUrl(),
if (level != zoomLevel()) {
m_controller->setZoomLevel(level);
- m_previewGenerator->updateIcons();
emit zoomLevelChanged(level);
}
}
return;
}
- m_previewGenerator->cancelPreviews();
m_controller->setUrl(url); // emits urlChanged, which we forward
if (m_viewAccessor.prepareUrlChange(url)) {
initializeView();
props.setShowPreview(show);
m_showPreview = show;
- m_previewGenerator->setPreviewShown(show);
-
const int oldZoomLevel = m_controller->zoomLevel();
emit showPreviewChanged();
case QEvent::KeyPress:
if (watched == m_viewAccessor.itemView()) {
- if (m_toolTipManager != 0) {
- m_toolTipManager->hideTip();
- }
-
// clear the selection when Escape has been pressed
QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event);
if (keyEvent->key() == Qt::Key_Escape) {
return;
}
- if (m_toolTipManager != 0) {
- m_toolTipManager->hideTip();
- }
emit itemTriggered(item); // caught by DolphinViewContainer or DolphinPart
}
item = m_viewAccessor.dirModel()->itemForIndex(dolphinModelIndex);
}
- if (m_toolTipManager != 0) {
- m_toolTipManager->hideTip();
- }
-
m_isContextMenuOpen = true; // TODO: workaround for Qt-issue 207192
emit requestContextMenu(item, url(), customActions);
m_isContextMenuOpen = false;
const bool showPreview = props.showPreview();
if (showPreview != m_showPreview) {
m_showPreview = showPreview;
- m_previewGenerator->setPreviewShown(showPreview);
-
const int oldZoomLevel = m_controller->zoomLevel();
emit showPreviewChanged();
m_topLayout->removeWidget(view);
view->close();
- // m_previewGenerator's parent is not always destroyed, and we
- // don't want two active at once - manually delete.
- delete m_previewGenerator;
- m_previewGenerator = 0;
-
disconnect(view);
m_controller->disconnect(view);
view->disconnect();
m_viewAccessor.deleteView();
m_fileItemDelegate = 0;
- m_toolTipManager = 0;
}
}
view->setSelectionMode(QAbstractItemView::ExtendedSelection);
- m_previewGenerator = new KFilePreviewGenerator(view);
- m_previewGenerator->setPreviewShown(m_showPreview);
-
m_versionControlObserver = new VersionControlObserver(view);
connect(m_versionControlObserver, SIGNAL(infoMessage(const QString&)),
this, SIGNAL(infoMessage(const QString&)));
connect(m_versionControlObserver, SIGNAL(operationCompletedMessage(const QString&)),
this, SIGNAL(operationCompletedMessage(const QString&)));
- if (DolphinSettings::instance().generalSettings()->showToolTips()) {
- m_toolTipManager = new ToolTipManager(view, m_viewAccessor.proxyModel());
- connect(m_controller, SIGNAL(hideToolTip()),
- m_toolTipManager, SLOT(hideTip()));
- }
-
connect(view->selectionModel(), SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)),
this, SLOT(emitDelayedSelectionChangedSignal()));
connect(view->verticalScrollBar(), SIGNAL(valueChanged(int)),
switch (mode) {
case IconsView:
- m_iconsView = new DolphinIconsView(parent, controller);
+ m_iconsView = new DolphinIconsView(parent, controller, m_proxyModel);
break;
case DetailsView:
- m_detailsView = new DolphinDetailsView(parent, controller);
+ m_detailsView = new DolphinDetailsView(parent, controller, m_proxyModel);
break;
case ColumnView:
class KActionCollection;
class KDirLister;
class KUrl;
-class ToolTipManager;
class VersionControlObserver;
class ViewProperties;
QItemSelectionModel* m_selectionModel;
QTimer* m_selectionChangedTimer;
- KFilePreviewGenerator* m_previewGenerator;
- ToolTipManager* m_toolTipManager;
-
VersionControlObserver* m_versionControlObserver;
KUrl m_rootUrl;
this, SLOT(hideTip()));
m_view->viewport()->installEventFilter(this);
+ m_view->installEventFilter(this);
}
ToolTipManager::~ToolTipManager()
bool ToolTipManager::eventFilter(QObject* watched, QEvent* event)
{
- if ((watched == m_view->viewport()) && (event->type() == QEvent::Leave)) {
+ if (watched == m_view->viewport()) {
+ switch (event->type()) {
+ case QEvent::Leave:
+ case QEvent::MouseButtonPress:
+ hideToolTip();
+ break;
+ default:
+ break;
+ }
+ } else if ((watched == m_view) && (event->type() == QEvent::KeyPress)) {
hideToolTip();
}
--- /dev/null
+/***************************************************************************
+ * Copyright (C) 2009 by Peter Penz <peter.penz@gmx.at> *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
+ ***************************************************************************/
+
+#include "viewextensionsfactory.h"
+
+#include "dolphincontroller.h"
+#include "dolphinsortfilterproxymodel.h"
+#include "dolphinview.h"
+#include "settings/dolphinsettings.h"
+#include "tooltips/tooltipmanager.h"
+
+#include "dolphin_generalsettings.h"
+
+#include <kfilepreviewgenerator.h>
+#include <QAbstractItemView>
+
+ViewExtensionsFactory::ViewExtensionsFactory(QAbstractItemView* view,
+ DolphinController* controller) :
+ QObject(view),
+ m_controller(controller),
+ m_toolTipManager(0),
+ m_previewGenerator(0)
+{
+ if (DolphinSettings::instance().generalSettings()->showToolTips()) {
+ DolphinSortFilterProxyModel* proxyModel = static_cast<DolphinSortFilterProxyModel*>(view->model());
+ m_toolTipManager = new ToolTipManager(view, proxyModel);
+
+ connect(controller, SIGNAL(hideToolTip()),
+ m_toolTipManager, SLOT(hideTip()));
+ }
+
+ m_previewGenerator = new KFilePreviewGenerator(view);
+ m_previewGenerator->setPreviewShown(controller->dolphinView()->showPreview());
+ connect(controller, SIGNAL(zoomLevelChanged(int)),
+ this, SLOT(updateIcons()));
+ connect(controller, SIGNAL(cancelPreviews()),
+ this, SLOT(cancelPreviews()));
+ connect(controller->dolphinView(), SIGNAL(showPreviewChanged()),
+ this, SLOT(slotShowPreviewChanged()));
+}
+
+ViewExtensionsFactory::~ViewExtensionsFactory()
+{
+}
+
+void ViewExtensionsFactory::updateIcons()
+{
+ m_previewGenerator->updateIcons();
+}
+
+void ViewExtensionsFactory::cancelPreviews()
+{
+ m_previewGenerator->cancelPreviews();
+}
+
+void ViewExtensionsFactory::slotShowPreviewChanged()
+{
+ const bool show = m_controller->dolphinView()->showPreview();
+ m_previewGenerator->setPreviewShown(show);
+}
+
+#include "viewextensionsfactory.moc"
+
--- /dev/null
+/***************************************************************************
+ * Copyright (C) 2009 by Peter Penz <peter.penz@gmx.at> *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef VIEWEXTENSIONSFACTORY_H
+#define VIEWEXTENSIONSFACTORY_H
+
+#include <QObject>
+
+class DolphinController;
+class KFilePreviewGenerator;
+class ToolTipManager;
+class QAbstractItemView;
+
+class ViewExtensionsFactory : public QObject
+{
+ Q_OBJECT
+
+ public:
+ explicit ViewExtensionsFactory(QAbstractItemView* view,
+ DolphinController* controller);
+ virtual ~ViewExtensionsFactory();
+
+ private slots:
+ /**
+ * Tells the preview generator to update all icons.
+ */
+ void updateIcons();
+
+ /**
+ * Tells the preview generator to cancel all pending previews.
+ */
+ void cancelPreviews();
+
+ void slotShowPreviewChanged();
+
+ private:
+ DolphinController* m_controller;
+ ToolTipManager* m_toolTipManager;
+ KFilePreviewGenerator* m_previewGenerator;
+};
+
+#endif
+