┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/panels/information/kmetadatawidget.cpp11
-rw-r--r--src/panels/information/kmetadatawidget.h5
-rw-r--r--src/panels/information/ktaggingwidget.cpp58
-rw-r--r--src/panels/information/ktaggingwidget_p.h1
4 files changed, 52 insertions, 23 deletions
diff --git a/src/panels/information/kmetadatawidget.cpp b/src/panels/information/kmetadatawidget.cpp
index 819e9f26d..8b658a03f 100644
--- a/src/panels/information/kmetadatawidget.cpp
+++ b/src/panels/information/kmetadatawidget.cpp
@@ -98,6 +98,8 @@ public:
void slotLinkActivated(const QString& link);
#ifdef HAVE_NEPOMUK
+ void slotTagActivated(const Nepomuk::Tag& tag);
+
/**
* Disables the metadata widget and starts the job that
* changes the meta data asynchronously. After the job
@@ -189,6 +191,8 @@ KMetaDataWidget::Private::Private(KMetaDataWidget* parent) :
m_taggingWidget = new KTaggingWidget(parent);
connect(m_taggingWidget, SIGNAL(tagsChanged(const QList<Nepomuk::Tag>&)),
q, SLOT(slotTagsChanged(const QList<Nepomuk::Tag>&)));
+ connect(m_taggingWidget, SIGNAL(tagActivated(const Nepomuk::Tag&)),
+ q, SLOT(slotTagActivated(const Nepomuk::Tag&)));
m_commentWidget = new KCommentWidget(parent);
connect(m_commentWidget, SIGNAL(commentChanged(const QString&)),
@@ -425,6 +429,13 @@ void KMetaDataWidget::Private::slotCommentChanged(const QString& comment)
#endif
}
+#ifdef HAVE_NEPOMUK
+void KMetaDataWidget::Private::slotTagActivated(const Nepomuk::Tag& tag)
+{
+ emit q->urlActivated(tag.resourceUri());
+}
+#endif
+
void KMetaDataWidget::Private::slotMetaDataUpdateDone()
{
#ifdef HAVE_NEPOMUK
diff --git a/src/panels/information/kmetadatawidget.h b/src/panels/information/kmetadatawidget.h
index 060b82c73..a7d131e14 100644
--- a/src/panels/information/kmetadatawidget.h
+++ b/src/panels/information/kmetadatawidget.h
@@ -25,6 +25,8 @@
#include <QList>
#include <QWidget>
+#include <config-nepomuk.h>
+
class KUrl;
/**
@@ -138,6 +140,9 @@ private:
Q_PRIVATE_SLOT(d, void slotCommentChanged(const QString& comment))
Q_PRIVATE_SLOT(d, void slotMetaDataUpdateDone())
Q_PRIVATE_SLOT(d, void slotLinkActivated(const QString& link))
+#ifdef HAVE_NEPOMUK
+ Q_PRIVATE_SLOT(d, void slotTagActivated(const Nepomuk::Tag& tag))
+#endif
};
Q_DECLARE_OPERATORS_FOR_FLAGS(KMetaDataWidget::MetaDataTypes)
diff --git a/src/panels/information/ktaggingwidget.cpp b/src/panels/information/ktaggingwidget.cpp
index d33b9f6de..4c0ab98be 100644
--- a/src/panels/information/ktaggingwidget.cpp
+++ b/src/panels/information/ktaggingwidget.cpp
@@ -22,6 +22,7 @@
#include <kglobalsettings.h>
#include <klocale.h>
+#include <kurl.h>
#include <QEvent>
#include <QLabel>
@@ -61,7 +62,15 @@ void KTaggingWidget::setTags(const QList<Nepomuk::Tag>& tags)
if (!first) {
m_tagsText += ", ";
}
- m_tagsText += tag.genericLabel();
+#ifdef DOLPHIN_ENABLE_CLICKABLE_TAGS
+ if (m_readOnly) {
+#endif
+ m_tagsText += tag.genericLabel();
+#ifdef DOLPHIN_ENABLE_CLICKABLE_TAGS
+ } else {
+ m_tagsText += QString::fromLatin1( "<a href=\"%1\">%2</a>" ).arg( KUrl(tag.resourceUri()).url(), tag.genericLabel() );
+ }
+#endif
first = false;
}
@@ -70,7 +79,7 @@ void KTaggingWidget::setTags(const QList<Nepomuk::Tag>& tags)
if (m_readOnly) {
text = "-";
} else {
- text = "<a href=\"addTags\">" + i18nc("@label", "Add Tags...") + "</a>";
+ text = "<a href=\"changeTags\">" + i18nc("@label", "Add Tags...") + "</a>";
}
} else {
if (m_readOnly) {
@@ -108,33 +117,36 @@ bool KTaggingWidget::event(QEvent* event)
void KTaggingWidget::slotLinkActivated(const QString& link)
{
- Q_UNUSED(link);
-
- KEditTagsDialog dialog(m_tags, this, Qt::Dialog);
- KConfigGroup dialogConfig(KGlobal::config(), "Nepomuk KEditTagsDialog");
- dialog.restoreDialogSize(dialogConfig);
+ if ( link == QLatin1String( "changeTags" ) ) {
+ KEditTagsDialog dialog(m_tags, this, Qt::Dialog);
+ KConfigGroup dialogConfig(KGlobal::config(), "Nepomuk KEditTagsDialog");
+ dialog.restoreDialogSize(dialogConfig);
- if (dialog.exec() == QDialog::Accepted) {
- const QList<Nepomuk::Tag> oldTags = m_tags;
- m_tags = dialog.tags();
+ if (dialog.exec() == QDialog::Accepted) {
+ const QList<Nepomuk::Tag> oldTags = m_tags;
+ m_tags = dialog.tags();
- if (oldTags.count() != m_tags.count()) {
- emit tagsChanged(m_tags);
- } else {
- // The number of tags is equal. Check whether the
- // content of the tags are also equal:
- const int tagsCount = m_tags.count();
- for (int i = 0; i < tagsCount; ++i) {
- if (oldTags[i].genericLabel() != m_tags[i].genericLabel()) {
- // at least one tag has been changed
- emit tagsChanged(m_tags);
- break;
+ if (oldTags.count() != m_tags.count()) {
+ emit tagsChanged(m_tags);
+ } else {
+ // The number of tags is equal. Check whether the
+ // content of the tags are also equal:
+ const int tagsCount = m_tags.count();
+ for (int i = 0; i < tagsCount; ++i) {
+ if (oldTags[i].genericLabel() != m_tags[i].genericLabel()) {
+ // at least one tag has been changed
+ emit tagsChanged(m_tags);
+ break;
+ }
}
}
}
- }
- dialog.saveDialogSize(dialogConfig, KConfigBase::Persistent);
+ dialog.saveDialogSize(dialogConfig, KConfigBase::Persistent);
+ }
+ else {
+ emit tagActivated(Nepomuk::Tag(KUrl(link)));
+ }
}
#include "ktaggingwidget_p.moc"
diff --git a/src/panels/information/ktaggingwidget_p.h b/src/panels/information/ktaggingwidget_p.h
index 1a4589a62..dfa23ea3b 100644
--- a/src/panels/information/ktaggingwidget_p.h
+++ b/src/panels/information/ktaggingwidget_p.h
@@ -49,6 +49,7 @@ public:
signals:
void tagsChanged(const QList<Nepomuk::Tag>& tags);
+ void tagActivated(const Nepomuk::Tag& tag);
protected:
virtual bool event(QEvent* event);