┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/panels/information/kmetadataconfigurationdialog.cpp
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2010-02-26 22:03:32 +0000
committerPeter Penz <[email protected]>2010-02-26 22:03:32 +0000
commit77d9413d075104a797569d56d2a97016daa6540c (patch)
treecdb27b8e1fca716c027df60e9702c15e3655252f /src/panels/information/kmetadataconfigurationdialog.cpp
parent65106c30375b026fa3c759b684f25af8d2cc31c2 (diff)
Meta data configuration cleanups:
- Use RDF labels internally. - Provide better default settings, which meta data are hidden. - Allow to configure which meta data is shown also if Nepomuk is turned off. svn path=/trunk/KDE/kdebase/apps/; revision=1096571
Diffstat (limited to 'src/panels/information/kmetadataconfigurationdialog.cpp')
-rw-r--r--src/panels/information/kmetadataconfigurationdialog.cpp142
1 files changed, 67 insertions, 75 deletions
diff --git a/src/panels/information/kmetadataconfigurationdialog.cpp b/src/panels/information/kmetadataconfigurationdialog.cpp
index e614a35fe..4b791af5a 100644
--- a/src/panels/information/kmetadataconfigurationdialog.cpp
+++ b/src/panels/information/kmetadataconfigurationdialog.cpp
@@ -17,6 +17,11 @@
*****************************************************************************/
#include "kmetadataconfigurationdialog.h"
+
+#include "nfotranslator.h"
+
+#include <kfilemetainfo.h>
+#include <kfilemetainfoitem.h>
#include "kmetadatawidget.h"
#include <klocale.h>
@@ -41,7 +46,7 @@ public:
void init();
void loadMetaData();
- QString tunedLabel(const QString& label) const;
+ void addItem(const QUrl& uri);
int m_visibleDataTypes;
QLabel* m_descriptionLabel;
@@ -99,13 +104,13 @@ void KMetaDataConfigurationDialog::Private::loadMetaData()
// 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;
+ KMetaDataWidget::SizeData |
+ KMetaDataWidget::ModifiedData |
+ KMetaDataWidget::OwnerData |
+ KMetaDataWidget::PermissionsData |
+ KMetaDataWidget::RatingData |
+ KMetaDataWidget::TagsData |
+ KMetaDataWidget::CommentData;
if (m_metaDataWidget != 0) {
visibleDataTypes = m_metaDataWidget->visibleDataTypes();
}
@@ -113,30 +118,30 @@ void KMetaDataConfigurationDialog::Private::loadMetaData()
typedef QPair<QString, QString> FixedItem;
QList<FixedItem> fixedItems;
if (visibleDataTypes & KMetaDataWidget::TypeData) {
- fixedItems.append(FixedItem("type", i18nc("@item::inlistbox", "Type")));
+ fixedItems.append(FixedItem("kfileitem#type", i18nc("@item::inlistbox", "Type")));
}
if (visibleDataTypes & KMetaDataWidget::SizeData) {
- fixedItems.append(FixedItem("size", i18nc("@item::inlistbox", "Size")));
+ fixedItems.append(FixedItem("kfileitem#size", i18nc("@item::inlistbox", "Size")));
}
if (visibleDataTypes & KMetaDataWidget::ModifiedData) {
- fixedItems.append(FixedItem("modified", i18nc("@item::inlistbox", "Modified")));
+ fixedItems.append(FixedItem("kfileitem#modified", i18nc("@item::inlistbox", "Modified")));
}
if (visibleDataTypes & KMetaDataWidget::OwnerData) {
- fixedItems.append(FixedItem("owner", i18nc("@item::inlistbox", "Owner")));
+ fixedItems.append(FixedItem("kfileitem#owner", i18nc("@item::inlistbox", "Owner")));
}
if (visibleDataTypes & KMetaDataWidget::PermissionsData) {
- fixedItems.append(FixedItem("permissions", i18nc("@item::inlistbox", "Permissions")));
+ fixedItems.append(FixedItem("kfileitem#permissions", i18nc("@item::inlistbox", "Permissions")));
}
#ifdef HAVE_NEPOMUK
if (Nepomuk::ResourceManager::instance()->init() == 0) {
if (visibleDataTypes & KMetaDataWidget::RatingData) {
- fixedItems.append(FixedItem("rating", i18nc("@item::inlistbox", "Rating")));
+ fixedItems.append(FixedItem("kfileitem#rating", i18nc("@item::inlistbox", "Rating")));
}
if (visibleDataTypes & KMetaDataWidget::TagsData) {
- fixedItems.append(FixedItem("tags", i18nc("@item::inlistbox", "Tags")));
+ fixedItems.append(FixedItem("kfileitem#tags", i18nc("@item::inlistbox", "Tags")));
}
if (visibleDataTypes & KMetaDataWidget::CommentData) {
- fixedItems.append(FixedItem("comment", i18nc("@item::inlistbox", "Comment")));
+ fixedItems.append(FixedItem("kfileitem#comment", i18nc("@item::inlistbox", "Comment")));
}
}
#endif
@@ -151,10 +156,6 @@ void KMetaDataConfigurationDialog::Private::loadMetaData()
}
#ifdef HAVE_NEPOMUK
- if (Nepomuk::ResourceManager::instance()->init() != 0) {
- return;
- }
-
// Get all meta information labels that are available for
// the currently shown file item and add them to the list.
if (m_metaDataWidget == 0) {
@@ -168,73 +169,64 @@ void KMetaDataConfigurationDialog::Private::loadMetaData()
// TODO: handle als usecases for more than one item:
return;
}
- Nepomuk::Resource res(items.first().nepomukUri());
+ Nepomuk::Resource res(items.first().nepomukUri());
QHash<QUrl, Nepomuk::Variant> properties = res.properties();
- QHash<QUrl, Nepomuk::Variant>::const_iterator it = properties.constBegin();
- while (it != properties.constEnd()) {
- Nepomuk::Types::Property prop(it.key());
- const QString key = prop.name();
-
- // 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[] = {
- "contentSize", // = fixed item "size"
- "description", // = fixed item "comment"
- "fileExtension", // ~ fixed item "type"
- "hasTag", // = fixed item "tags"
- "name", // not shown as part of the meta data widget
- "lastModified", // = fixed item "modified"
- "size", // = fixed item "size"
- "mimeType", // = fixed item "type"
- "numericRating", // = fixed item "rating"
- 0 // mandatory last entry
- };
- bool skip = false;
- int i = 0;
- while (hiddenProperties[i] != 0) {
- if (key == hiddenProperties[i]) {
- skip = true;
- break;
- }
- ++i;
+ if (properties.isEmpty()) {
+ // the file is not indexed or Nepomuk is disabled
+ KFileMetaInfo metaInfo(items.first().url());
+ const QHash<QString, KFileMetaInfoItem> metaInfoItems = metaInfo.items();
+ foreach (const KFileMetaInfoItem& metaInfoItem, metaInfoItems) {
+ addItem(metaInfoItem.name());
}
- if (!skip) {
- // TODO #1: use Nepomuk::formatValue(res, prop) if available
- // instead of it.value().toString()
- // TODO #2: using tunedLabel() is a workaround for KDE 4.3 (4.4?) until
- // we get translated labels
- const QString label = tunedLabel(prop.label());
- 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);
+ } else {
+ // show meta information provided by Nepomuk
+ QHash<QUrl, Nepomuk::Variant>::const_iterator it = properties.constBegin();
+ while (it != properties.constEnd()) {
+ Nepomuk::Types::Property prop(it.key());
+ addItem(prop.uri());
+ ++it;
}
-
- ++it;
}
#endif
}
-QString KMetaDataConfigurationDialog::Private::tunedLabel(const QString& label) const
+void KMetaDataConfigurationDialog::Private::addItem(const QUrl& uri)
{
- QString tunedLabel;
- const int labelLength = label.length();
- if (labelLength > 0) {
- tunedLabel.reserve(labelLength);
- tunedLabel = label[0].toUpper();
- for (int i = 1; i < labelLength; ++i) {
- if (label[i].isUpper() && !label[i - 1].isSpace() && !label[i - 1].isUpper()) {
- tunedLabel += ' ';
- tunedLabel += label[i].toLower();
- } else {
- tunedLabel += label[i];
- }
+ // 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.toString();
+ while (hiddenProperties[i] != 0) {
+ if (key == QLatin1String(hiddenProperties[i])) {
+ // the item is hidden
+ return;
}
+ ++i;
}
- return tunedLabel;
+
+ // the item is not hidden, add it to the list
+ KConfig config("kmetainformationrc", KConfig::NoGlobals);
+ KConfigGroup settings = config.group("Show");
+
+ const QString label = NfoTranslator::instance().translation(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,