]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphincontroller.cpp
assure correct update of the enabled/disabled state of the zoom actions (no backport...
[dolphin.git] / src / dolphincontroller.cpp
index edc5dad9895eaba161bdba290918f28246947f81..a23ecbe4a583cf2afc7f43db9462acb46cf6a6d6 100644 (file)
@@ -57,16 +57,7 @@ void DolphinController::setItemView(QAbstractItemView* view)
     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&)),
@@ -134,18 +125,36 @@ int DolphinController::iconSizeForZoomLevel(int level)
 {
     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);