┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2009-06-10 10:04:33 +0000
committerPeter Penz <[email protected]>2009-06-10 10:04:33 +0000
commit26b6d3b8ffd1071a615e95a2871096ae85dd6f93 (patch)
tree8344e5658061f643f99f963808eef6dd779fe24d
parent950d61feda059bddf11ef5549077c3bd02b4e6a5 (diff)
fixed resizing issues when having long comments:
* embed the comment label inside a scrollarea * assure that the "add comment..."/"change comment..." link is always visible * assure that the maximum width of the meta data widget is set to the panel width (otherwise the panel would be increased in an unlimited way when having a text without spaces) CCMAIL: [email protected] svn path=/trunk/KDE/kdebase/apps/; revision=979621
-rw-r--r--src/panels/information/commentwidget.cpp29
-rw-r--r--src/panels/information/informationpanel.cpp7
2 files changed, 29 insertions, 7 deletions
diff --git a/src/panels/information/commentwidget.cpp b/src/panels/information/commentwidget.cpp
index 586be63aa..93bbad84f 100644
--- a/src/panels/information/commentwidget.cpp
+++ b/src/panels/information/commentwidget.cpp
@@ -24,6 +24,7 @@
#include <QtGui/QTextEdit>
#include <QtGui/QLayout>
#include <QtGui/QCursor>
+#include <QtGui/QScrollArea>
#include <QtCore/QEvent>
#include <KLocale>
@@ -39,7 +40,9 @@ public:
void update();
void _k_slotEnableEditing();
- QLabel* label;
+ QLabel* commentLabel;
+ QScrollArea* scrollArea;
+ QLabel* commentLink;
CommentEditWidget* edit;
QString comment;
@@ -51,11 +54,14 @@ private:
void CommentWidget::Private::update()
{
+ commentLabel->setText( comment );
if ( comment.isEmpty() ) {
- label->setText( "<p align=center><a style=\"font-size:small;\" href=\"addComment\">" + i18nc( "@label", "Add Comment..." ) + "</a>" );
+ scrollArea->hide();
+ commentLink->setText( "<p align=center><a style=\"font-size:small;\" href=\"addComment\">" + i18nc( "@label", "Add Comment..." ) + "</a>" );
}
else {
- label->setText( "<p>" + comment + "<p align=center><a style=\"font-size:small;\" href=\"addComment\">" + i18nc( "@label", "Change Comment..." ) + "</a>" );
+ scrollArea->show();
+ commentLink->setText( "<p align=center><a style=\"font-size:small;\" href=\"addComment\">" + i18nc( "@label", "Change Comment..." ) + "</a>" );
}
}
@@ -77,13 +83,22 @@ CommentWidget::CommentWidget( QWidget* parent )
: QWidget( parent ),
d( new Private( this ) )
{
- d->label = new QLabel( this );
- d->label->setWordWrap( true );
+ d->commentLabel = new QLabel( this );
+ d->commentLabel->setWordWrap( true );
+
+ d->scrollArea = new QScrollArea( this );
+ d->scrollArea->setWidget( d->commentLabel );
+ d->scrollArea->setWidgetResizable( true );
+ d->scrollArea->setFrameShape( QFrame::StyledPanel );
+
+ d->commentLink = new QLabel( this );
+
QVBoxLayout* layout = new QVBoxLayout( this );
layout->setMargin( 0 );
- layout->addWidget( d->label );
+ layout->addWidget( d->scrollArea );
+ layout->addWidget( d->commentLink );
d->update();
- connect( d->label, SIGNAL( linkActivated( const QString& ) ), this, SLOT( _k_slotEnableEditing() ) );
+ connect( d->commentLink, SIGNAL( linkActivated( const QString& ) ), this, SLOT( _k_slotEnableEditing() ) );
}
diff --git a/src/panels/information/informationpanel.cpp b/src/panels/information/informationpanel.cpp
index affd0b1d3..2c9edcc18 100644
--- a/src/panels/information/informationpanel.cpp
+++ b/src/panels/information/informationpanel.cpp
@@ -202,6 +202,12 @@ void InformationPanel::resizeEvent(QResizeEvent* event)
const int maxWidth = event->size().width() - KDialog::spacingHint() * 4;
m_nameLabel->setMaximumWidth(maxWidth);
+ // The metadata widget also contains a text widget which may return
+ // a large preferred width.
+ if (m_metaDataWidget != 0) {
+ m_metaDataWidget->setMaximumWidth(maxWidth);
+ }
+
// try to increase the preview as large as possible
m_preview->setSizeHint(QSize(maxWidth, maxWidth));
m_urlCandidate = m_shownUrl; // reset the URL candidate if a resizing is done
@@ -777,6 +783,7 @@ void InformationPanel::init()
// rating, comment and tags
m_metaDataWidget = new MetaDataWidget(this);
m_metaDataWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
+ m_metaDataWidget->setMaximumWidth(KIconLoader::SizeEnormous);
const bool showRating = InformationPanelSettings::showRating();
const bool showComment = InformationPanelSettings::showComment();