m_itemView = view;
if (m_itemView != 0) {
- switch (m_itemView->iconSize().height()) {
- case KIconLoader::SizeSmallMedium: m_zoomLevel = 0; break;
- case KIconLoader::SizeMedium: m_zoomLevel = 1; break;
- case KIconLoader::SizeLarge: m_zoomLevel = 2; break;
- case KIconLoader::SizeHuge: m_zoomLevel = 3; break;
- case KIconLoader::SizeEnormous: m_zoomLevel = 4; break;
- case KIconLoader::SizeEnormous * 3 / 2: m_zoomLevel = 5; break;
- case KIconLoader::SizeEnormous * 2: m_zoomLevel = 6; break;
- default: Q_ASSERT(false); m_zoomLevel = 2; break;
- }
+ m_zoomLevel = zoomLevelForIconSize(m_itemView->iconSize());
// TODO: this is a workaround until Qt-issue 176832 has been fixed
connect(m_itemView, SIGNAL(pressed(const QModelIndex&)),
{
int size = KIconLoader::SizeMedium;
switch (level) {
- case 0: size = KIconLoader::SizeSmallMedium; break;
- case 1: size = KIconLoader::SizeMedium; break;
- case 2: size = KIconLoader::SizeLarge; break;
- case 3: size = KIconLoader::SizeHuge; break;
- case 4: size = KIconLoader::SizeEnormous; break;
- case 5: size = KIconLoader::SizeEnormous * 3 / 2; break;
- case 6: size = KIconLoader::SizeEnormous * 2; break;
+ case 0: size = KIconLoader::SizeSmall; break;
+ case 1: size = KIconLoader::SizeSmallMedium; break;
+ case 2: size = KIconLoader::SizeMedium; break;
+ case 3: size = KIconLoader::SizeLarge; break;
+ case 4: size = KIconLoader::SizeHuge; break;
+ case 5: size = KIconLoader::SizeEnormous; break;
+ case 6: size = KIconLoader::SizeEnormous * 3 / 2; break;
+ case 7: size = KIconLoader::SizeEnormous * 2; break;
default: Q_ASSERT(false); break;
}
return size;
}
+int DolphinController::zoomLevelForIconSize(const QSize& size)
+{
+ int level = 0;
+ switch (size.height()) {
+ case KIconLoader::SizeSmall: level = 0; break;
+ case KIconLoader::SizeSmallMedium: level = 1; break;
+ case KIconLoader::SizeMedium: level = 2; break;
+ case KIconLoader::SizeLarge: level = 3; break;
+ case KIconLoader::SizeHuge: level = 4; break;
+ case KIconLoader::SizeEnormous: level = 5; break;
+ case KIconLoader::SizeEnormous * 3 / 2: level = 6; break;
+ case KIconLoader::SizeEnormous * 2: level = 7; break;
+ default: Q_ASSERT(false); level = 3; break;
+ }
+ return level;
+}
+
void DolphinController::handleKeyPressEvent(QKeyEvent* event)
{
Q_ASSERT(m_itemView != 0);
* (see DolphinController::zoomLevel()).
*/
static int iconSizeForZoomLevel(int level);
+
+ /**
+ * Helper method for the view implementation to get
+ * the zoom level for the icon size \a size
+ * (see DolphinController::zoomLevel()).
+ */
+ static int zoomLevelForIconSize(const QSize& size);
/**
* Tells the view implementation to zoom out by emitting the signal zoomOut()
inline int DolphinController::zoomLevelMaximum() const
{
- return 6;
+ return 7;
}
#endif
m_showPreview = show;
m_iconManager->setShowPreview(show);
+
+ const int oldZoomLevel = m_controller->zoomLevel();
emit showPreviewChanged();
+
+ // Enabling or disabling the preview might change the icon size of the view.
+ // As the view does not emit a signal when the icon size has been changed,
+ // the used zoom level of the controller must be adjusted manually:
+ updateZoomLevel(oldZoomLevel);
loadDirectory(viewPropsUrl);
}
}
}
+void DolphinView::slotRedirection(const KUrl& oldUrl, const KUrl& newUrl)
+{
+ if (oldUrl == m_controller->url()) {
+ m_controller->setUrl(newUrl);
+ }
+}
+
+void DolphinView::slotRequestUrlChange(const KUrl& url)
+{
+ emit requestUrlChange(url);
+ m_controller->setUrl(url);
+}
void DolphinView::restoreCurrentItem()
{
if (showPreview != m_showPreview) {
m_showPreview = showPreview;
m_iconManager->setShowPreview(showPreview);
+
+ const int oldZoomLevel = m_controller->zoomLevel();
emit showPreviewChanged();
+
+ // Enabling or disabling the preview might change the icon size of the view.
+ // As the view does not emit a signal when the icon size has been changed,
+ // the used zoom level of the controller must be adjusted manually:
+ updateZoomLevel(oldZoomLevel);
}
}
}
}
-void DolphinView::slotRequestUrlChange(const KUrl& url)
-{
- emit requestUrlChange(url);
- m_controller->setUrl(url);
-}
-
-void DolphinView::slotRedirection(const KUrl& oldUrl, const KUrl& newUrl)
-{
- if (oldUrl == m_controller->url()) {
- m_controller->setUrl(newUrl);
+void DolphinView::updateZoomLevel(int oldZoomLevel)
+{
+ const int newZoomLevel = DolphinController::zoomLevelForIconSize(itemView()->iconSize());
+ if (oldZoomLevel != newZoomLevel) {
+ m_controller->setZoomLevel(newZoomLevel);
+ emit zoomLevelChanged(newZoomLevel);
}
}
* Pastes the clipboard data into the URL \a url.
*/
void pasteToUrl(const KUrl& url);
+
+ /**
+ * Checks whether the current item view has the same zoom level
+ * as \a oldZoomLevel. If this is not the case, the zoom level
+ * of the controller is updated and a zoomLevelChanged() signal
+ * is emitted.
+ */
+ void updateZoomLevel(int oldZoomLevel);
/**
* Returns true, if the ColumnView is activated. As the column view