diff options
Diffstat (limited to 'src/settings')
| -rw-r--r-- | src/settings/additionalinfodialog.cpp | 28 | ||||
| -rw-r--r-- | src/settings/additionalinfodialog.h | 9 | ||||
| -rw-r--r-- | src/settings/applyviewpropsjob.cpp | 2 | ||||
| -rw-r--r-- | src/settings/dolphin_directoryviewpropertysettings.kcfg | 8 | ||||
| -rw-r--r-- | src/settings/viewpropertiesdialog.cpp | 50 |
5 files changed, 48 insertions, 49 deletions
diff --git a/src/settings/additionalinfodialog.cpp b/src/settings/additionalinfodialog.cpp index 9b47e928f..6bcee4a1b 100644 --- a/src/settings/additionalinfodialog.cpp +++ b/src/settings/additionalinfodialog.cpp @@ -25,12 +25,12 @@ #include <QLabel> #include <QVBoxLayout> -#include "views/additionalinfoaccessor.h" +#include "views/rolesaccessor.h" AdditionalInfoDialog::AdditionalInfoDialog(QWidget* parent, - const QList<DolphinView::AdditionalInfo>& infoList) : + const QList<QByteArray>& visibleRoles) : KDialog(parent), - m_infoList(infoList), + m_visibleRoles(visibleRoles), m_checkBoxes() { setCaption(i18nc("@title:window", "Additional Information")); @@ -48,11 +48,11 @@ AdditionalInfoDialog::AdditionalInfoDialog(QWidget* parent, layout->addWidget(header); // Add checkboxes - const AdditionalInfoAccessor& infoAccessor = AdditionalInfoAccessor::instance(); - const QList<DolphinView::AdditionalInfo> keys = infoAccessor.keys(); - foreach (DolphinView::AdditionalInfo info, keys) { - QCheckBox* checkBox = new QCheckBox(infoAccessor.translation(info), mainWidget); - checkBox->setChecked(infoList.contains(info)); + const RolesAccessor& rolesAccessor = RolesAccessor::instance(); + const QList<QByteArray> roles = rolesAccessor.roles(); + foreach (const QByteArray& role, roles) { + QCheckBox* checkBox = new QCheckBox(rolesAccessor.translation(role), mainWidget); + checkBox->setChecked(visibleRoles.contains(role)); layout->addWidget(checkBox); m_checkBoxes.append(checkBox); } @@ -75,20 +75,20 @@ AdditionalInfoDialog::~AdditionalInfoDialog() saveDialogSize(dialogConfig, KConfigBase::Persistent); } -QList<DolphinView::AdditionalInfo> AdditionalInfoDialog::informationList() const +QList<QByteArray> AdditionalInfoDialog::visibleRoles() const { - return m_infoList; + return m_visibleRoles; } void AdditionalInfoDialog::slotOk() { - m_infoList.clear(); + m_visibleRoles.clear(); - const QList<DolphinView::AdditionalInfo> keys = AdditionalInfoAccessor::instance().keys(); + const QList<QByteArray> roles = RolesAccessor::instance().roles(); int index = 0; - foreach (DolphinView::AdditionalInfo info, keys) { + foreach (const QByteArray& role, roles) { if (m_checkBoxes[index]->isChecked()) { - m_infoList.append(info); + m_visibleRoles.append(role); } ++index; } diff --git a/src/settings/additionalinfodialog.h b/src/settings/additionalinfodialog.h index 6f38f617c..9048489cc 100644 --- a/src/settings/additionalinfodialog.h +++ b/src/settings/additionalinfodialog.h @@ -20,29 +20,28 @@ #ifndef ADDITIONALINFODIALOG_H #define ADDITIONALINFODIALOG_H -#include <views/dolphinview.h> #include <KDialog> #include <QList> class QCheckBox; /** - * @brief Dialog for changing the additional information properties of a directory. + * @brief Dialog for changing the additional information shown in the view. */ class AdditionalInfoDialog : public KDialog { Q_OBJECT public: - AdditionalInfoDialog(QWidget* parent, const QList<DolphinView::AdditionalInfo>& infoList); + AdditionalInfoDialog(QWidget* parent, const QList<QByteArray>& visibleRoles); virtual ~AdditionalInfoDialog(); - QList<DolphinView::AdditionalInfo> informationList() const; + QList<QByteArray> visibleRoles() const; private slots: void slotOk(); private: - QList<DolphinView::AdditionalInfo> m_infoList; + QList<QByteArray> m_visibleRoles; QList<QCheckBox*> m_checkBoxes; }; diff --git a/src/settings/applyviewpropsjob.cpp b/src/settings/applyviewpropsjob.cpp index 59f1c0b86..0c00783a0 100644 --- a/src/settings/applyviewpropsjob.cpp +++ b/src/settings/applyviewpropsjob.cpp @@ -34,7 +34,7 @@ ApplyViewPropsJob::ApplyViewPropsJob(const KUrl& dir, m_viewProps->setViewMode(viewProps.viewMode()); m_viewProps->setPreviewsShown(viewProps.previewsShown()); m_viewProps->setHiddenFilesShown(viewProps.hiddenFilesShown()); - m_viewProps->setSorting(viewProps.sorting()); + m_viewProps->setSortRole(viewProps.sortRole()); m_viewProps->setSortOrder(viewProps.sortOrder()); KIO::ListJob* listJob = KIO::listRecursive(dir, KIO::HideProgressInfo); diff --git a/src/settings/dolphin_directoryviewpropertysettings.kcfg b/src/settings/dolphin_directoryviewpropertysettings.kcfg index 64242f8a3..db1a5cdc0 100644 --- a/src/settings/dolphin_directoryviewpropertysettings.kcfg +++ b/src/settings/dolphin_directoryviewpropertysettings.kcfg @@ -40,10 +40,10 @@ <default>false</default> </entry> - <entry name="Sorting" type="Int" > + <entry name="SortRole" type="String" > <label context="@label">Sort files by</label> <whatsthis context="@info:whatsthis">This option defines which attribute (name, size, date, etc.) sorting is performed on.</whatsthis> - <default code="true">DolphinView::SortByName</default> + <default code="true">"name"</default> </entry> <entry name="SortOrder" type="Int" > @@ -58,8 +58,8 @@ <default>true</default> </entry> - <entry name="AdditionalInfo" type="StringList"> - <label context="@label">Additional information</label> + <entry name="VisibleRoles" type="StringList"> + <label context="@label">Visible roles</label> <default></default> </entry> diff --git a/src/settings/viewpropertiesdialog.cpp b/src/settings/viewpropertiesdialog.cpp index c07c072d1..420daec8d 100644 --- a/src/settings/viewpropertiesdialog.cpp +++ b/src/settings/viewpropertiesdialog.cpp @@ -21,6 +21,7 @@ #include "viewpropertiesdialog.h" #include "additionalinfodialog.h" +#include "views/rolesaccessor.h" #include "views/dolphinview.h" #include "dolphin_generalsettings.h" #include "dolphin_iconsmodesettings.h" @@ -105,18 +106,12 @@ 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")); - 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 RolesAccessor& rolesAccessor = RolesAccessor::instance(); + const QList<QByteArray> roles = rolesAccessor.roles(); + foreach (const QByteArray& role, roles) { + m_sorting->addItem(rolesAccessor.translation(role), role); + } m_sortFoldersFirst = new QCheckBox(i18nc("@option:check", "Show folders first")); m_previewsShown = new QCheckBox(i18nc("@option:check", "Show preview")); @@ -249,7 +244,8 @@ void ViewPropertiesDialog::slotViewModeChanged(int index) 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); } @@ -295,22 +291,22 @@ void ViewPropertiesDialog::markAsDirty(bool isDirty) 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("name"); + 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; @@ -370,11 +366,11 @@ void ViewPropertiesDialog::applyViewProperties() } 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()); @@ -396,7 +392,11 @@ void ViewPropertiesDialog::loadSettings() // 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<QByteArray> roles = RolesAccessor::instance().roles(); + const int sortRoleIndex = roles.indexOf(m_viewProps->sortRole()); + m_sorting->setCurrentIndex(sortRoleIndex); + m_sortFoldersFirst->setChecked(m_viewProps->sortFoldersFirst()); // Load show preview, show in groups and show hidden files settings |
