X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/bebcf035d264410c943e7bad861628c1b14dd1f2..edced8460b:/src/views/dolphinitemlistview.cpp diff --git a/src/views/dolphinitemlistview.cpp b/src/views/dolphinitemlistview.cpp index d73889fd5..9fa91a674 100644 --- a/src/views/dolphinitemlistview.cpp +++ b/src/views/dolphinitemlistview.cpp @@ -1,40 +1,23 @@ -/*************************************************************************** - * Copyright (C) 2011 by Peter Penz * - * * - * 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 * - ***************************************************************************/ +/* + * SPDX-FileCopyrightText: 2011 Peter Penz + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ #include "dolphinitemlistview.h" +#include "dolphin_compactmodesettings.h" +#include "dolphin_detailsmodesettings.h" #include "dolphin_generalsettings.h" #include "dolphin_iconsmodesettings.h" -#include "dolphin_detailsmodesettings.h" -#include "dolphin_compactmodesettings.h" #include "dolphinfileitemlistwidget.h" - -#include -#include -#include -#include +#include "kitemviews/kfileitemmodel.h" +#include "kitemviews/kitemlistcontroller.h" +#include "views/viewmodecontroller.h" +#include "zoomlevelinfo.h" #include - -#include - -#include "zoomlevelinfo.h" +#include DolphinItemListView::DolphinItemListView(QGraphicsWidget* parent) : @@ -95,12 +78,8 @@ void DolphinItemListView::readSettings() updateGridSize(); const KConfigGroup globalConfig(KSharedConfig::openConfig(), "PreviewSettings"); - QStringList enabledPlugins = globalConfig.readEntry("Plugins", QStringList()); - if (enabledPlugins.isEmpty()) { - enabledPlugins = KIO::PreviewJob::defaultPlugins(); - } - setEnabledPlugins(enabledPlugins); - + setEnabledPlugins(globalConfig.readEntry("Plugins", KIO::PreviewJob::defaultPlugins())); + setLocalFileSizePreviewLimit(globalConfig.readEntry("MaximumSize", 0)); endTransaction(); } @@ -133,7 +112,7 @@ void DolphinItemListView::onItemLayoutChanged(ItemLayout current, ItemLayout pre void DolphinItemListView::onPreviewsShownChanged(bool shown) { - Q_UNUSED(shown); + Q_UNUSED(shown) updateGridSize(); } @@ -185,19 +164,16 @@ void DolphinItemListView::updateGridSize() switch (itemLayout()) { case KFileItemListView::IconsLayout: { - const int minItemWidth = 48; - itemWidth = minItemWidth + IconsModeSettings::textWidthIndex() * 64; - - if (previewsShown()) { - // Optimize the width for previews with a 3:2 aspect ratio instead - // of a 1:1 ratio to avoid wasting too much vertical space when - // showing photos. - const int minWidth = iconSize * 3 / 2; - itemWidth = qMax(itemWidth, minWidth); - } - 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();