X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/6072005ddce81b456fdcf2e77d5156a1d86f3686..ca0d0bb322925e2119f13f76d8e9643d24cbf3e0:/src/views/dolphinitemlistview.cpp diff --git a/src/views/dolphinitemlistview.cpp b/src/views/dolphinitemlistview.cpp index df28a0858..5a6987f65 100644 --- a/src/views/dolphinitemlistview.cpp +++ b/src/views/dolphinitemlistview.cpp @@ -13,10 +13,12 @@ #include "dolphinfileitemlistwidget.h" #include "kitemviews/kfileitemmodel.h" #include "kitemviews/kitemlistcontroller.h" +#include "settings/viewmodes/viewmodesettings.h" #include "views/viewmodecontroller.h" #include "zoomlevelinfo.h" #include +#include DolphinItemListView::DolphinItemListView(QGraphicsWidget* parent) : @@ -46,7 +48,7 @@ void DolphinItemListView::setZoomLevel(int level) m_zoomLevel = level; - ViewModeSettings settings(viewMode()); + ViewModeSettings settings(itemLayout()); if (previewsShown()) { const int previewSize = ZoomLevelInfo::iconSizeForZoomLevel(level); settings.setPreviewSize(previewSize); @@ -65,12 +67,13 @@ int DolphinItemListView::zoomLevel() const void DolphinItemListView::readSettings() { - ViewModeSettings settings(viewMode()); + ViewModeSettings settings(itemLayout()); settings.readConfig(); beginTransaction(); setEnabledSelectionToggles(GeneralSettings::showSelectionToggle()); + setHighlightEntireRow(DetailsModeSettings::sidePadding()); setSupportsItemExpanding(itemLayoutSupportsItemExpanding(itemLayout())); updateFont(); @@ -124,7 +127,7 @@ void DolphinItemListView::onVisibleRolesChanged(const QList& current void DolphinItemListView::updateFont() { - const ViewModeSettings settings(viewMode()); + const ViewModeSettings settings(itemLayout()); if (settings.useSystemFont()) { KItemListView::updateFont(); @@ -144,7 +147,7 @@ void DolphinItemListView::updateFont() void DolphinItemListView::updateGridSize() { - const ViewModeSettings settings(viewMode()); + const ViewModeSettings settings(itemLayout()); // Calculate the size of the icon const int iconSize = previewsShown() ? settings.previewSize() : settings.iconSize(); @@ -163,11 +166,16 @@ void DolphinItemListView::updateGridSize() switch (itemLayout()) { case KFileItemListView::IconsLayout: { - const int minItemWidth = 48; - itemWidth = minItemWidth + IconsModeSettings::textWidthIndex() * 64; - if (itemWidth < iconSize + padding * 2) { - itemWidth = iconSize + padding * 2; + // an exponential factor based on zoom, 0 -> 1, 4 -> 1.36 8 -> ~1.85, 16 -> 3.4 + auto zoomFactor = qExp(m_zoomLevel / 13.0); + // 9 is the average char width for 10pt Noto Sans, making fontFactor =1 + // by each pixel the font gets larger the factor increases by 1/9 + auto fontFactor = option.fontMetrics.averageCharWidth() / 9.0; + itemWidth = 48 + IconsModeSettings::textWidthIndex() * 64 * fontFactor * zoomFactor; + + if (itemWidth < iconSize + padding * 2 * zoomFactor) { + itemWidth = iconSize + padding * 2 * zoomFactor; } itemHeight = padding * 3 + iconSize + option.fontMetrics.lineSpacing(); @@ -215,20 +223,3 @@ void DolphinItemListView::updateGridSize() setItemSize(QSizeF(itemWidth, itemHeight)); endTransaction(); } - -ViewModeSettings::ViewMode DolphinItemListView::viewMode() const -{ - ViewModeSettings::ViewMode mode; - - switch (itemLayout()) { - case KFileItemListView::IconsLayout: mode = ViewModeSettings::IconsMode; break; - case KFileItemListView::CompactLayout: mode = ViewModeSettings::CompactMode; break; - case KFileItemListView::DetailsLayout: mode = ViewModeSettings::DetailsMode; break; - default: mode = ViewModeSettings::IconsMode; - Q_ASSERT(false); - break; - } - - return mode; -} -