/***************************************************************************
- * Copyright (C) 2007 by Peter Penz (peter.penz@gmx.at) *
+ * Copyright (C) 2007-2012 by Peter Penz <peter.penz19@gmail.com> *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
#include "additionalinfodialog.h"
-#include <klocale.h>
-#include <kvbox.h>
+#include <config-baloo.h>
+#include <KLocale>
+#include "kitemviews/kfileitemmodel.h"
#include <QCheckBox>
+#include <QLabel>
+#include <QVBoxLayout>
+
+#ifdef HAVE_BALOO
+ #include <baloo/indexerconfig.h>
+#endif
AdditionalInfoDialog::AdditionalInfoDialog(QWidget* parent,
- KFileItemDelegate::InformationList info) :
+ const QList<QByteArray>& visibleRoles) :
KDialog(parent),
- m_info(info),
- m_size(0),
- m_date(0),
- m_permissions(0),
- m_owner(0),
- m_group(0),
- m_type(0)
+ m_visibleRoles(visibleRoles),
+ m_listWidget(0)
{
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);
+
+ // Add header
+ QLabel* header = new QLabel(mainWidget);
+ header->setText(i18nc("@label", "Select which additional information should be shown:"));
+ header->setWordWrap(true);
+
+ // Add checkboxes
+ bool indexingEnabled = false;
+#ifdef HAVE_BALOO
+ Baloo::IndexerConfig config;
+ indexingEnabled = config.fileIndexingEnabled();
+#endif
- 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_listWidget = new QListWidget(mainWidget);
+ 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);
+ }
+ }
- 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));
+ QVBoxLayout* layout = new QVBoxLayout(mainWidget);
+ layout->addWidget(header);
+ layout->addWidget(m_listWidget);
- setMainWidget(box);
+ setMainWidget(mainWidget);
- const KConfigGroup dialogConfig(KSharedConfig::openConfig("dolphinrc"),
- "AdditionalInfoDialog");
+ const KConfigGroup dialogConfig(KSharedConfig::openConfig("dolphinrc"), "AdditionalInfoDialog");
restoreDialogSize(dialogConfig);
+
+ connect(this, &AdditionalInfoDialog::okClicked, this, &AdditionalInfoDialog::slotOk);
}
AdditionalInfoDialog::~AdditionalInfoDialog()
{
- KConfigGroup dialogConfig(KSharedConfig::openConfig("dolphinrc"),
- "AdditionalInfoDialog");
+ KConfigGroup dialogConfig(KSharedConfig::openConfig("dolphinrc"), "AdditionalInfoDialog");
saveDialogSize(dialogConfig, KConfigBase::Persistent);
}
-KFileItemDelegate::InformationList AdditionalInfoDialog::additionalInfo() const
+QList<QByteArray> AdditionalInfoDialog::visibleRoles() const
{
- return m_info;
+ return m_visibleRoles;
}
void AdditionalInfoDialog::slotOk()
{
- m_info.clear();
+ m_visibleRoles.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);
+ int index = 0;
+ const QList<KFileItemModel::RoleInfo> rolesInfo = KFileItemModel::rolesInformation();
+ foreach (const KFileItemModel::RoleInfo& info, rolesInfo) {
+ const QListWidgetItem* item = m_listWidget->item(index);
+ if (item->checkState() == Qt::Checked) {
+ m_visibleRoles.append(info.role);
+ }
+ ++index;
}
}