diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/panels/information/kmetadatawidget.cpp | 11 | ||||
| -rw-r--r-- | src/panels/information/kmetadatawidget.h | 5 | ||||
| -rw-r--r-- | src/panels/information/ktaggingwidget.cpp | 58 | ||||
| -rw-r--r-- | src/panels/information/ktaggingwidget_p.h | 1 |
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); |
