┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/panels/information/metatextlabel.cpp
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2009-10-10 14:13:50 +0000
committerPeter Penz <[email protected]>2009-10-10 14:13:50 +0000
commiteaeee9f7d68d120b1982f24e73d8183db3418261 (patch)
treea890f309955e93cd2e44c8f95aa04ce4988939fb /src/panels/information/metatextlabel.cpp
parentec6144e5cf91bfe7d0c0343e2f47db85aa1160b0 (diff)
Start of refactoring so that the metadata widget can be moved outside of Dolphin for other applications. The temporary removed code will be integrated again within the next 10 days (-> currently no meta data is shown and cannot be updated).
svn path=/trunk/KDE/kdebase/apps/; revision=1033585
Diffstat (limited to 'src/panels/information/metatextlabel.cpp')
-rw-r--r--src/panels/information/metatextlabel.cpp159
1 files changed, 0 insertions, 159 deletions
diff --git a/src/panels/information/metatextlabel.cpp b/src/panels/information/metatextlabel.cpp
deleted file mode 100644
index 793f72669..000000000
--- a/src/panels/information/metatextlabel.cpp
+++ /dev/null
@@ -1,159 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2008 by Peter Penz <[email protected]> *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- * This program 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 General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the *
- * Free Software Foundation, Inc., *
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
- ***************************************************************************/
-
-#include "metatextlabel.h"
-
-#include <kglobalsettings.h>
-#include <klocale.h>
-
-#include <QPainter>
-#include <QTextLayout>
-#include <QTextLine>
-#include <kdebug.h>
-
-MetaTextLabel::MetaTextLabel(QWidget* parent) :
- QWidget(parent),
- m_metaInfos()
-{
- setFont(KGlobalSettings::smallestReadableFont());
- setMinimumHeight(0);
-}
-
-MetaTextLabel::~MetaTextLabel()
-{
-}
-
-void MetaTextLabel::clear()
-{
- setMinimumHeight(0);
- m_metaInfos.clear();
- update();
-}
-
-void MetaTextLabel::add(const QString& labelText, const QString& infoText)
-{
- MetaInfo metaInfo;
- metaInfo.label = labelText;
- metaInfo.info = infoText;
-
- // add the meta information alphabetically sorted
- bool inserted = false;
- const int count = m_metaInfos.size();
- for (int i = 0; i < count; ++i) {
- if (m_metaInfos[i].label > labelText) {
- m_metaInfos.insert(i, metaInfo);
- inserted = true;
- break;
- }
- }
- if (!inserted) {
- m_metaInfos.append(metaInfo);
- }
-
- setMinimumHeight(minimumHeight() + requiredHeight(metaInfo));
- update();
-}
-
-void MetaTextLabel::paintEvent(QPaintEvent* event)
-{
- QWidget::paintEvent(event);
-
- QPainter painter(this);
-
- const QColor infoColor = palette().color(QPalette::Foreground);
- QColor labelColor = infoColor;
- labelColor.setAlpha(128);
-
- int y = 0;
- const int infoWidth = infoTextWidth();
- const int labelWidth = labelTextWidth();
- const int infoX = infoWidth;
- const int maxHeight = maxHeightPerLine();
-
- foreach (const MetaInfo& metaInfo, m_metaInfos) {
- // draw label (e. g. "Date:")
- painter.setPen(labelColor);
- painter.drawText(0, y, labelWidth, maxHeight,
- Qt::AlignTop | Qt::AlignRight | Qt::TextWordWrap,
- metaInfo.label);
-
- // draw information (e. g. "2008-11-09 20:12")
- painter.setPen(infoColor);
- painter.drawText(infoX, y, infoWidth, maxHeight,
- Qt::AlignTop | Qt::AlignLeft | Qt::TextWordWrap,
- metaInfo.info);
-
- y += requiredHeight(metaInfo);
- }
-}
-
-void MetaTextLabel::resizeEvent(QResizeEvent* event)
-{
- QWidget::resizeEvent(event);
-
- int minimumHeight = 0;
- foreach (const MetaInfo& metaInfo, m_metaInfos) {
- minimumHeight += requiredHeight(metaInfo);
- }
- setMinimumHeight(minimumHeight);
-}
-
-int MetaTextLabel::requiredHeight(const MetaInfo& info) const
-{
- const int labelTextHeight = requiredHeight(info.label, labelTextWidth());
- const int infoTextHeight = requiredHeight(info.info, infoTextWidth());
- return qMax(labelTextHeight, infoTextHeight);
-}
-
-int MetaTextLabel::requiredHeight(const QString& text, int width) const
-{
- QTextOption textOption;
- textOption.setWrapMode(QTextOption::WordWrap);
-
- qreal height = 0;
- const int leading = fontMetrics().leading();
-
- QTextLayout textLayout(text);
- textLayout.setFont(font());
- textLayout.setTextOption(textOption);
-
- textLayout.beginLayout();
- QTextLine line = textLayout.createLine();
- while (line.isValid()) {
- line.setLineWidth(width);
- height += leading;
- height += line.height();
- line = textLayout.createLine();
- }
- textLayout.endLayout();
-
- int adjustedHeight = static_cast<int>(height);
- if (adjustedHeight > maxHeightPerLine()) {
- adjustedHeight = maxHeightPerLine();
- }
-
- return adjustedHeight + Spacing;
-}
-
-int MetaTextLabel::maxHeightPerLine() const
-{
- return fontMetrics().height() * 100;
-}
-
-#include "metatextlabel.moc"