]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Use the AdditionalInfoAccessor to be flexible for future changes/extensions in KFileI...
authorPeter Penz <peter.penz19@gmail.com>
Fri, 14 May 2010 16:55:43 +0000 (16:55 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Fri, 14 May 2010 16:55:43 +0000 (16:55 +0000)
svn path=/trunk/KDE/kdebase/apps/; revision=1126703

src/settings/additionalinfodialog.cpp
src/settings/additionalinfodialog.h
src/settings/viewpropertiesdialog.cpp

index 2f735fffec6afd20b5661b2f7bc446ac2486b0e7..109213fe7c4042fff9dafb9df3d2f013b53fbe2f 100644 (file)
 
 #include "additionalinfodialog.h"
 
+#include "additionalinfoaccessor.h"
 #include <klocale.h>
-#include <kvbox.h>
 
 #include <QCheckBox>
+#include <QLabel>
+#include <QVBoxLayout>
 
 AdditionalInfoDialog::AdditionalInfoDialog(QWidget* parent,
-                                           KFileItemDelegate::InformationList info) :
+                                           KFileItemDelegate::InformationList infoList) :
     KDialog(parent),
-    m_info(info),
-    m_size(0),
-    m_date(0),
-    m_permissions(0),
-    m_owner(0),
-    m_group(0),
-    m_type(0)
+    m_infoList(infoList),
+    m_checkBoxes()
 {
     setCaption(i18nc("@title:window", "Additional Information"));
     setButtons(Ok | Cancel);
     setDefaultButton(Ok);
 
-    KVBox* box = new KVBox(this);
+    QWidget* mainWidget = new QWidget(this);
+    mainWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum);
+    QVBoxLayout* layout = new QVBoxLayout(mainWidget);
 
-    m_size = new QCheckBox(i18nc("@option:check Additional Information", "Size"), box);
-    m_date = new QCheckBox(i18nc("@option:check Additional Information", "Date"), box);
-    m_permissions = new QCheckBox(i18nc("@option:check Additional Information", "Permissions"), box);
-    m_owner = new QCheckBox(i18nc("@option:check Additional Information", "Owner"), box);
-    m_group = new QCheckBox(i18nc("@option:check Additional Information", "Group"), box);
-    m_type = new QCheckBox(i18nc("@option:check Additional Information", "Type"), box);
-    connect(this, SIGNAL(okClicked()), this, SLOT(slotOk()));
+    // Add header
+    QLabel* header = new QLabel(mainWidget);
+    header->setText(i18nc("@label", "Configure which additional information should be shown."));
+    header->setWordWrap(true);
+    layout->addWidget(header);
+
+    // Add checkboxes
+    const AdditionalInfoAccessor& infoAccessor = AdditionalInfoAccessor::instance();
+    const KFileItemDelegate::InformationList keys = infoAccessor.keys();
+    foreach (const KFileItemDelegate::Information info, keys) {
+        QCheckBox* checkBox = new QCheckBox(infoAccessor.translation(info), mainWidget);
+        checkBox->setChecked(infoList.contains(info));
+        layout->addWidget(checkBox);
+        m_checkBoxes.append(checkBox);
+    }
 
-    m_size->setChecked(info.contains(KFileItemDelegate::Size));
-    m_date->setChecked(info.contains(KFileItemDelegate::ModificationTime));
-    m_permissions->setChecked(info.contains(KFileItemDelegate::Permissions));
-    m_owner->setChecked(info.contains(KFileItemDelegate::Owner));
-    m_group->setChecked(info.contains(KFileItemDelegate::OwnerAndGroup));
-    m_type->setChecked(info.contains(KFileItemDelegate::FriendlyMimeType));
+    layout->addStretch(1);
 
-    setMainWidget(box);
+    setMainWidget(mainWidget);
 
     const KConfigGroup dialogConfig(KSharedConfig::openConfig("dolphinrc"),
                                     "AdditionalInfoDialog");
     restoreDialogSize(dialogConfig);
+
+    connect(this, SIGNAL(okClicked()), this, SLOT(slotOk()));
 }
 
 AdditionalInfoDialog::~AdditionalInfoDialog()
@@ -70,32 +74,22 @@ AdditionalInfoDialog::~AdditionalInfoDialog()
     saveDialogSize(dialogConfig, KConfigBase::Persistent);
 }
 
-KFileItemDelegate::InformationList AdditionalInfoDialog::additionalInfo() const
+KFileItemDelegate::InformationList AdditionalInfoDialog::informationList() const
 {
-    return m_info;
+    return m_infoList;
 }
 
 void AdditionalInfoDialog::slotOk()
 {
-    m_info.clear();
+    m_infoList.clear();
 
-    if (m_size->isChecked()) {
-        m_info.append(KFileItemDelegate::Size);
-    }
-    if (m_date->isChecked()) {
-        m_info.append(KFileItemDelegate::ModificationTime);
-    }
-    if (m_permissions->isChecked()) {
-        m_info.append(KFileItemDelegate::Permissions);
-    }
-    if (m_owner->isChecked()) {
-        m_info.append(KFileItemDelegate::Owner);
-    }
-    if (m_group->isChecked()) {
-        m_info.append(KFileItemDelegate::OwnerAndGroup);
-    }
-    if (m_type->isChecked()) {
-        m_info.append(KFileItemDelegate::FriendlyMimeType);
+    const KFileItemDelegate::InformationList keys = AdditionalInfoAccessor::instance().keys();
+    int index = 0;
+    foreach (const KFileItemDelegate::Information info, keys) {
+        if (m_checkBoxes[index]->isChecked()) {
+            m_infoList.append(info);
+        }
+        ++index;
     }
 }
 
index 9771960f0f2ed0e50470d7eac06ddc5e8586e4a6..54d23f2e34f9729b460c809f9cba8b81b4a87e82 100644 (file)
@@ -22,6 +22,7 @@
 
 #include <kdialog.h>
 #include <kfileitemdelegate.h>
+#include <QList>
 
 class QCheckBox;
 
@@ -33,21 +34,16 @@ class AdditionalInfoDialog : public KDialog
     Q_OBJECT
 
 public:
-    explicit AdditionalInfoDialog(QWidget* parent, KFileItemDelegate::InformationList info);
+    AdditionalInfoDialog(QWidget* parent, KFileItemDelegate::InformationList infoList);
     virtual ~AdditionalInfoDialog();
-    KFileItemDelegate::InformationList additionalInfo() const;
+    KFileItemDelegate::InformationList informationList() const;
 
 private slots:
     void slotOk();
 
 private:
-    KFileItemDelegate::InformationList m_info;
-    QCheckBox* m_size;
-    QCheckBox* m_date;
-    QCheckBox* m_permissions;
-    QCheckBox* m_owner;
-    QCheckBox* m_group;
-    QCheckBox* m_type;
+    KFileItemDelegate::InformationList m_infoList;
+    QList<QCheckBox*> m_checkBoxes;
 };
 
 #endif
index 39d9cc78638f5257407ba005d8360c78783a7aa5..3941a61ccb4467f1d57779183c14ccedf21dbf23 100644 (file)
@@ -318,7 +318,7 @@ void ViewPropertiesDialog::configureAdditionalInfo()
 
     QPointer<AdditionalInfoDialog> dialog = new AdditionalInfoDialog(this, info);
     if (dialog->exec() == QDialog::Accepted) {
-        m_viewProps->setAdditionalInfo(dialog->additionalInfo());
+        m_viewProps->setAdditionalInfo(dialog->informationList());
         markAsDirty(true);
     }
     delete dialog;