#include "viewpropertiesdialog.h"
#include "additionalinfodialog.h"
+#include "kitemviews/kfileitemmodel.h"
#include "views/dolphinview.h"
-#include "settings/dolphinsettings.h"
#include "dolphin_generalsettings.h"
#include "dolphin_iconsmodesettings.h"
#include "viewpropsprogressinfo.h"
-#include <config-nepomuk.h>
-#ifdef HAVE_NEPOMUK
-#include <Nepomuk/ResourceManager>
-#endif
+#include <config-baloo.h>
#include <KComponentData>
#include <KLocale>
m_useAsDefault(0)
{
Q_ASSERT(dolphinView);
- const bool useGlobalViewProps = DolphinSettings::instance().generalSettings()->globalViewProps();
+ const bool useGlobalViewProps = GeneralSettings::globalViewProps();
setCaption(i18nc("@title:window", "View Properties"));
setButtons(KDialog::Ok | KDialog::Cancel | KDialog::Apply);
m_sortOrder->addItem(i18nc("@item:inlistbox Sort", "Ascending"));
m_sortOrder->addItem(i18nc("@item:inlistbox Sort", "Descending"));
- // TODO: Provide a kind of SortingInfoAccessor similar to AdditionalInfoAccessor
- // to assure that adding a sort-role requires to change only one file
m_sorting = new KComboBox(sortingBox);
- m_sorting->addItem(i18nc("@item:inlistbox Sort", "By Name"));
- m_sorting->addItem(i18nc("@item:inlistbox Sort", "By Size"));
- m_sorting->addItem(i18nc("@item:inlistbox Sort", "By Date"));
- m_sorting->addItem(i18nc("@item:inlistbox Sort", "By Permissions"));
- m_sorting->addItem(i18nc("@item:inlistbox Sort", "By Owner"));
- m_sorting->addItem(i18nc("@item:inlistbox Sort", "By Group"));
- m_sorting->addItem(i18nc("@item:inlistbox Sort", "By Type"));
- m_sorting->addItem(i18nc("@item:inlistbox Sort", "By Link Destination"));
- m_sorting->addItem(i18nc("@item:inlistbox Sort", "By Path"));
+ const QList<KFileItemModel::RoleInfo> rolesInfo = KFileItemModel::rolesInformation();
+ foreach (const KFileItemModel::RoleInfo& info, rolesInfo) {
+ m_sorting->addItem(info.translation, info.role);
+ }
m_sortFoldersFirst = new QCheckBox(i18nc("@option:check", "Show folders first"));
m_previewsShown = new QCheckBox(i18nc("@option:check", "Show preview"));
connect(m_previewsShown, SIGNAL(clicked()),
this, SLOT(slotShowPreviewChanged()));
connect(m_showInGroups, SIGNAL(clicked()),
- this, SLOT(slotCategorizedSortingChanged()));
+ this, SLOT(slotGroupedSortingChanged()));
connect(m_showHiddenFiles, SIGNAL(clicked()),
this, SLOT(slotShowHiddenFilesChanged()));
void ViewPropertiesDialog::slotSortingChanged(int index)
{
- m_viewProps->setSorting(static_cast<DolphinView::Sorting>(index));
+ const QByteArray role = m_sorting->itemData(index).toByteArray();
+ m_viewProps->setSortRole(role);
markAsDirty(true);
}
markAsDirty(true);
}
-void ViewPropertiesDialog::slotCategorizedSortingChanged()
+void ViewPropertiesDialog::slotGroupedSortingChanged()
{
m_viewProps->setGroupedSorting(m_showInGroups->isChecked());
markAsDirty(true);
void ViewPropertiesDialog::configureAdditionalInfo()
{
- QList<DolphinView::AdditionalInfo> infoList = m_viewProps->additionalInfoList();
- const bool useDefaultInfo = (m_viewProps->viewMode() == DolphinView::DetailsView) &&
- (infoList.isEmpty() || infoList.contains(DolphinView::NoInfo));
- if (useDefaultInfo) {
+ QList<QByteArray> visibleRoles = m_viewProps->visibleRoles();
+ const bool useDefaultRoles = (m_viewProps->viewMode() == DolphinView::DetailsView) && visibleRoles.isEmpty();
+ if (useDefaultRoles) {
// Using the details view without any additional information (-> additional column)
// makes no sense and leads to a usability problem as no viewport area is available
// anymore. Hence as fallback provide at least a size and date column.
- infoList.clear();
- infoList.append(DolphinView::SizeInfo);
- infoList.append(DolphinView::DateInfo);
- m_viewProps->setAdditionalInfoList(infoList);
+ visibleRoles.clear();
+ visibleRoles.append("text");
+ visibleRoles.append("size");
+ visibleRoles.append("date");
+ m_viewProps->setVisibleRoles(visibleRoles);
}
- QPointer<AdditionalInfoDialog> dialog = new AdditionalInfoDialog(this, infoList);
+ QPointer<AdditionalInfoDialog> dialog = new AdditionalInfoDialog(this, visibleRoles);
if (dialog->exec() == QDialog::Accepted) {
- m_viewProps->setAdditionalInfoList(dialog->informationList());
+ m_viewProps->setVisibleRoles(dialog->visibleRoles());
markAsDirty(true);
}
delete dialog;
// For directories where no .directory file is available, the .directory
// file stored for the global view properties is used as fallback. To update
// this file we temporary turn on the global view properties mode.
- GeneralSettings* settings = DolphinSettings::instance().generalSettings();
- Q_ASSERT(!settings->globalViewProps());
+ Q_ASSERT(!GeneralSettings::globalViewProps());
- settings->setGlobalViewProps(true);
+ GeneralSettings::setGlobalViewProps(true);
ViewProperties defaultProps(m_dolphinView->url());
defaultProps.setDirProperties(*m_viewProps);
defaultProps.save();
- settings->setGlobalViewProps(false);
+ GeneralSettings::setGlobalViewProps(false);
}
if (applyToAllFolders) {
// Updating the global view properties time stamp in the general settings makes
// all existing viewproperties invalid, as they have a smaller time stamp.
- GeneralSettings* settings = DolphinSettings::instance().generalSettings();
+ GeneralSettings* settings = GeneralSettings::self();
settings->setViewPropsTimestamp(QDateTime::currentDateTime());
+ settings->writeConfig();
}
m_dolphinView->setMode(m_viewProps->viewMode());
- m_dolphinView->setSorting(m_viewProps->sorting());
+ m_dolphinView->setSortRole(m_viewProps->sortRole());
m_dolphinView->setSortOrder(m_viewProps->sortOrder());
m_dolphinView->setSortFoldersFirst(m_viewProps->sortFoldersFirst());
m_dolphinView->setGroupedSorting(m_viewProps->groupedSorting());
- m_dolphinView->setAdditionalInfoList(m_viewProps->additionalInfoList());
+ m_dolphinView->setVisibleRoles(m_viewProps->visibleRoles());
m_dolphinView->setPreviewsShown(m_viewProps->previewsShown());
m_dolphinView->setHiddenFilesShown(m_viewProps->hiddenFilesShown());
// Load sort order and sorting
const int sortOrderIndex = (m_viewProps->sortOrder() == Qt::AscendingOrder) ? 0 : 1;
m_sortOrder->setCurrentIndex(sortOrderIndex);
- m_sorting->setCurrentIndex(m_viewProps->sorting());
+
+ const QList<KFileItemModel::RoleInfo> rolesInfo = KFileItemModel::rolesInformation();
+ int sortRoleIndex = 0;
+ for (int i = 0; i < rolesInfo.count(); ++i) {
+ if (rolesInfo[i].role == m_viewProps->sortRole()) {
+ sortRoleIndex = i;
+ break;
+ }
+ }
+ m_sorting->setCurrentIndex(sortRoleIndex);
+
m_sortFoldersFirst->setChecked(m_viewProps->sortFoldersFirst());
// Load show preview, show in groups and show hidden files settings