#include "dolphinfileitemlistwidget.h"
#include "kitemviews/kfileitemmodel.h"
#include "kitemviews/kitemlistcontroller.h"
+#include "settings/viewmodes/viewmodesettings.h"
#include "views/viewmodecontroller.h"
#include "zoomlevelinfo.h"
#include <KIO/PreviewJob>
+#include <QtMath>
DolphinItemListView::DolphinItemListView(QGraphicsWidget* parent) :
m_zoomLevel = level;
- ViewModeSettings settings(viewMode());
+ ViewModeSettings settings(itemLayout());
if (previewsShown()) {
const int previewSize = ZoomLevelInfo::iconSizeForZoomLevel(level);
settings.setPreviewSize(previewSize);
void DolphinItemListView::readSettings()
{
- ViewModeSettings settings(viewMode());
+ ViewModeSettings settings(itemLayout());
settings.readConfig();
beginTransaction();
setEnabledSelectionToggles(GeneralSettings::showSelectionToggle());
+ setHighlightEntireRow(DetailsModeSettings::sidePadding());
setSupportsItemExpanding(itemLayoutSupportsItemExpanding(itemLayout()));
updateFont();
void DolphinItemListView::updateFont()
{
- const ViewModeSettings settings(viewMode());
+ const ViewModeSettings settings(itemLayout());
if (settings.useSystemFont()) {
KItemListView::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();
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();
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;
-}
-