xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0
http://www.kde.org/standards/kcfg/1.0/kcfg.xsd" >
+ <include>kfileitemdelegate.h</include>
<kcfgfile arg="true" />
<group name="Settings">
<max code="true">Qt::Descending</max>
</entry>
+ <entry name="AdditionalInfo" type="Int">
+ <label>Additional information</label>
+ <default code="true">KFileItemDelegate::NoInformation</default>
+ </entry>
+
<entry name="Timestamp" type="DateTime" >
<label>Properties last changed</label>
<whatsthis>The last time these properties were changed by the user.</whatsthis>
<!DOCTYPE kcfg SYSTEM "http://www.kde.org/standards/kcfg/1.0/kcfg.dtd">
<kcfg>
<kcfgfile name="dolphinrc"/>
- <include>kfileitemdelegate.h</include>
<include>kglobalsettings.h</include>
<include>kiconloader.h</include>
<include>QListView</include>
<label>Preview size</label>
<default code="true">K3Icon::SizeLarge</default>
</entry>
- <entry name="AdditionalInfo" type="Int">
- <label>Additional information</label>
- <default code="true">KFileItemDelegate::FriendlyMimeType</default>
- </entry>
</group>
</kcfg>
\ No newline at end of file
m_viewOptions = QTreeView::viewOptions();
m_viewOptions.font = QFont(settings->fontFamily(), settings->fontSize());
updateDecorationSize();
-
- KFileItemDelegate* delegate = new KFileItemDelegate(parent);
- setItemDelegate(delegate);
}
DolphinDetailsView::~DolphinDetailsView()
setFlow(QListView::TopToBottom);
m_viewOptions.decorationPosition = QStyleOptionViewItem::Left;
}
-
- KFileItemDelegate* delegate = new KFileItemDelegate(parent);
- const KFileItemDelegate::AdditionalInformation info =
- static_cast<KFileItemDelegate::AdditionalInformation>(settings->additionalInfo());
- delegate->setAdditionalInformation(info);
- setItemDelegate(delegate);
}
DolphinIconsView::~DolphinIconsView()
descending->setChecked(sortDescending);\r
}\r
\r
+void DolphinMainWindow::slotAdditionalInfoChanged(KFileItemDelegate::AdditionalInformation info)\r
+{\r
+ QAction* action = 0;\r
+ switch (info) {\r
+ case KFileItemDelegate::FriendlyMimeType:\r
+ action = actionCollection()->action("show_mime_info");\r
+ break;\r
+ case KFileItemDelegate::Size:\r
+ action = actionCollection()->action("show_size_info");\r
+ break;\r
+ case KFileItemDelegate::ModificationTime:\r
+ action = actionCollection()->action("show_date_info");\r
+ break;\r
+ case KFileItemDelegate::NoInformation:\r
+ default:\r
+ action = actionCollection()->action("clear_info");\r
+ break;\r
+ }\r
+\r
+ if (action != 0) {\r
+ KToggleAction* toggleAction = static_cast<KToggleAction*>(action);\r
+ toggleAction->setChecked(true);\r
+ }\r
+}\r
+\r
void DolphinMainWindow::slotSelectionChanged()\r
{\r
updateEditActions();\r
m_activeView->setSortOrder(order);\r
}\r
\r
+void DolphinMainWindow::clearInfo()\r
+{\r
+ m_activeView->setAdditionalInfo(KFileItemDelegate::NoInformation);\r
+}\r
+\r
+void DolphinMainWindow::showMimeInfo()\r
+{\r
+ clearStatusBar();\r
+ m_activeView->setAdditionalInfo(KFileItemDelegate::FriendlyMimeType);\r
+}\r
+\r
+void DolphinMainWindow::showSizeInfo()\r
+{\r
+ clearStatusBar();\r
+ m_activeView->setAdditionalInfo(KFileItemDelegate::Size);\r
+}\r
+\r
+void DolphinMainWindow::showDateInfo()\r
+{\r
+ clearStatusBar();\r
+ m_activeView->setAdditionalInfo(KFileItemDelegate::ModificationTime);\r
+}\r
+\r
void DolphinMainWindow::toggleSplitView()\r
{\r
if (m_view[SecondaryIdx] == 0) {\r
sortDescending->setText(i18n("Descending"));\r
connect(sortDescending, SIGNAL(triggered()), this, SLOT(toggleSortOrder()));\r
\r
+ KToggleAction* clearInfo = actionCollection()->add<KToggleAction>("clear_info");\r
+ clearInfo->setText(i18n("No Information"));\r
+ connect(clearInfo, SIGNAL(triggered()), this, SLOT(clearInfo()));\r
+\r
+ KToggleAction* showMimeInfo = actionCollection()->add<KToggleAction>("show_mime_info");\r
+ showMimeInfo->setText(i18n("MIME Type"));\r
+ connect(showMimeInfo, SIGNAL(triggered()), this, SLOT(showMimeInfo()));\r
+\r
+ KToggleAction* showSizeInfo = actionCollection()->add<KToggleAction>("show_size_info");\r
+ showSizeInfo->setText(i18n("Size"));\r
+ connect(showSizeInfo, SIGNAL(triggered()), this, SLOT(showSizeInfo()));\r
+\r
+ KToggleAction* showDateInfo = actionCollection()->add<KToggleAction>("show_date_info");\r
+ showDateInfo->setText(i18n("Date"));\r
+ connect(showDateInfo, SIGNAL(triggered()), this, SLOT(showDateInfo()));\r
+\r
+ QActionGroup* infoGroup = new QActionGroup(this);\r
+ infoGroup->addAction(clearInfo);\r
+ infoGroup->addAction(showMimeInfo);\r
+ infoGroup->addAction(showSizeInfo);\r
+ infoGroup->addAction(showDateInfo);\r
+\r
KToggleAction* showPreview = actionCollection()->add<KToggleAction>("show_preview");\r
showPreview->setText(i18n("Preview"));\r
showPreview->setIcon(KIcon("thumbnail-show"));\r
\r
slotSortingChanged(m_activeView->sorting());\r
slotSortOrderChanged(m_activeView->sortOrder());\r
+ slotAdditionalInfoChanged(m_activeView->additionalInfo());\r
\r
KToggleAction* showFilterBarAction =\r
static_cast<KToggleAction*>(actionCollection()->action("show_filter_bar"));\r
this, SLOT(slotSortingChanged(DolphinView::Sorting)));\r
connect(view, SIGNAL(sortOrderChanged(Qt::SortOrder)),\r
this, SLOT(slotSortOrderChanged(Qt::SortOrder)));\r
+ connect(view, SIGNAL(additionalInfoChanged(KFileItemDelegate::AdditionalInformation)),\r
+ this, SLOT(slotAdditionalInfoChanged(KFileItemDelegate::AdditionalInformation)));\r
connect(view, SIGNAL(selectionChanged()),\r
this, SLOT(slotSelectionChanged()));\r
connect(view, SIGNAL(showFilterBarChanged(bool)),\r
/** Switches between an ascending and descending sorting order. */
void toggleSortOrder();
+ /**
+ * Clears any additional information for an item except for the
+ * name and the icon.
+ */
+ void clearInfo();
+
+ /** Shows the MIME type as additional information for the item. */
+ void showMimeInfo();
+
+ /** Shows the size as additional information for the item. */
+ void showSizeInfo();
+
+ /** Shows the date as additional information for the item. */
+ void showDateInfo();
+
/**
* Switches between one and two views:
* If one view is visible, it will get split into two views.
/** Updates the state of the 'Sort Ascending/Descending' action. */
void slotSortOrderChanged(Qt::SortOrder order);
+ /** Updates the state of the 'Additional Information' actions. */
+ void slotAdditionalInfoChanged(KFileItemDelegate::AdditionalInformation info);
+
/** Updates the state of the 'Edit' menu actions. */
void slotSelectionChanged();
<Separator/>
<Action name="descending" />
</Menu>
+ <Menu name="additional_info">
+ <text>Additional Information</text>
+ <Action name="clear_info" />
+ <Action name="show_mime_info" />
+ <Action name="show_size_info" />
+ <Action name="show_date_info" />
+ </Menu>
<Action name="show_preview" />
<Action name="show_hidden_files" />
<Separator/>
m_controller(0),
m_iconsView(0),
m_detailsView(0),
+ m_fileItemDelegate(0),
m_filterBar(0),
m_statusBar(0),
m_dirModel(0),
return m_proxyModel->sortOrder();
}
+void DolphinView::setAdditionalInfo(KFileItemDelegate::AdditionalInformation info)
+{
+ ViewProperties props(m_urlNavigator->url());
+ props.setAdditionalInfo(info);
+
+ m_fileItemDelegate->setAdditionalInformation(info);
+
+ emit additionalInfoChanged(info);
+ reload();
+}
+
+KFileItemDelegate::AdditionalInformation DolphinView::additionalInfo() const
+{
+ return m_fileItemDelegate->additionalInformation();
+}
+
void DolphinView::goBack()
{
m_urlNavigator->goBack();
emit sortOrderChanged(sortOrder);
}
+ KFileItemDelegate::AdditionalInformation info = props.additionalInfo();
+ if (info != m_fileItemDelegate->additionalInformation()) {
+ m_fileItemDelegate->setAdditionalInformation(info);
+
+ emit additionalInfoChanged(info);
+ }
+
const bool showPreview = props.showPreview();
if (showPreview != m_controller->showPreview()) {
m_controller->setShowPreview(showPreview);
view->deleteLater();
m_iconsView = 0;
m_detailsView = 0;
+ m_fileItemDelegate = 0;
}
assert(m_iconsView == 0);
break;
}
+
+ m_fileItemDelegate = new KFileItemDelegate(view);
+ view->setItemDelegate(m_fileItemDelegate);
+
view->setModel(m_proxyModel);
view->setSelectionMode(QAbstractItemView::ExtendedSelection);
#include <kparts/part.h>
#include <kfileitem.h>
+#include <kfileitemdelegate.h>
#include <kfileiconview.h>
#include <kio/job.h>
class DolphinController;
class FilterBar;
+class KFileItemDelegate;
class KUrl;
class KDirModel;
class UrlNavigator;
/** Returns the current used sort order (Qt::Ascending or Qt::Descending). */
Qt::SortOrder sortOrder() const;
+ /** Sets the additional information which should be shown for the items. */
+ void setAdditionalInfo(KFileItemDelegate::AdditionalInformation info);
+
+ /** Returns the additional information which should be shown for the items. */
+ KFileItemDelegate::AdditionalInformation additionalInfo() const;
+
/** Refreshs the view settings by reading out the stored settings. */
void refreshSettings();
/** Is emitted if the sort order (ascending or descending) has been changed. */
void sortOrderChanged(Qt::SortOrder order);
+ /** Is emitted if the addtional information for an item has been changed. */
+ void additionalInfoChanged(KFileItemDelegate::AdditionalInformation info);
+
/**
* Is emitted if information of an item is requested to be shown e. g. in the sidebar.
* It the URL is empty, no item information request is pending.
DolphinController* m_controller;
DolphinIconsView* m_iconsView;
DolphinDetailsView* m_detailsView;
+ KFileItemDelegate* m_fileItemDelegate;
FilterBar* m_filterBar;
DolphinStatusBar* m_statusBar;
m_fontFamilyBox(0),
m_fontSizeBox(0),
m_textlinesCountBox(0),
- m_additionalInfo(0),
m_arrangementBox(0),
m_gridSpacingBox(0)
{
m_textWidthBox->addItem(i18n("Medium"));
m_textWidthBox->addItem(i18n("Large"));
- new QLabel(i18n("Additional information:"), textGroup);
- m_additionalInfo = new QComboBox(textGroup);
- m_additionalInfo->addItem(i18n("No Information"), KFileItemDelegate::NoInformation);
- m_additionalInfo->addItem(i18n("MIME Type"), KFileItemDelegate::FriendlyMimeType);
- m_additionalInfo->addItem(i18n("Size"), KFileItemDelegate::Size);
- m_additionalInfo->addItem(i18n("Date"), KFileItemDelegate::ModificationTime);
- const int index = m_additionalInfo->findData(settings->additionalInfo());
- m_additionalInfo->setCurrentIndex(index);
-
Q3GroupBox* gridGroup = new Q3GroupBox(2, Qt::Horizontal, i18n("Grid"), this);
gridGroup->setSizePolicy(sizePolicy);
gridGroup->setMargin(margin);
settings->setFontFamily(m_fontFamilyBox->currentFont().family());
settings->setFontSize(fontSize);
settings->setNumberOfTextlines(m_textlinesCountBox->value());
- const int index = m_additionalInfo->currentIndex();
- settings->setAdditionalInfo(m_additionalInfo->itemData(index).toInt());
settings->setGridSpacing(GRID_SPACING_BASE +
m_gridSpacingBox->currentIndex() * GRID_SPACING_INC);
QFontComboBox* m_fontFamilyBox;
QSpinBox* m_fontSizeBox;
QSpinBox* m_textlinesCountBox;
- QComboBox* m_additionalInfo;
QComboBox* m_arrangementBox;
QComboBox* m_gridSpacingBox;
return static_cast<Qt::SortOrder>(m_node->sortOrder());
}
+void ViewProperties::setAdditionalInfo(KFileItemDelegate::AdditionalInformation info)
+{
+ if (m_node->additionalInfo() != info) {
+ m_node->setAdditionalInfo(info);
+ updateTimeStamp();
+ }
+}
+
+KFileItemDelegate::AdditionalInformation ViewProperties::additionalInfo() const
+{
+ return static_cast<KFileItemDelegate::AdditionalInformation>(m_node->additionalInfo());
+}
+
+
void ViewProperties::setDirProperties(const ViewProperties& props)
{
setViewMode(props.viewMode());
setShowHiddenFiles(props.showHiddenFiles());
setSorting(props.sorting());
setSortOrder(props.sortOrder());
+ setAdditionalInfo(props.additionalInfo());
}
void ViewProperties::setAutoSaveEnabled(bool autoSave)
#define VIEWPROPERTIES_H
#include <dolphinview.h>
+#include <kfileitemdelegate.h>
#include <kurl.h>
#include <qdatetime.h>
void setSortOrder(Qt::SortOrder sortOrder);
Qt::SortOrder sortOrder() const;
+ void setAdditionalInfo(KFileItemDelegate::AdditionalInformation info);
+ KFileItemDelegate::AdditionalInformation additionalInfo() const;
+
/**
* Sets the directory properties view mode, show preview,
* show hidden files, sorting and sort order like
m_viewMode(0),
m_sorting(0),
m_sortOrder(0),
+ m_additionalInfo(0),
m_showPreview(0),
m_showHiddenFiles(0),
m_applyToCurrentFolder(0),
const int sortOrderIdx = (m_viewProps->sortOrder() == Qt::Ascending) ? 0 : 1;
m_sortOrder->setCurrentIndex(sortOrderIdx);
+ QLabel* additionalInfoLabel = new QLabel(i18n("Additional information:"), propsBox);
+ m_additionalInfo = new QComboBox(propsBox);
+ m_additionalInfo->addItem(i18n("No Information"), KFileItemDelegate::NoInformation);
+ m_additionalInfo->addItem(i18n("MIME Type"), KFileItemDelegate::FriendlyMimeType);
+ m_additionalInfo->addItem(i18n("Size"), KFileItemDelegate::Size);
+ m_additionalInfo->addItem(i18n("Date"), KFileItemDelegate::ModificationTime);
+ const int addInfoIndex = m_additionalInfo->findData(m_viewProps->additionalInfo());
+ m_additionalInfo->setCurrentIndex(addInfoIndex);
+
m_showPreview = new QCheckBox(i18n("Show preview"), propsBox);
m_showPreview->setChecked(m_viewProps->showPreview());
propsBoxLayout->addWidget(m_sorting, 1, 1);
propsBoxLayout->addWidget(sortOrderLabel, 2, 0);
propsBoxLayout->addWidget(m_sortOrder, 2, 1);
- propsBoxLayout->addWidget(m_showPreview, 3, 0);
- propsBoxLayout->addWidget(m_showHiddenFiles, 4, 0);
+ propsBoxLayout->addWidget(additionalInfoLabel, 3, 0);
+ propsBoxLayout->addWidget(m_additionalInfo, 3, 1);
+ propsBoxLayout->addWidget(m_showPreview, 4, 0);
+ propsBoxLayout->addWidget(m_showHiddenFiles, 5, 0);
topLayout->addWidget(propsBox);
this, SLOT(slotSortingChanged(int)));
connect(m_sortOrder, SIGNAL(activated(int)),
this, SLOT(slotSortOrderChanged(int)));
+ connect(m_additionalInfo, SIGNAL(activated(int)),
+ this, SLOT(slotAdditionalInfoChanged(int)));
connect(m_showPreview, SIGNAL(clicked()),
this, SLOT(slotShowPreviewChanged()));
connect(m_showHiddenFiles, SIGNAL(clicked()),
m_isDirty = true;
}
+void ViewPropertiesDialog::slotAdditionalInfoChanged(int index)
+{
+ KFileItemDelegate::AdditionalInformation info = KFileItemDelegate::NoInformation;
+ switch (index) {
+ case 1: info = KFileItemDelegate::FriendlyMimeType; break;
+ case 2: info = KFileItemDelegate::Size; break;
+ case 3: info = KFileItemDelegate::ModificationTime; break;
+ default: break;
+ }
+ m_viewProps->setAdditionalInfo(info);
+ m_isDirty = true;
+}
+
void ViewPropertiesDialog::slotShowPreviewChanged()
{
const bool show = m_showPreview->isChecked();
void slotViewModeChanged(int index);
void slotSortingChanged(int index);
void slotSortOrderChanged(int index);
+ void slotAdditionalInfoChanged(int index);
void slotShowPreviewChanged();
void slotShowHiddenFilesChanged();
void markAsDirty();
QComboBox* m_viewMode;
QComboBox* m_sorting;
QComboBox* m_sortOrder;
+ QComboBox* m_additionalInfo;
QCheckBox* m_showPreview;
QCheckBox* m_showHiddenFiles;
QRadioButton* m_applyToCurrentFolder;