- setCaption(i18nc("@title:window", "Additional Information"));
- setButtons(Ok | Cancel);
- setDefaultButton(Ok);
-
- KVBox* box = new KVBox(this);
-
- 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()));
-
- 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));
-
- setMainWidget(box);
-
- const KConfigGroup dialogConfig(KSharedConfig::openConfig("dolphinrc"),
- "AdditionalInfoDialog");
- restoreDialogSize(dialogConfig);
+ setWindowTitle(i18nc("@title:window", "Additional Information"));
+ setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum);
+
+ auto layout = new QVBoxLayout(this);
+ setLayout(layout);
+
+ // Add header
+ auto header = new QLabel(this);
+ header->setText(i18nc("@label", "Select which additional information should be shown:"));
+ header->setWordWrap(true);
+ layout->addWidget(header);
+
+ // Add checkboxes
+ bool indexingEnabled = false;
+#ifdef HAVE_BALOO
+ Baloo::IndexerConfig config;
+ indexingEnabled = config.fileIndexingEnabled();
+#endif
+
+ m_listWidget = new QListWidget(this);
+ m_listWidget->setSelectionMode(QAbstractItemView::NoSelection);
+ const QList<KFileItemModel::RoleInfo> rolesInfo = KFileItemModel::rolesInformation();
+ foreach (const KFileItemModel::RoleInfo& info, rolesInfo) {
+ QListWidgetItem* item = new QListWidgetItem(info.translation, m_listWidget);
+ item->setCheckState(visibleRoles.contains(info.role) ? Qt::Checked : Qt::Unchecked);
+
+ const bool enable = (!info.requiresBaloo && !info.requiresIndexer) ||
+ (info.requiresBaloo) ||
+ (info.requiresIndexer && indexingEnabled);
+
+ if (!enable) {
+ item->setFlags(item->flags() & ~Qt::ItemIsEnabled);
+ }
+ }
+ layout->addWidget(m_listWidget);
+
+ auto buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this);
+ connect(buttonBox, &QDialogButtonBox::accepted, this, &AdditionalInfoDialog::accept);
+ connect(buttonBox, &QDialogButtonBox::rejected, this, &AdditionalInfoDialog::reject);
+ layout->addWidget(buttonBox);
+
+ auto okButton = buttonBox->button(QDialogButtonBox::Ok);
+ okButton->setShortcut(Qt::CTRL | Qt::Key_Return);
+ okButton->setDefault(true);
+
+ const KConfigGroup dialogConfig(KSharedConfig::openConfig(QStringLiteral("dolphinrc")), "AdditionalInfoDialog");
+ KWindowConfig::restoreWindowSize(windowHandle(), dialogConfig);