#include "dolphinitemlistview.h"
#include "dolphin_compactmodesettings.h"
+#include "dolphin_contentdisplaysettings.h"
#include "dolphin_detailsmodesettings.h"
#include "dolphin_generalsettings.h"
#include "dolphin_iconsmodesettings.h"
#include "dolphinfileitemlistwidget.h"
-#include "kitemviews/kfileitemmodel.h"
-#include "kitemviews/kitemlistcontroller.h"
-#include "views/viewmodecontroller.h"
+#include "settings/viewmodes/viewmodesettings.h"
#include "zoomlevelinfo.h"
#include <KIO/PreviewJob>
+#include <QtMath>
-
-DolphinItemListView::DolphinItemListView(QGraphicsWidget* parent) :
- KFileItemListView(parent),
- m_zoomLevel(0)
+DolphinItemListView::DolphinItemListView(QGraphicsWidget *parent)
+ : KFileItemListView(parent)
+ , m_zoomLevel(0)
{
- updateFont();
+ DolphinItemListView::updateFont();
updateGridSize();
}
m_zoomLevel = level;
- ViewModeSettings settings(viewMode());
+ ViewModeSettings settings(itemLayout());
if (previewsShown()) {
const int previewSize = ZoomLevelInfo::iconSizeForZoomLevel(level);
settings.setPreviewSize(previewSize);
return m_zoomLevel;
}
+void DolphinItemListView::setEnabledSelectionToggles(DolphinItemListView::SelectionTogglesEnabled selectionTogglesEnabled)
+{
+ m_selectionTogglesEnabled = selectionTogglesEnabled;
+ switch (m_selectionTogglesEnabled) {
+ case True:
+ return setEnabledSelectionToggles(true);
+ case False:
+ return setEnabledSelectionToggles(false);
+ case FollowSetting:
+ return setEnabledSelectionToggles(GeneralSettings::showSelectionToggle());
+ }
+}
+
void DolphinItemListView::readSettings()
{
- ViewModeSettings settings(viewMode());
- settings.readConfig();
+ // We load the settings for all view modes now because we don't load them when the view mode changes.
+ IconsModeSettings::self()->load();
+ CompactModeSettings::self()->load();
+ DetailsModeSettings::self()->load();
+
+ ContentDisplaySettings::self()->load();
beginTransaction();
- setEnabledSelectionToggles(GeneralSettings::showSelectionToggle());
+ setEnabledSelectionToggles(m_selectionTogglesEnabled);
+ setHighlightEntireRow(itemLayoutHighlightEntireRow(itemLayout()));
setSupportsItemExpanding(itemLayoutSupportsItemExpanding(itemLayout()));
updateFont();
updateGridSize();
- const KConfigGroup globalConfig(KSharedConfig::openConfig(), "PreviewSettings");
+ const KConfigGroup globalConfig(KSharedConfig::openConfig(), QStringLiteral("PreviewSettings"));
setEnabledPlugins(globalConfig.readEntry("Plugins", KIO::PreviewJob::defaultPlugins()));
setLocalFileSizePreviewLimit(globalConfig.readEntry("MaximumSize", 0));
endTransaction();
DetailsModeSettings::self()->save();
}
-KItemListWidgetCreatorBase* DolphinItemListView::defaultWidgetCreator() const
+KItemListWidgetCreatorBase *DolphinItemListView::defaultWidgetCreator() const
{
return new KItemListWidgetCreator<DolphinFileItemListWidget>();
}
+bool DolphinItemListView::itemLayoutHighlightEntireRow(ItemLayout layout) const
+{
+ return layout == DetailsLayout && DetailsModeSettings::highlightEntireRow();
+}
+
bool DolphinItemListView::itemLayoutSupportsItemExpanding(ItemLayout layout) const
{
return layout == DetailsLayout && DetailsModeSettings::expandableFolders();
updateGridSize();
}
-void DolphinItemListView::onVisibleRolesChanged(const QList<QByteArray>& current,
- const QList<QByteArray>& previous)
+void DolphinItemListView::onVisibleRolesChanged(const QList<QByteArray> ¤t, const QList<QByteArray> &previous)
{
KFileItemListView::onVisibleRolesChanged(current, previous);
updateGridSize();
void DolphinItemListView::updateFont()
{
- const ViewModeSettings settings(viewMode());
+ const ViewModeSettings settings(itemLayout());
if (settings.useSystemFont()) {
KItemListView::updateFont();
} else {
- QFont font(settings.fontFamily(), qRound(settings.fontSize()));
- font.setItalic(settings.italicFont());
- font.setWeight(settings.fontWeight());
- font.setPointSizeF(settings.fontSize());
+ QFont font(settings.viewFont());
KItemListStyleOption option = styleOption();
option.font = font;
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();
- horizontalMargin = 4;
- verticalMargin = 8;
+ const auto margin = style()->pixelMetric(QStyle::PM_SizeGripSize);
+ horizontalMargin = margin;
+ verticalMargin = margin;
maxTextLines = IconsModeSettings::maximumTextLines();
break;
}
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;
-}
-
+#include "moc_dolphinitemlistview.cpp"