You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdepim/akregator/src/treenodeitem.cpp

166 lines
4.2 KiB

/*
This file is part of Akregator.
Copyright (C) 2004 Frank Osterfeld <frank.osterfeld at kdemail.net>
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 TQt, and distribute the resulting executable,
without including the source code for TQt in the source distribution.
*/
#include "treenode.h"
#include "treenodeitem.h"
#include "folderitem.h"
#include <tqfont.h>
#include <tqheader.h>
#include <tqpainter.h>
#include <tqstring.h>
#include <kstringhandler.h>
#include <kdebug.h>
namespace Akregator {
TreeNodeItem::TreeNodeItem(FolderItem* parent, TreeNode* node)
: TDEListViewItem(parent), m_node(node)
{
initialize(node);
}
TreeNodeItem::TreeNodeItem(TDEListView* parent, TreeNode* node)
: TDEListViewItem(parent), m_node(node)
{
initialize(node);
}
TreeNodeItem::TreeNodeItem(TDEListView* parent, TreeNodeItem* after, TreeNode* node) : TDEListViewItem(parent, after), m_node(node)
{
initialize(node);
}
TreeNodeItem::TreeNodeItem(FolderItem* parent, TreeNodeItem* after, TreeNode* node)
: TDEListViewItem(parent, after), m_node(node)
{
initialize(node);
}
void TreeNodeItem::initialize(TreeNode* node)
{
setRenameEnabled(0, true);
if (node)
setText(0, node->title() );
}
TreeNodeItem::~TreeNodeItem()
{}
TQString TreeNodeItem::toolTip() const
{
return TQString();
}
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<TreeNodeItem*>(TDEListViewItem::firstChild());
}
TreeNodeItem* TreeNodeItem::nextSibling() const
{
return static_cast<TreeNodeItem*>(TDEListViewItem::nextSibling());
}
FolderItem* TreeNodeItem::parent() const
{
return static_cast<FolderItem*>(TDEListViewItem::parent());
}
// TODO: reverse for reverse layout
void TreeNodeItem::paintCell( TQPainter * p, const TQColorGroup & cg,
int column, int width, int align )
{
int u = node() ? node()->unread() : 0;
if (u <= 0)
{
TDEListViewItem::paintCell(p,cg,column,width,align);
return;
}
// from kfoldertree
TQString oldText = text(column);
setText( column, " " );
// draw bg
TDEListViewItem::paintCell(p,cg,column,width,align);
setText( column, oldText);
// draw fg
TQFont f = p->font();
f.setWeight(TQFont::Bold);
p->setFont(f);
TQFontMetrics fm( p->fontMetrics() );
TQListView *lv = listView();
int x = lv ? lv->itemMargin() : 1;
int m=x;
const TQPixmap *icon = pixmap( column );
TQRect br;
if (icon)
x += icon->width() + m;
TQString txt = " (" + TQString::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( TQt::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