Diffstat (limited to 'pwmanager/pwmanager/listviewpwm.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | pwmanager/pwmanager/listviewpwm.cpp | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/pwmanager/pwmanager/listviewpwm.cpp b/pwmanager/pwmanager/listviewpwm.cpp new file mode 100644 index 0000000..b987c9e --- a/dev/null +++ b/pwmanager/pwmanager/listviewpwm.cpp @@ -0,0 +1,86 @@ +/*************************************************************************** + * * + * copyright (C) 2004 by Michael Buesch * + * email: mbuesch@freenet.de * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License version 2 * + * as published by the Free Software Foundation. * + * * + ***************************************************************************/ + +/*************************************************************************** + * copyright (C) 2004 by Ulf Schenk + * This file is originaly based on version 1.0.1 of pwmanager + * and was modified to run on embedded devices that run microkde + * + * $Id$ + **************************************************************************/ + +#include "listviewpwm.h" +#include "pwmexception.h" + +#include <qpainter.h> +#include <qpixmap.h> + +#include <kiconloader.h> + + +ListViewPwM::ListViewPwM(QWidget *parent, const char *name) + : KListView(parent, name) +{ +// setResizeMode(QListView::AllColumns); +} + +bool ListViewPwM::event(QEvent *e) +{ + if (e->type() == QEvent::LayoutHint) + emit layoutChanged(); + return KListView::event(e); +} + + +QPixmap * ListViewItemPwM::onPix = 0; +QPixmap * ListViewItemPwM::offPix = 0; + +ListViewItemPwM::ListViewItemPwM(QListView *parent) + : QCheckListItem(parent, "", QCheckListItem::CheckBox) +{ + if (!onPix) { + PWM_ASSERT(!offPix); + KIconLoader il; + static QPixmap onP(il.loadIcon("button_ok", KIcon::Small)); + onPix = &onP; + static QPixmap offP(il.loadIcon("encrypted", KIcon::Small)); + offPix = &offP; + } +} + +void ListViewItemPwM::paintCell(QPainter *p, const QColorGroup &cg, + int column, int width, int align) +{ + if (!p) + return; + if (column != 0) { + QCheckListItem::paintCell(p, cg, column, width, align); + return; + } + QPixmap *curPix = isOn() ? onPix : offPix; + int pixSpace = curPix->width(); + pixSpace += 4; +#ifndef PWM_EMBEDDED + QRect window(p->viewport()); + // clear the rectangle (we have to clear it first. see QT doc) + p->eraseRect(0, 0, pixSpace, window.height()); + // now draw the pixmap + int y = (height() - curPix->height()) / 2; + p->drawPixmap(1, y, *curPix); + window.moveLeft(pixSpace); + p->setViewport(window); +#endif + QListViewItem::paintCell(p, cg, column, width - pixSpace, align); +} + +#ifndef PWM_EMBEDDED +#include "listviewpwm.moc" +#endif |