X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/d3496b12310d9fec0e52e537c341e87fcaa2f8b5..c8d8556950005dfd96ebdb41d2f43ad90356367c:/src/settings/viewpropertiesdialog.cpp diff --git a/src/settings/viewpropertiesdialog.cpp b/src/settings/viewpropertiesdialog.cpp index 2a35f7eb8..c07c072d1 100644 --- a/src/settings/viewpropertiesdialog.cpp +++ b/src/settings/viewpropertiesdialog.cpp @@ -22,7 +22,6 @@ #include "additionalinfodialog.h" #include "views/dolphinview.h" -#include "settings/dolphinsettings.h" #include "dolphin_generalsettings.h" #include "dolphin_iconsmodesettings.h" #include "viewpropsprogressinfo.h" @@ -52,7 +51,6 @@ #include #include -#include #include ViewPropertiesDialog::ViewPropertiesDialog(DolphinView* dolphinView) : @@ -64,7 +62,7 @@ ViewPropertiesDialog::ViewPropertiesDialog(DolphinView* dolphinView) : m_sortOrder(0), m_sorting(0), m_sortFoldersFirst(0), - m_showPreview(0), + m_previewsShown(0), m_showInGroups(0), m_showHiddenFiles(0), m_additionalInfo(0), @@ -74,7 +72,7 @@ ViewPropertiesDialog::ViewPropertiesDialog(DolphinView* dolphinView) : 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); @@ -96,9 +94,9 @@ ViewPropertiesDialog::ViewPropertiesDialog(DolphinView* dolphinView) : QLabel* viewModeLabel = new QLabel(i18nc("@label:listbox", "View mode:"), propsGrid); m_viewMode = new KComboBox(propsGrid); - m_viewMode->addItem(KIcon("view-list-icons"), i18nc("@item:inlistbox", "Icons")); - m_viewMode->addItem(KIcon("view-list-details"), i18nc("@item:inlistbox", "Details")); - m_viewMode->addItem(KIcon("view-file-columns"), i18nc("@item:inlistbox", "Column")); + m_viewMode->addItem(KIcon("view-list-icons"), i18nc("@item:inlistbox", "Icons"), DolphinView::IconsView); + m_viewMode->addItem(KIcon("view-list-details"), i18nc("@item:inlistbox", "Compact"), DolphinView::CompactView); + m_viewMode->addItem(KIcon("view-list-tree"), i18nc("@item:inlistbox", "Details"), DolphinView::DetailsView); QLabel* sortingLabel = new QLabel(i18nc("@label:listbox", "Sorting:"), propsGrid); QWidget* sortingBox = new QWidget(propsGrid); @@ -107,6 +105,8 @@ ViewPropertiesDialog::ViewPropertiesDialog(DolphinView* dolphinView) : 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")); @@ -115,17 +115,11 @@ ViewPropertiesDialog::ViewPropertiesDialog(DolphinView* dolphinView) : 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")); -#ifdef HAVE_NEPOMUK - // TODO: Hided "sort by rating" and "sort by tags" as without caching the performance - // is too slow currently (Nepomuk will support caching in future releases). - // - // if (!Nepomuk::ResourceManager::instance()->init()) { - // m_sorting->addItem(i18nc("@item:inlistbox Sort", "By Rating")); - // m_sorting->addItem(i18nc("@item:inlistbox Sort", "By Tags")); - // } -#endif + m_sorting->addItem(i18nc("@item:inlistbox Sort", "By Link Destination")); + m_sorting->addItem(i18nc("@item:inlistbox Sort", "By Path")); + m_sortFoldersFirst = new QCheckBox(i18nc("@option:check", "Show folders first")); - m_showPreview = new QCheckBox(i18nc("@option:check", "Show preview")); + m_previewsShown = new QCheckBox(i18nc("@option:check", "Show preview")); m_showInGroups = new QCheckBox(i18nc("@option:check", "Show in groups")); m_showHiddenFiles = new QCheckBox(i18nc("@option:check", "Show hidden files")); @@ -146,7 +140,7 @@ ViewPropertiesDialog::ViewPropertiesDialog(DolphinView* dolphinView) : QVBoxLayout* propsBoxLayout = new QVBoxLayout(propsBox); propsBoxLayout->addWidget(propsGrid); propsBoxLayout->addWidget(m_sortFoldersFirst); - propsBoxLayout->addWidget(m_showPreview); + propsBoxLayout->addWidget(m_previewsShown); propsBoxLayout->addWidget(m_showInGroups); propsBoxLayout->addWidget(m_showHiddenFiles); propsBoxLayout->addWidget(m_additionalInfo); @@ -163,10 +157,10 @@ ViewPropertiesDialog::ViewPropertiesDialog(DolphinView* dolphinView) : this, SLOT(configureAdditionalInfo())); connect(m_sortFoldersFirst, SIGNAL(clicked()), this, SLOT(slotSortFoldersFirstChanged())); - connect(m_showPreview, SIGNAL(clicked()), + 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())); @@ -247,18 +241,15 @@ void ViewPropertiesDialog::slotApply() void ViewPropertiesDialog::slotViewModeChanged(int index) { - m_viewProps->setViewMode(static_cast(index)); + const QVariant itemData = m_viewMode->itemData(index); + const DolphinView::Mode viewMode = static_cast(itemData.toInt()); + m_viewProps->setViewMode(viewMode); markAsDirty(true); - - const DolphinView::Mode mode = m_viewProps->viewMode(); - m_showInGroups->setEnabled(mode == DolphinView::IconsView); - m_additionalInfo->setEnabled(mode != DolphinView::ColumnView); } void ViewPropertiesDialog::slotSortingChanged(int index) { - const DolphinView::Sorting sorting = DolphinSortFilterProxyModel::sortingForColumn(index); - m_viewProps->setSorting(sorting); + m_viewProps->setSorting(static_cast(index)); markAsDirty(true); } @@ -269,9 +260,9 @@ void ViewPropertiesDialog::slotSortOrderChanged(int index) markAsDirty(true); } -void ViewPropertiesDialog::slotCategorizedSortingChanged() +void ViewPropertiesDialog::slotGroupedSortingChanged() { - m_viewProps->setCategorizedSorting(m_showInGroups->isChecked()); + m_viewProps->setGroupedSorting(m_showInGroups->isChecked()); markAsDirty(true); } @@ -284,15 +275,15 @@ void ViewPropertiesDialog::slotSortFoldersFirstChanged() void ViewPropertiesDialog::slotShowPreviewChanged() { - const bool show = m_showPreview->isChecked(); - m_viewProps->setShowPreview(show); + const bool show = m_previewsShown->isChecked(); + m_viewProps->setPreviewsShown(show); markAsDirty(true); } void ViewPropertiesDialog::slotShowHiddenFilesChanged() { const bool show = m_showHiddenFiles->isChecked(); - m_viewProps->setShowHiddenFiles(show); + m_viewProps->setHiddenFilesShown(show); markAsDirty(true); } @@ -304,22 +295,22 @@ void ViewPropertiesDialog::markAsDirty(bool isDirty) void ViewPropertiesDialog::configureAdditionalInfo() { - KFileItemDelegate::InformationList info = m_viewProps->additionalInfo(); + QList infoList = m_viewProps->additionalInfoList(); const bool useDefaultInfo = (m_viewProps->viewMode() == DolphinView::DetailsView) && - (info.isEmpty() || info.contains(KFileItemDelegate::NoInformation)); + (infoList.isEmpty() || infoList.contains(DolphinView::NoInfo)); if (useDefaultInfo) { // 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. - info.clear(); - info.append(KFileItemDelegate::Size); - info.append(KFileItemDelegate::ModificationTime); - m_viewProps->setAdditionalInfo(info); + infoList.clear(); + infoList.append(DolphinView::SizeInfo); + infoList.append(DolphinView::DateInfo); + m_viewProps->setAdditionalInfoList(infoList); } - QPointer dialog = new AdditionalInfoDialog(this, info); + QPointer dialog = new AdditionalInfoDialog(this, infoList); if (dialog->exec() == QDialog::Accepted) { - m_viewProps->setAdditionalInfo(dialog->informationList()); + m_viewProps->setAdditionalInfoList(dialog->informationList()); markAsDirty(true); } delete dialog; @@ -356,14 +347,13 @@ void ViewPropertiesDialog::applyViewProperties() // 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) { @@ -374,18 +364,19 @@ void ViewPropertiesDialog::applyViewProperties() // 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->setSortOrder(m_viewProps->sortOrder()); m_dolphinView->setSortFoldersFirst(m_viewProps->sortFoldersFirst()); - m_dolphinView->setCategorizedSorting(m_viewProps->categorizedSorting()); - m_dolphinView->setAdditionalInfo(m_viewProps->additionalInfo()); - m_dolphinView->setShowPreview(m_viewProps->showPreview()); - m_dolphinView->setShowHiddenFiles(m_viewProps->showHiddenFiles()); + m_dolphinView->setGroupedSorting(m_viewProps->groupedSorting()); + m_dolphinView->setAdditionalInfoList(m_viewProps->additionalInfoList()); + m_dolphinView->setPreviewsShown(m_viewProps->previewsShown()); + m_dolphinView->setHiddenFilesShown(m_viewProps->hiddenFilesShown()); m_viewProps->save(); @@ -394,27 +385,24 @@ void ViewPropertiesDialog::applyViewProperties() void ViewPropertiesDialog::loadSettings() { - // load view mode - const int index = static_cast(m_viewProps->viewMode()); - m_viewMode->setCurrentIndex(index); + // Load view mode + switch (m_viewProps->viewMode()) { + case DolphinView::IconsView: m_viewMode->setCurrentIndex(0); break; + case DolphinView::CompactView: m_viewMode->setCurrentIndex(1); break; + case DolphinView::DetailsView: m_viewMode->setCurrentIndex(2); break; + default: break; + } - // load sort order and sorting + // 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 bool enabled = (index == DolphinView::DetailsView) || - (index == DolphinView::IconsView); - m_additionalInfo->setEnabled(enabled); - m_sortFoldersFirst->setChecked(m_viewProps->sortFoldersFirst()); - // load show preview, show in groups and show hidden files settings - m_showPreview->setChecked(m_viewProps->showPreview()); - - m_showInGroups->setChecked(m_viewProps->categorizedSorting()); - m_showInGroups->setEnabled(index == DolphinView::IconsView); // only the icons view supports categorized sorting - m_showHiddenFiles->setChecked(m_viewProps->showHiddenFiles()); + // Load show preview, show in groups and show hidden files settings + m_previewsShown->setChecked(m_viewProps->previewsShown()); + m_showInGroups->setChecked(m_viewProps->groupedSorting()); + m_showHiddenFiles->setChecked(m_viewProps->hiddenFilesShown()); markAsDirty(false); }