]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/panels/information/commentwidget.cpp
give the splitter more space than the (optional) search options
[dolphin.git] / src / panels / information / commentwidget.cpp
index 63d8a1dc3093d848aec8a3d46d4a0a4a60e9477d..06a4c33be57a5e6b478309f9f916cbc4b540565c 100644 (file)
@@ -1,4 +1,5 @@
 /***************************************************************************
+ *   Copyright (C) 2008 by Sebastian Trueg <trueg@kde.org>                 *
  *   Copyright (C) 2009 by Peter Penz <peter.penz@gmx.at>                  *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
 
 #include "commentwidget_p.h"
 
+#include <kdialog.h>
+#include <kglobalsettings.h>
+#include <klocale.h>
+
+#include <QLabel>
+#include <QTextEdit>
+#include <QVBoxLayout>
+
 CommentWidget::CommentWidget(QWidget* parent) :
-    QWidget(parent)
+    QWidget(parent),
+    m_label(0),
+    m_comment()
 {
+    m_label = new QLabel(this);
+    m_label->setFont(KGlobalSettings::smallestReadableFont());
+    m_label->setWordWrap(true);
+    m_label->setAlignment(Qt::AlignTop);
+    connect(m_label, SIGNAL(linkActivated(const QString&)), this, SLOT(slotLinkActivated(const QString&)));
+
+    QVBoxLayout* layout = new QVBoxLayout(this);
+    layout->setMargin(0);
+    layout->addWidget(m_label);
+
+    setText(m_comment);
 }
 
 CommentWidget::~CommentWidget()
 {
 }
 
+void CommentWidget::setText(const QString& comment)
+{
+    if (comment.isEmpty()) {
+        m_label->setText("<a href=\"addComment\">" + i18nc("@label", "Add Comment...") + "</a>");
+    } else {
+        m_label->setText("<p>" + comment + " <a href=\"changeComment\">" + i18nc("@label", "Change...") + "</a></p>");
+    }
+    m_comment = comment;
+}
+
+QString CommentWidget::text() const
+{
+    return m_comment;
+}
+
+void CommentWidget::slotLinkActivated(const QString& link)
+{
+    KDialog dialog(this, Qt::Dialog);
+
+    QTextEdit* editor = new QTextEdit(&dialog);
+    editor->setText(m_comment);
+
+    dialog.setMainWidget(editor);
+
+    const QString caption = (link == "changeComment") ?
+                            i18nc("@title:window", "Change Comment") :
+                            i18nc("@title:window", "Add Comment");
+    dialog.setCaption(caption);
+    dialog.setButtons(KDialog::Ok | KDialog::Cancel);
+    dialog.setDefaultButton(KDialog::Ok);
+
+    KConfigGroup dialogConfig(KGlobal::config(), "Nepomuk EditCommentDialog");
+    dialog.restoreDialogSize(dialogConfig);
+
+    if (dialog.exec() == QDialog::Accepted) {
+        const QString oldText = m_comment;
+        setText(editor->toPlainText());
+        if (oldText != m_comment) {
+            emit commentChanged(m_comment);
+        }
+    }
+
+    dialog.saveDialogSize(dialogConfig, KConfigBase::Persistent);
+}
+
 #include "commentwidget_p.moc"