┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/panels/information/kmetadataconfigurationdialog.cpp
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2010-03-22 22:23:02 +0000
committerPeter Penz <[email protected]>2010-03-22 22:23:02 +0000
commitcaf017c2fefa8280046b02cfd071a118f2909ced (patch)
treea17f5bd569830806d679c7aedf103861ff9b2507 /src/panels/information/kmetadataconfigurationdialog.cpp
parent622acabf23b6c8c3badab6a8c2e93e0ae8963f1b (diff)
Use KFileMetaDataWidget from kdelibs. Still open: Provide dialog which wraps KFileMetaDataConfigurationWidget.
svn path=/trunk/KDE/kdebase/apps/; revision=1106465
Diffstat (limited to 'src/panels/information/kmetadataconfigurationdialog.cpp')
-rw-r--r--src/panels/information/kmetadataconfigurationdialog.cpp264
1 files changed, 0 insertions, 264 deletions
diff --git a/src/panels/information/kmetadataconfigurationdialog.cpp b/src/panels/information/kmetadataconfigurationdialog.cpp
deleted file mode 100644
index e80a38ede..000000000
--- a/src/panels/information/kmetadataconfigurationdialog.cpp
+++ /dev/null
@@ -1,264 +0,0 @@
-/*****************************************************************************
- * Copyright (C) 2009 by Peter Penz <[email protected]> *
- * *
- * This library is free software; you can redistribute it and/or *
- * modify it under the terms of the GNU Library General Public *
- * License version 2 as published by the Free Software Foundation. *
- * *
- * This library is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
- * Library General Public License for more details. *
- * *
- * You should have received a copy of the GNU Library General Public License *
- * along with this library; see the file COPYING.LIB. If not, write to *
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, *
- * Boston, MA 02110-1301, USA. *
- *****************************************************************************/
-
-#include "kmetadataconfigurationdialog.h"
-
-
-#include <kfilemetainfo.h>
-#include <kfilemetainfoitem.h>
-#include "kmetadatamodel.h"
-#include "kmetadatawidget.h"
-#include "knfotranslator_p.h"
-#include <klocale.h>
-
-#include <config-nepomuk.h>
-#ifdef HAVE_NEPOMUK
- #define DISABLE_NEPOMUK_LEGACY
- #include <nepomuk/resource.h>
- #include <nepomuk/resourcemanager.h>
- #include <nepomuk/property.h>
- #include <nepomuk/variant.h>
-#endif
-
-#include <QLabel>
-#include <QListWidget>
-#include <QVBoxLayout>
-
-class KMetaDataConfigurationDialog::Private
-{
-public:
- Private(KMetaDataConfigurationDialog* parent, KMetaDataWidget* metaDataWidget);
- ~Private();
-
- void init();
- void loadMetaData();
- void addItem(const KUrl& uri);
-
- void slotLoadingFinished();
-
- int m_visibleDataTypes;
- QLabel* m_descriptionLabel;
- KMetaDataWidget* m_metaDataWidget;
- QListWidget* m_metaDataList;
-
-private:
- KMetaDataConfigurationDialog* const q;
-};
-
-KMetaDataConfigurationDialog::Private::Private(KMetaDataConfigurationDialog* parent,
- KMetaDataWidget* metaDataWidget) :
- q(parent)
-{
- m_visibleDataTypes = 0;
- m_metaDataWidget = metaDataWidget;
-
- q->setCaption(i18nc("@title:window", "Configure Shown Data"));
- q->setButtons(KDialog::Ok | KDialog::Cancel);
- q->setDefaultButton(KDialog::Ok);
-
- QWidget* mainWidget = new QWidget(q);
- QVBoxLayout* topLayout = new QVBoxLayout(mainWidget);
-
- m_descriptionLabel = new QLabel(i18nc("@label::textbox",
- "Configure which data should "
- "be shown"), q);
- m_descriptionLabel->setWordWrap(true);
-
- m_metaDataList = new QListWidget(q);
- m_metaDataList->setSelectionMode(QAbstractItemView::NoSelection);
- m_metaDataList->setSortingEnabled(true);
-
- topLayout->addWidget(m_descriptionLabel);
- topLayout->addWidget(m_metaDataList);
-
- q->setMainWidget(mainWidget);
-
- loadMetaData();
-
- const KConfigGroup dialogConfig(KGlobal::config(), "Nepomuk KMetaDataConfigurationDialog");
- q->restoreDialogSize(dialogConfig);
-}
-
-KMetaDataConfigurationDialog::Private::~Private()
-{
- KConfigGroup dialogConfig(KGlobal::config(), "Nepomuk KMetaDataConfigurationDialog");
- q->saveDialogSize(dialogConfig, KConfigBase::Persistent);
-}
-
-void KMetaDataConfigurationDialog::Private::loadMetaData()
-{
- KConfig config("kmetainformationrc", KConfig::NoGlobals);
- KConfigGroup settings = config.group("Show");
-
- // Add fixed meta data items where the visibility does not
- // depend on the currently used URL.
- KMetaDataWidget::MetaDataTypes visibleDataTypes = KMetaDataWidget::TypeData |
- KMetaDataWidget::SizeData |
- KMetaDataWidget::ModifiedData |
- KMetaDataWidget::OwnerData |
- KMetaDataWidget::PermissionsData |
- KMetaDataWidget::RatingData |
- KMetaDataWidget::TagsData |
- KMetaDataWidget::CommentData;
- if (m_metaDataWidget != 0) {
- visibleDataTypes = m_metaDataWidget->visibleDataTypes();
- }
-
- typedef QPair<QString, QString> FixedItem;
- QList<FixedItem> fixedItems;
- if (visibleDataTypes & KMetaDataWidget::TypeData) {
- fixedItems.append(FixedItem("kfileitem#type", i18nc("@item::inlistbox", "Type")));
- }
- if (visibleDataTypes & KMetaDataWidget::SizeData) {
- fixedItems.append(FixedItem("kfileitem#size", i18nc("@item::inlistbox", "Size")));
- }
- if (visibleDataTypes & KMetaDataWidget::ModifiedData) {
- fixedItems.append(FixedItem("kfileitem#modified", i18nc("@item::inlistbox", "Modified")));
- }
- if (visibleDataTypes & KMetaDataWidget::OwnerData) {
- fixedItems.append(FixedItem("kfileitem#owner", i18nc("@item::inlistbox", "Owner")));
- }
- if (visibleDataTypes & KMetaDataWidget::PermissionsData) {
- fixedItems.append(FixedItem("kfileitem#permissions", i18nc("@item::inlistbox", "Permissions")));
- }
-
- foreach (const FixedItem& fixedItem, fixedItems) {
- const QString key = fixedItem.first;
- const QString label = fixedItem.second;
- QListWidgetItem* item = new QListWidgetItem(label, m_metaDataList);
- item->setData(Qt::UserRole, key);
- const bool show = settings.readEntry(key, true);
- item->setCheckState(show ? Qt::Checked : Qt::Unchecked);
- }
-
-#ifdef HAVE_NEPOMUK
- if ((m_metaDataWidget == 0) || (m_metaDataWidget->items().count() != 1)) {
- return;
- }
-
- // Get all meta information labels that are available for
- // the currently shown file item and add them to the list.
- KMetaDataModel* model = m_metaDataWidget->model();
- if (model != 0) {
- const QHash<KUrl, Nepomuk::Variant> data = model->data();
- QHash<KUrl, Nepomuk::Variant>::const_iterator it = data.constBegin();
- while (it != data.constEnd()) {
- addItem(it.key());
- ++it;
- }
- }
-#endif
-}
-
-void KMetaDataConfigurationDialog::Private::addItem(const KUrl& uri)
-{
- // Meta information provided by Nepomuk that is already
- // available from KFileItem as "fixed item" (see above)
- // should not be shown as second entry.
- static const char* const hiddenProperties[] = {
- "http://www.semanticdesktop.org/ontologies/2007/01/19/nie#comment", // = fixed item kfileitem#comment
- "http://www.semanticdesktop.org/ontologies/2007/01/19/nie#contentSize", // = fixed item kfileitem#size
- "http://www.semanticdesktop.org/ontologies/2007/01/19/nie#lastModified", // = fixed item kfileitem#modified
- "http://www.semanticdesktop.org/ontologies/2007/01/19/nie#plainTextContent" // hide this property always
- "http://www.semanticdesktop.org/ontologies/2007/01/19/nie#mimeType", // = fixed item kfileitem#type
- "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#fileName", // hide this property always
- "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", // = fixed item kfileitem#type
- 0 // mandatory last entry
- };
-
- int i = 0;
- const QString key = uri.url();
- while (hiddenProperties[i] != 0) {
- if (key == QLatin1String(hiddenProperties[i])) {
- // the item is hidden
- return;
- }
- ++i;
- }
-
- // the item is not hidden, add it to the list
- KConfig config("kmetainformationrc", KConfig::NoGlobals);
- KConfigGroup settings = config.group("Show");
-
- const QString label = (m_metaDataWidget == 0)
- ? KNfoTranslator::instance().translation(uri)
- : m_metaDataWidget->label(uri);
-
- QListWidgetItem* item = new QListWidgetItem(label, m_metaDataList);
- item->setData(Qt::UserRole, key);
- const bool show = settings.readEntry(key, true);
- item->setCheckState(show ? Qt::Checked : Qt::Unchecked);
-}
-
-KMetaDataConfigurationDialog::KMetaDataConfigurationDialog(QWidget* parent,
- Qt::WFlags flags) :
- KDialog(parent, flags),
- d(new Private(this, 0))
-{
-}
-
-KMetaDataConfigurationDialog::KMetaDataConfigurationDialog(KMetaDataWidget* metaDataWidget,
- QWidget* parent,
- Qt::WFlags flags) :
- KDialog(parent, flags),
- d(new Private(this, metaDataWidget))
-{
-}
-
-KMetaDataConfigurationDialog::~KMetaDataConfigurationDialog()
-{
- delete d;
-}
-
-void KMetaDataConfigurationDialog::slotButtonClicked(int button)
-{
- if (button == KDialog::Ok) {
- KConfig config("kmetainformationrc", KConfig::NoGlobals);
- KConfigGroup showGroup = config.group("Show");
-
- const int count = d->m_metaDataList->count();
- for (int i = 0; i < count; ++i) {
- QListWidgetItem* item = d->m_metaDataList->item(i);
- const bool show = (item->checkState() == Qt::Checked);
- const QString key = item->data(Qt::UserRole).toString();
- showGroup.writeEntry(key, show);
- }
-
- showGroup.sync();
-
- if (d->m_metaDataWidget != 0) {
- // trigger an update
- d->m_metaDataWidget->setVisibleDataTypes(d->m_metaDataWidget->visibleDataTypes());
- }
- accept();
- } else {
- KDialog::slotButtonClicked(button);
- }
-}
-
-void KMetaDataConfigurationDialog::setDescription(const QString& description)
-{
- d->m_descriptionLabel->setText(description);
-}
-
-QString KMetaDataConfigurationDialog::description() const
-{
- return d->m_descriptionLabel->text();
-}
-
-#include "kmetadataconfigurationdialog.moc"