X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/2ba5c2cfc2cea534cccd860f94a7198530b83594..31a0c4fbd59c93a48f093be62b8ef19e6839de37:/src/settings/additionalinfodialog.cpp diff --git a/src/settings/additionalinfodialog.cpp b/src/settings/additionalinfodialog.cpp index 6bcee4a1b..4d1b69c83 100644 --- a/src/settings/additionalinfodialog.cpp +++ b/src/settings/additionalinfodialog.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2007 by Peter Penz (peter.penz@gmx.at) * + * Copyright (C) 2007-2012 by Peter Penz * * * * 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 * @@ -19,19 +19,24 @@ #include "additionalinfodialog.h" -#include +#include +#include +#include +#include "kitemviews/kfileitemmodel.h" #include #include #include -#include "views/rolesaccessor.h" +#ifdef HAVE_BALOO + #include +#endif AdditionalInfoDialog::AdditionalInfoDialog(QWidget* parent, const QList& visibleRoles) : KDialog(parent), m_visibleRoles(visibleRoles), - m_checkBoxes() + m_listWidget(0) { setCaption(i18nc("@title:window", "Additional Information")); setButtons(Ok | Cancel); @@ -39,39 +44,50 @@ AdditionalInfoDialog::AdditionalInfoDialog(QWidget* parent, QWidget* mainWidget = new QWidget(this); mainWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum); - QVBoxLayout* layout = new QVBoxLayout(mainWidget); // Add header QLabel* header = new QLabel(mainWidget); header->setText(i18nc("@label", "Select which additional information should be shown:")); header->setWordWrap(true); - layout->addWidget(header); // Add checkboxes - const RolesAccessor& rolesAccessor = RolesAccessor::instance(); - const QList 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); + bool indexingEnabled = false; +#ifdef HAVE_BALOO + Baloo::IndexerConfig config; + indexingEnabled = config.fileIndexingEnabled(); +#endif + + m_listWidget = new QListWidget(mainWidget); + m_listWidget->setSelectionMode(QAbstractItemView::NoSelection); + const QList 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->addStretch(1); + QVBoxLayout* layout = new QVBoxLayout(mainWidget); + layout->addWidget(header); + layout->addWidget(m_listWidget); setMainWidget(mainWidget); - const KConfigGroup dialogConfig(KSharedConfig::openConfig("dolphinrc"), - "AdditionalInfoDialog"); + const KConfigGroup dialogConfig(KSharedConfig::openConfig("dolphinrc"), "AdditionalInfoDialog"); restoreDialogSize(dialogConfig); - connect(this, SIGNAL(okClicked()), this, SLOT(slotOk())); + 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); } @@ -84,14 +100,14 @@ void AdditionalInfoDialog::slotOk() { m_visibleRoles.clear(); - const QList roles = RolesAccessor::instance().roles(); int index = 0; - foreach (const QByteArray& role, roles) { - if (m_checkBoxes[index]->isChecked()) { - m_visibleRoles.append(role); + const QList 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; } } -#include "additionalinfodialog.moc"