#include <kitemviews/kitemliststyleoption.h>
#include <KGlobalSettings>
+#include <KGlobal>
#include <views/viewmodecontroller.h>
beginTransaction();
setEnabledSelectionToggles(GeneralSettings::showSelectionToggle());
-
- const bool expandableFolders = (itemLayout() && KFileItemListView::DetailsLayout) &&
- DetailsModeSettings::expandableFolders();
- setSupportsItemExpanding(expandableFolders);
+ setSupportsItemExpanding(itemLayoutSupportsItemExpanding(itemLayout()));
updateFont();
updateGridSize();
return new KItemListWidgetCreator<DolphinFileItemListWidget>();
}
-void DolphinItemListView::onItemLayoutChanged(ItemLayout current, ItemLayout previous)
+bool DolphinItemListView::itemLayoutSupportsItemExpanding(ItemLayout layout) const
{
- Q_UNUSED(previous);
+ return layout == DetailsLayout && DetailsModeSettings::expandableFolders();
+}
- if (current == DetailsLayout) {
- setSupportsItemExpanding(DetailsModeSettings::expandableFolders());
- setHeaderVisible(true);
- } else {
- setHeaderVisible(false);
- }
+void DolphinItemListView::onItemLayoutChanged(ItemLayout current, ItemLayout previous)
+{
+ setHeaderVisible(current == DetailsLayout);
updateFont();
updateGridSize();
+
+ KFileItemListView::onItemLayoutChanged(current, previous);
}
void DolphinItemListView::onPreviewsShownChanged(bool shown)
updateGridSize();
}
+void DolphinItemListView::updateFont()
+{
+ const ViewModeSettings settings(viewMode());
+
+ 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());
+
+ KItemListStyleOption option = styleOption();
+ option.font = font;
+ option.fontMetrics = QFontMetrics(font);
+
+ setStyleOption(option);
+ }
+}
+
void DolphinItemListView::updateGridSize()
{
const ViewModeSettings settings(viewMode());
// Calculate the item-width and item-height
int itemWidth;
int itemHeight;
- QSize maxTextSize;
+ int maxTextLines = 0;
+ int maxTextWidth = 0;
switch (itemLayout()) {
case KFileItemListView::IconsLayout: {
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
- // photos.
+ // showing photos.
const int minWidth = iconSize * 3 / 2;
itemWidth = qMax(itemWidth, minWidth);
}
}
itemHeight = padding * 3 + iconSize + option.fontMetrics.lineSpacing();
- if (IconsModeSettings::maximumTextLines() > 0) {
- // A restriction is given for the maximum number of textlines (0 means
- // having no restriction)
- const int additionalInfoCount = visibleRoles().count() - 1;
- const int maxAdditionalLines = additionalInfoCount + IconsModeSettings::maximumTextLines();
- maxTextSize.rheight() = option.fontMetrics.lineSpacing() * maxAdditionalLines;
- }
horizontalMargin = 4;
verticalMargin = 8;
+ maxTextLines = IconsModeSettings::maximumTextLines();
break;
}
case KFileItemListView::CompactLayout: {
if (CompactModeSettings::maximumTextWidthIndex() > 0) {
// A restriction is given for the maximum width of the text (0 means
// having no restriction)
- maxTextSize.rwidth() = option.fontMetrics.height() * 10 *
- CompactModeSettings::maximumTextWidthIndex();
+ maxTextWidth = option.fontMetrics.height() * 10 * CompactModeSettings::maximumTextWidthIndex();
}
horizontalMargin = 8;
option.horizontalMargin = horizontalMargin;
option.verticalMargin = verticalMargin;
option.iconSize = iconSize;
- option.maxTextSize = maxTextSize;
+ option.maxTextLines = maxTextLines;
+ option.maxTextWidth = maxTextWidth;
beginTransaction();
setStyleOption(option);
setItemSize(QSizeF(itemWidth, itemHeight));
endTransaction();
}
-void DolphinItemListView::updateFont()
-{
- KItemListStyleOption option = styleOption();
-
- const ViewModeSettings settings(viewMode());
-
- QFont font(settings.fontFamily(), qRound(settings.fontSize()));
- font.setItalic(settings.italicFont());
- font.setWeight(settings.fontWeight());
- font.setPointSizeF(settings.fontSize());
-
- option.font = font;
- option.fontMetrics = QFontMetrics(font);
-
- setStyleOption(option);
-}
-
ViewModeSettings::ViewMode DolphinItemListView::viewMode() const
{
ViewModeSettings::ViewMode mode;