From: Peter Penz Date: Thu, 1 Mar 2007 20:22:03 +0000 (+0000) Subject: allow zooming in and zooming out in the details view X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/78cb4cae3d97ee1fc843b0500872cf2dbde8f723 allow zooming in and zooming out in the details view svn path=/trunk/KDE/kdebase/apps/; revision=638399 --- diff --git a/src/dolphindetailsview.cpp b/src/dolphindetailsview.cpp index 842026924..6406cb81d 100644 --- a/src/dolphindetailsview.cpp +++ b/src/dolphindetailsview.cpp @@ -27,7 +27,6 @@ #include "dolphin_detailsmodesettings.h" -#include #include #include @@ -37,7 +36,7 @@ DolphinDetailsView::DolphinDetailsView(QWidget* parent, DolphinController* contr QTreeView(parent), m_controller(controller) { - assert(controller != 0); + Q_ASSERT(controller != 0); setAcceptDrops(true); setRootIsDecorated(false); @@ -59,14 +58,18 @@ DolphinDetailsView::DolphinDetailsView(QWidget* parent, DolphinController* contr connect(this, SIGNAL(clicked(const QModelIndex&)), controller, SLOT(triggerItem(const QModelIndex&))); + connect(controller, SIGNAL(zoomIn()), + this, SLOT(zoomIn())); + connect(controller, SIGNAL(zoomOut()), + this, SLOT(zoomOut())); + // apply the details mode settings to the widget const DetailsModeSettings* settings = DolphinSettings::instance().detailsModeSettings(); - assert(settings != 0); + Q_ASSERT(settings != 0); m_viewOptions = QTreeView::viewOptions(); m_viewOptions.font = QFont(settings->fontFamily(), settings->fontSize()); - const int iconSize = settings->iconSize(); - m_viewOptions.decorationSize = QSize(iconSize, iconSize); + updateDecorationSize(); KFileItemDelegate* delegate = new KFileItemDelegate(parent); setItemDelegate(delegate); @@ -89,7 +92,7 @@ bool DolphinDetailsView::event(QEvent* event) // hide columns if this is indicated by the settings const DetailsModeSettings* settings = DolphinSettings::instance().detailsModeSettings(); - assert(settings != 0); + Q_ASSERT(settings != 0); if (!settings->showDate()) { hideColumn(KDirModel::ModifiedTime); } @@ -167,4 +170,56 @@ void DolphinDetailsView::synchronizeSortingState(int column) m_controller->indicateSortOrderChange(sortOrder); } +void DolphinDetailsView::zoomIn() +{ + if (isZoomInPossible()) { + DetailsModeSettings* settings = DolphinSettings::instance().detailsModeSettings(); + // TODO: get rid of K3Icon sizes + switch (settings->iconSize()) { + case K3Icon::SizeSmall: settings->setIconSize(K3Icon::SizeMedium); break; + case K3Icon::SizeMedium: settings->setIconSize(K3Icon::SizeLarge); break; + default: Q_ASSERT(false); break; + } + updateDecorationSize(); + } +} + +void DolphinDetailsView::zoomOut() +{ + if (isZoomOutPossible()) { + DetailsModeSettings* settings = DolphinSettings::instance().detailsModeSettings(); + // TODO: get rid of K3Icon sizes + switch (settings->iconSize()) { + case K3Icon::SizeLarge: settings->setIconSize(K3Icon::SizeMedium); break; + case K3Icon::SizeMedium: settings->setIconSize(K3Icon::SizeSmall); break; + default: Q_ASSERT(false); break; + } + updateDecorationSize(); + } +} + +bool DolphinDetailsView::isZoomInPossible() const +{ + DetailsModeSettings* settings = DolphinSettings::instance().detailsModeSettings(); + return settings->iconSize() < K3Icon::SizeLarge; +} + +bool DolphinDetailsView::isZoomOutPossible() const +{ + DetailsModeSettings* settings = DolphinSettings::instance().detailsModeSettings(); + return settings->iconSize() > K3Icon::SizeSmall; +} + +void DolphinDetailsView::updateDecorationSize() +{ + DetailsModeSettings* settings = DolphinSettings::instance().detailsModeSettings(); + const int iconSize = settings->iconSize(); + m_viewOptions.decorationSize = QSize(iconSize, iconSize); + + m_controller->setZoomInPossible(isZoomInPossible()); + m_controller->setZoomOutPossible(isZoomOutPossible()); + + doItemsLayout(); +} + #include "dolphindetailsview.moc" diff --git a/src/dolphindetailsview.h b/src/dolphindetailsview.h index a1b4e39c4..b504d6853 100644 --- a/src/dolphindetailsview.h +++ b/src/dolphindetailsview.h @@ -69,7 +69,22 @@ private slots: * with the current state of the details view. * @param column Index of the current sorting column. */ - void synchronizeSortingState(int column); + void synchronizeSortingState(int column); + + void zoomIn(); + void zoomOut(); + +private: + bool isZoomInPossible() const; + bool isZoomOutPossible() const; + + /** + * Updates the size of the decoration dependent on the + * icon size of the DetailsModeSettings. The controller + * will get informed about possible zoom in/zoom out + * operations. + */ + void updateDecorationSize(); private: DolphinController* m_controller;