From 460c52653ab0dcca6f19a4f492ed2c5e4e963ab0 Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdepim@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- akregator/src/treenodeitem.cpp | 165 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 165 insertions(+) create mode 100644 akregator/src/treenodeitem.cpp (limited to 'akregator/src/treenodeitem.cpp') diff --git a/akregator/src/treenodeitem.cpp b/akregator/src/treenodeitem.cpp new file mode 100644 index 000000000..8dd7ebdb4 --- /dev/null +++ b/akregator/src/treenodeitem.cpp @@ -0,0 +1,165 @@ +/* + This file is part of Akregator. + + Copyright (C) 2004 Frank Osterfeld + + 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. + + As a special exception, permission is given to link this program + with any edition of Qt, and distribute the resulting executable, + without including the source code for Qt in the source distribution. +*/ + +#include "treenode.h" +#include "treenodeitem.h" +#include "folderitem.h" +#include +#include +#include +#include + +#include + +#include + +namespace Akregator { + +TreeNodeItem::TreeNodeItem(FolderItem* parent, TreeNode* node) + : KListViewItem(parent), m_node(node) +{ + initialize(node); +} + +TreeNodeItem::TreeNodeItem(KListView* parent, TreeNode* node) + : KListViewItem(parent), m_node(node) +{ + initialize(node); +} + +TreeNodeItem::TreeNodeItem(KListView* parent, TreeNodeItem* after, TreeNode* node) : KListViewItem(parent, after), m_node(node) +{ + initialize(node); +} + +TreeNodeItem::TreeNodeItem(FolderItem* parent, TreeNodeItem* after, TreeNode* node) + : KListViewItem(parent, after), m_node(node) +{ + initialize(node); +} + +void TreeNodeItem::initialize(TreeNode* node) +{ + setRenameEnabled(0, true); + if (node) + setText(0, node->title() ); +} + +TreeNodeItem::~TreeNodeItem() +{} + +QString TreeNodeItem::toolTip() const +{ + return QString::null; +} + +TreeNode* TreeNodeItem::node() +{ + return m_node; +} + +void TreeNodeItem::nodeChanged() +{ +// kdDebug() << "enter TreeNodeItem::nodeChanged item" << text(0) << endl; + if (!node()) + return; + if (text(0) != node()->title()) + setText(0, node()->title()); +// kdDebug() << "leave TreeNodeItem::nodeChanged item" << text(0) << endl; +} + +TreeNodeItem* TreeNodeItem::firstChild() const +{ + return static_cast(KListViewItem::firstChild()); +} + +TreeNodeItem* TreeNodeItem::nextSibling() const +{ + return static_cast(KListViewItem::nextSibling()); +} + +FolderItem* TreeNodeItem::parent() const +{ + return static_cast(KListViewItem::parent()); +} + + +// TODO: reverse for reverse layout +void TreeNodeItem::paintCell( QPainter * p, const QColorGroup & cg, + int column, int width, int align ) + +{ + int u = node() ? node()->unread() : 0; + + if (u <= 0) + { + KListViewItem::paintCell(p,cg,column,width,align); + return; + } + + // from kfoldertree + QString oldText = text(column); + setText( column, " " ); + + // draw bg + KListViewItem::paintCell(p,cg,column,width,align); + + setText( column, oldText); + + // draw fg + QFont f = p->font(); + f.setWeight(QFont::Bold); + p->setFont(f); + + QFontMetrics fm( p->fontMetrics() ); + QListView *lv = listView(); + int x = lv ? lv->itemMargin() : 1; + int m=x; + const QPixmap *icon = pixmap( column ); + QRect br; + + if (icon) + x += icon->width() + m; + + QString txt = " (" + QString::number(u) + ")"; + int txtW=fm.width( txt ); + + if (fm.width( oldText ) + txtW + x > width) + oldText=KStringHandler::rPixelSqueeze(oldText,fm, width - txtW - x); + + p->drawText( x, 0, width-m-x, height(), align | AlignVCenter, oldText, -1, &br ); + + if ( !isSelected() ) + p->setPen( Qt::blue ); // TODO: configurable + + p->drawText( br.right(), 0, width-m-br.right(), height(), + align | AlignVCenter, txt ); + + /*if ( isSelected() ) + p->setPen( cg.highlightedText() ); + else + p->setPen( cg.text() );*/ +} + +} // namespace Akregator -- cgit v1.2.1