#include "dolphinitemlistcontainer.h"
+#include "dolphin_generalsettings.h"
#include "dolphin_iconsmodesettings.h"
#include "dolphin_detailsmodesettings.h"
#include "dolphin_compactmodesettings.h"
+#include "dolphinfileitemlistwidget.h"
+
#include <kitemviews/kfileitemlistview.h>
#include <kitemviews/kfileitemmodel.h>
#include <kitemviews/kitemlistcontroller.h>
controller()->setModel(new KFileItemModel(dirLister, this));
m_fileItemListView = new KFileItemListView();
+ m_fileItemListView->setWidgetCreator(new KItemListWidgetCreator<DolphinFileItemListWidget>());
+ m_fileItemListView->setEnabledSelectionToggles(GeneralSettings::showSelectionToggle());
controller()->setView(m_fileItemListView);
- KItemListStyleOption option;
-
- // TODO:
- option.font = parent->font();
- option.fontMetrics = QFontMetrics(parent->font());
-
+ updateFont();
updateGridSize();
-/*
- connect(this, SIGNAL(clicked(QModelIndex)),
- dolphinViewController, SLOT(requestTab(QModelIndex)));*/
-/*
- connect(this, SIGNAL(entered(QModelIndex)),
- dolphinViewController, SLOT(emitItemEntered(QModelIndex)));
- connect(this, SIGNAL(viewportEntered()),
- dolphinViewController, SLOT(emitViewportEntered()));*/
-
- // apply the icons mode settings to the widget
- //const IconsModeSettings* settings = DolphinSettings::instance().iconsModeSettings();
- //Q_ASSERT(settings);
-
- /*if (settings->useSystemFont()) {
- m_font = KGlobalSettings::generalFont();
- } else {
- m_font = QFont(settings->fontFamily(),
- qRound(settings->fontSize()),
- settings->fontWeight(),
- settings->italicFont());
- m_font.setPointSizeF(settings->fontSize());
- }
-
- setWordWrap(settings->numberOfTextlines() > 1);
-
- if (settings->arrangement() == QListView::TopToBottom) {
- setFlow(QListView::LeftToRight);
- m_decorationPosition = QStyleOptionViewItem::Top;
- m_displayAlignment = Qt::AlignHCenter;
- } else {
- setFlow(QListView::TopToBottom);
- m_decorationPosition = QStyleOptionViewItem::Left;
- m_displayAlignment = Qt::AlignLeft | Qt::AlignVCenter;
- }
-
- connect(m_categoryDrawer, SIGNAL(actionRequested(int,QModelIndex)), this, SLOT(categoryDrawerActionRequested(int,QModelIndex)));
- setCategoryDrawer(m_categoryDrawer);
-
- connect(KGlobalSettings::self(), SIGNAL(settingsChanged(int)),
- this, SLOT(slotGlobalSettingsChanged(int)));*/
-
- //updateGridSize(dolphinView->showPreview(), 0);
- /*m_extensionsFactory = new ViewExtensionsFactory(this, dolphinViewController, viewModeController);*/
}
DolphinItemListContainer::~DolphinItemListContainer()
CompactModeSettings::self()->writeConfig();
DetailsModeSettings::self()->writeConfig();
- KItemListView* view = controller()->view();
controller()->setView(0);
- delete view;
+ delete m_fileItemListView;
+ m_fileItemListView = 0;
}
void DolphinItemListContainer::setPreviewsShown(bool show)
return m_fileItemListView->previewsShown();
}
-void DolphinItemListContainer::setVisibleRoles(const QHash<QByteArray, int>& roles)
+void DolphinItemListContainer::setVisibleRoles(const QList<QByteArray>& roles)
{
m_fileItemListView->setVisibleRoles(roles);
updateGridSize();
}
-QHash<QByteArray, int> DolphinItemListContainer::visibleRoles() const
+QList<QByteArray> DolphinItemListContainer::visibleRoles() const
{
return m_fileItemListView->visibleRoles();
}
m_zoomLevel = level;
+ ViewModeSettings settings(viewMode());
if (previewsShown()) {
const int previewSize = ZoomLevelInfo::iconSizeForZoomLevel(level);
-
- switch (itemLayout()) {
- case KFileItemListView::IconsLayout: IconsModeSettings::setPreviewSize(previewSize); break;
- case KFileItemListView::CompactLayout: CompactModeSettings::setPreviewSize(previewSize); break;
- case KFileItemListView::DetailsLayout: DetailsModeSettings::setPreviewSize(previewSize); break;
- default: Q_ASSERT(false); break;
- }
+ settings.setPreviewSize(previewSize);
} else {
const int iconSize = ZoomLevelInfo::iconSizeForZoomLevel(level);
- switch (itemLayout()) {
- case KFileItemListView::IconsLayout: IconsModeSettings::setIconSize(iconSize); break;
- case KFileItemListView::CompactLayout: CompactModeSettings::setIconSize(iconSize); break;
- case KFileItemListView::DetailsLayout: DetailsModeSettings::setIconSize(iconSize); break;
- default: Q_ASSERT(false); break;
- }
+ settings.setIconSize(iconSize);
}
updateGridSize();
switch (layout) {
case KFileItemListView::IconsLayout:
+ m_fileItemListView->setScrollOrientation(Qt::Vertical);
+ m_fileItemListView->setHeaderShown(false);
+ break;
case KFileItemListView::DetailsLayout:
m_fileItemListView->setScrollOrientation(Qt::Vertical);
+ m_fileItemListView->setHeaderShown(true);
break;
case KFileItemListView::CompactLayout:
m_fileItemListView->setScrollOrientation(Qt::Horizontal);
+ m_fileItemListView->setHeaderShown(false);
break;
default:
Q_ASSERT(false);
break;
}
+ updateFont();
updateGridSize();
endTransaction();
}
m_fileItemListView->endTransaction();
}
+void DolphinItemListContainer::refresh()
+{
+ ViewModeSettings settings(viewMode());
+ settings.readConfig();
+
+ updateFont();
+ updateGridSize();
+}
+
void DolphinItemListContainer::updateGridSize()
{
- // Calculate the size of the icon
- int iconSize;
- if (previewsShown()) {
- switch (itemLayout()) {
- case KFileItemListView::IconsLayout: iconSize = IconsModeSettings::previewSize(); break;
- case KFileItemListView::CompactLayout: iconSize = CompactModeSettings::previewSize(); break;
- case KFileItemListView::DetailsLayout: iconSize = DetailsModeSettings::previewSize(); break;
- default: Q_ASSERT(false); break;
- }
- } else {
- switch (itemLayout()) {
- case KFileItemListView::IconsLayout: iconSize = IconsModeSettings::iconSize(); break;
- case KFileItemListView::CompactLayout: iconSize = CompactModeSettings::iconSize(); break;
- case KFileItemListView::DetailsLayout: iconSize = DetailsModeSettings::iconSize(); break;
- default: Q_ASSERT(false); break;
- }
- }
+ const ViewModeSettings settings(viewMode());
+ // Calculate the size of the icon
+ const int iconSize = previewsShown() ? settings.previewSize() : settings.iconSize();
m_zoomLevel = ZoomLevelInfo::zoomLevelForIconSize(QSize(iconSize, iconSize));
KItemListStyleOption styleOption = m_fileItemListView->styleOption();
m_fileItemListView->setItemSize(QSizeF(itemWidth, itemHeight));
}
+void DolphinItemListContainer::updateFont()
+{
+ KItemListStyleOption styleOption = m_fileItemListView->styleOption();
+
+ const ViewModeSettings settings(viewMode());
+
+ QFont font(settings.fontFamily(), qRound(settings.fontSize()));
+ font.setItalic(settings.italicFont());
+ font.setWeight(settings.fontWeight());
+ font.setPointSizeF(settings.fontSize());
+
+ styleOption.font = font;
+ styleOption.fontMetrics = QFontMetrics(font);
+
+ m_fileItemListView->setStyleOption(styleOption);
+}
+
+ViewModeSettings::ViewMode DolphinItemListContainer::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: Q_ASSERT(false); break;
+ }
+
+ return mode;
+}
+
#include "dolphinitemlistcontainer.moc"