From 73007f7d632bdd5565b8394043bb2de07bebb336 Mon Sep 17 00:00:00 2001 From: Peter Penz Date: Wed, 28 Oct 2009 07:18:00 +0000 Subject: After some discussions at http://reviewboard.kde.org/r/1938 it turned out that moving KMetaDataWidget and KMetaDataConfigurationDialog to kdelibs should be postponed to KDE 4.5. The main reason is that adding application specific properties is not possible with the current API in a generic way. Also the topic how to hide properties application specific is an open point... So now all adjustments from the review have been adapted to the Dolphin code. After KDE 4.4 has been released some refactoring will be done so that the open topics above are handled in a nice way. svn path=/trunk/KDE/kdebase/apps/; revision=1041547 --- src/panels/information/kcommentwidget.cpp | 97 +++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 src/panels/information/kcommentwidget.cpp (limited to 'src/panels/information/kcommentwidget.cpp') diff --git a/src/panels/information/kcommentwidget.cpp b/src/panels/information/kcommentwidget.cpp new file mode 100644 index 000000000..770b6c10c --- /dev/null +++ b/src/panels/information/kcommentwidget.cpp @@ -0,0 +1,97 @@ +/***************************************************************************** + * Copyright (C) 2008 by Sebastian Trueg * + * Copyright (C) 2009 by Peter Penz * + * * + * 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 "kcommentwidget_p.h" + +#include +#include +#include + +#include +#include +#include + +KCommentWidget::KCommentWidget(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); +} + +KCommentWidget::~KCommentWidget() +{ +} + +void KCommentWidget::setText(const QString& comment) +{ + if (comment.isEmpty()) { + m_label->setText("" + i18nc("@label", "Add Comment...") + ""); + } else { + m_label->setText("

" + comment + " " + i18nc("@label", "Change...") + "

"); + } + m_comment = comment; +} + +QString KCommentWidget::text() const +{ + return m_comment; +} + +void KCommentWidget::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 KEditCommentDialog"); + 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 "kcommentwidget_p.moc" -- cgit v1.3