summaryrefslogtreecommitdiffstats
path: root/src/kvilib/tal/kvi_tal_listview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/kvilib/tal/kvi_tal_listview.cpp')
-rw-r--r--src/kvilib/tal/kvi_tal_listview.cpp774
1 files changed, 0 insertions, 774 deletions
diff --git a/src/kvilib/tal/kvi_tal_listview.cpp b/src/kvilib/tal/kvi_tal_listview.cpp
index 997eda30..c41c909e 100644
--- a/src/kvilib/tal/kvi_tal_listview.cpp
+++ b/src/kvilib/tal/kvi_tal_listview.cpp
@@ -28,779 +28,6 @@
#include "kvi_pointerhashtable.h"
-#ifdef COMPILE_USE_QT4
- #include <tqpainter.h>
- #include <tqstyle.h>
- #include <tq3header.h>
- #include <tqapplication.h>
- #include <tqhash.h>
- #include <tqstyleoption.h>
- #include <tqaccessible.h>
-
- static TQStyleOptionQ3ListView getStyleOption(const Q3ListView *lv, const Q3ListViewItem *item)
- {
- TQStyleOptionQ3ListView opt;
- opt.init(lv);
- opt.subControls = TQStyle::SC_None;
- opt.activeSubControls = TQStyle::SC_None;
- TQWidget *vp = lv->viewport();
- opt.viewportPalette = vp->palette();
- opt.viewportBGRole = vp->backgroundRole();
- opt.itemMargin = lv->itemMargin();
- opt.sortColumn = 0;
- opt.treeStepSize = lv->treeStepSize();
- opt.rootIsDecorated = lv->rootIsDecorated();
- bool firstItem = true;
- while (item) {
- TQStyleOptionQ3ListViewItem lvi;
- lvi.height = item->height();
- lvi.totalHeight = item->totalHeight();
- lvi.itemY = item->itemPos();
- lvi.childCount = item->childCount();
- lvi.features = TQStyleOptionQ3ListViewItem::None;
- lvi.state = TQStyle::State_None;
- if (item->isEnabled())
- lvi.state |= TQStyle::State_Enabled;
- if (item->isOpen())
- lvi.state |= TQStyle::State_Open;
- if (item->isExpandable())
- lvi.features |= TQStyleOptionQ3ListViewItem::Expandable;
- if (item->multiLinesEnabled())
- lvi.features |= TQStyleOptionQ3ListViewItem::MultiLine;
- if (item->isVisible())
- lvi.features |= TQStyleOptionQ3ListViewItem::Visible;
- if (item->parent() && item->parent()->rtti() == 1
- && static_cast<Q3CheckListItem *>(item->parent())->type() == Q3CheckListItem::Controller)
- lvi.features |= TQStyleOptionQ3ListViewItem::ParentControl;
- opt.items.append(lvi);
- if (!firstItem) {
- item = item->nextSibling();
- } else {
- firstItem = false;
- item = item->firstChild();
- }
- }
- return opt;
- }
-
- KviTalListView::KviTalListView(TQWidget * pParent)
- : Q3ListView(pParent)
- {
- connect(this,TQT_SIGNAL(selectionChanged(Q3ListViewItem *)),this,TQT_SLOT(redirect_selectionChanged(Q3ListViewItem *)));
- connect(this,TQT_SIGNAL(currentChanged(Q3ListViewItem *)),this,TQT_SLOT(redirect_currentChanged(Q3ListViewItem *)));
- connect(this,TQT_SIGNAL(clicked(Q3ListViewItem *)),this,TQT_SLOT(redirect_clicked(Q3ListViewItem *)));
- connect(this,TQT_SIGNAL(clicked(Q3ListViewItem *,const TQPoint &,int)),this,TQT_SLOT(redirect_clicked(Q3ListViewItem *,const TQPoint &,int)));
- connect(this,TQT_SIGNAL(pressed(Q3ListViewItem *)),this,TQT_SLOT(redirect_pressed(Q3ListViewItem *)));
- connect(this,TQT_SIGNAL(pressed(Q3ListViewItem *,const TQPoint &,int)),this,TQT_SLOT(redirect_pressed(Q3ListViewItem *,const TQPoint &,int)));
- connect(this,TQT_SIGNAL(doubleClicked(Q3ListViewItem *)),this,TQT_SLOT(redirect_doubleClicked(Q3ListViewItem *)));
- connect(this,TQT_SIGNAL(doubleClicked(Q3ListViewItem *,const TQPoint &,int)),this,TQT_SLOT(redirect_doubleClicked(Q3ListViewItem *,const TQPoint &,int)));
- connect(this,TQT_SIGNAL(returnPressed(Q3ListViewItem *)),this,TQT_SLOT(redirect_returnPressed(Q3ListViewItem *)));
- connect(this,TQT_SIGNAL(spacePressed(Q3ListViewItem *)),this,TQT_SLOT(redirect_spacePressed(Q3ListViewItem *)));
- connect(this,TQT_SIGNAL(rightButtonClicked(Q3ListViewItem *,const TQPoint &,int)),this,TQT_SLOT(redirect_rightButtonClicked(Q3ListViewItem *,const TQPoint &,int)));
- connect(this,TQT_SIGNAL(rightButtonPressed(Q3ListViewItem *,const TQPoint &,int)),this,TQT_SLOT(redirect_rightButtonPressed(Q3ListViewItem *,const TQPoint &,int)));
- connect(this,TQT_SIGNAL(mouseButtonClicked(int,Q3ListViewItem *,const TQPoint &,int)),this,TQT_SLOT(redirect_mouseButtonClicked(int,Q3ListViewItem *,const TQPoint &,int)));
- connect(this,TQT_SIGNAL(mouseButtonPressed(int,Q3ListViewItem *,const TQPoint &,int)),this,TQT_SLOT(redirect_mouseButtonPressed(int,Q3ListViewItem *,const TQPoint &,int)));
- connect(this,TQT_SIGNAL(contextMenuRequested(Q3ListViewItem *,const TQPoint &,int)),this,TQT_SLOT(redirect_contextMenuRequested(Q3ListViewItem *,const TQPoint &,int)));
- connect(this,TQT_SIGNAL(onItem(Q3ListViewItem *)),this,TQT_SLOT(redirect_onItem(Q3ListViewItem *)));
- connect(this,TQT_SIGNAL(expanded(Q3ListViewItem *)),this,TQT_SLOT(redirect_expanded(Q3ListViewItem *)));
- connect(this,TQT_SIGNAL(collapsed(Q3ListViewItem *)),this,TQT_SLOT(redirect_collapsed(Q3ListViewItem *)));
- }
-
- void KviTalListView::redirect_selectionChanged(Q3ListViewItem * pItem)
- {
- emit selectionChanged((KviTalListViewItem *)pItem);
- }
-
- void KviTalListView::redirect_currentChanged(Q3ListViewItem * pItem)
- {
- emit currentChanged((KviTalListViewItem *)pItem);
- }
-
- void KviTalListView::redirect_clicked(Q3ListViewItem * pItem)
- {
- emit clicked((KviTalListViewItem *)pItem);
- }
-
- void KviTalListView::redirect_clicked(Q3ListViewItem * pItem,const TQPoint &pnt,int uColumn)
- {
- emit clicked((KviTalListViewItem *)pItem,pnt,uColumn);
- }
-
- void KviTalListView::redirect_pressed(Q3ListViewItem * pItem)
- {
- emit pressed((KviTalListViewItem *)pItem);
- }
-
- void KviTalListView::redirect_pressed(Q3ListViewItem * pItem,const TQPoint &pnt,int uColumn)
- {
- emit pressed((KviTalListViewItem *)pItem,pnt,uColumn);
- }
-
- void KviTalListView::redirect_doubleClicked(Q3ListViewItem * pItem)
- {
- emit doubleClicked((KviTalListViewItem *)pItem);
- }
-
- void KviTalListView::redirect_doubleClicked(Q3ListViewItem * pItem,const TQPoint &pnt,int uColumn)
- {
- emit doubleClicked((KviTalListViewItem *)pItem,pnt,uColumn);
- }
-
- void KviTalListView::redirect_returnPressed(Q3ListViewItem * pItem)
- {
- emit returnPressed((KviTalListViewItem *)pItem);
- }
-
- void KviTalListView::redirect_spacePressed(Q3ListViewItem * pItem)
- {
- emit spacePressed((KviTalListViewItem *)pItem);
- }
-
- void KviTalListView::redirect_rightButtonClicked(Q3ListViewItem * pItem,const TQPoint &pnt,int uColumn)
- {
- emit rightButtonClicked((KviTalListViewItem *)pItem,pnt,uColumn);
- }
-
- void KviTalListView::redirect_rightButtonPressed(Q3ListViewItem * pItem,const TQPoint &pnt,int uColumn)
- {
- emit rightButtonPressed((KviTalListViewItem *)pItem,pnt,uColumn);
- }
-
- void KviTalListView::redirect_mouseButtonClicked(int iButton,Q3ListViewItem * pItem,const TQPoint &pnt,int uColumn)
- {
- emit mouseButtonClicked(iButton,(KviTalListViewItem *)pItem,pnt,uColumn);
- }
-
- void KviTalListView::redirect_mouseButtonPressed(int iButton,Q3ListViewItem * pItem,const TQPoint &pnt,int uColumn)
- {
- emit mouseButtonPressed(iButton,(KviTalListViewItem *)pItem,pnt,uColumn);
- }
-
- void KviTalListView::redirect_contextMenuRequested(Q3ListViewItem * pItem,const TQPoint &pnt,int uColumn)
- {
- emit contextMenuRequested((KviTalListViewItem *)pItem,pnt,uColumn);
- }
-
- void KviTalListView::redirect_onItem(Q3ListViewItem * pItem)
- {
- emit onItem((KviTalListViewItem *)pItem);
- }
-
- void KviTalListView::redirect_expanded(Q3ListViewItem * pItem)
- {
- emit expanded((KviTalListViewItem *)pItem);
- }
-
- void KviTalListView::redirect_collapsed(Q3ListViewItem * pItem)
- {
- emit collapsed((KviTalListViewItem *)pItem);
- }
-
-
- struct KviTalCheckListItemPrivate
- {
- KviTalCheckListItemPrivate():
- exclusive(0),
- currentState(KviTalCheckListItem::Off),
- tristate(false) {}
-
- KviTalCheckListItem *exclusive;
- KviTalCheckListItem::ToggleState currentState;
- TQHash<KviTalCheckListItem *, KviTalCheckListItem::ToggleState> statesDict;
- bool tristate;
- };
-
- KviTalCheckListItem::KviTalCheckListItem(KviTalCheckListItem *parent, const TQString &text,
- Type tt)
- : KviTalListViewItem(parent, text, TQString())
- {
- myType = tt;
- init();
- if (myType == RadioButton) {
- if (parent->type() != RadioButtonController)
- tqWarning("KviTalCheckListItem::KviTalCheckListItem(), radio button must be "
- "child of a controller");
- else
- d->exclusive = parent;
- }
- }
-
- KviTalCheckListItem::KviTalCheckListItem(KviTalCheckListItem *parent, KviTalListViewItem *after,
- const TQString &text, Type tt)
- : KviTalListViewItem(parent, after, text)
- {
- myType = tt;
- init();
- if (myType == RadioButton) {
- if (parent->type() != RadioButtonController)
- tqWarning("KviTalCheckListItem::KviTalCheckListItem(), radio button must be "
- "child of a controller");
- else
- d->exclusive = parent;
- }
- }
-
- KviTalCheckListItem::KviTalCheckListItem(KviTalListViewItem *parent, const TQString &text,
- Type tt)
- : KviTalListViewItem(parent, text, TQString())
- {
- myType = tt;
- if (myType == RadioButton) {
- tqWarning("KviTalCheckListItem::KviTalCheckListItem(), radio button must be "
- "child of a KviTalCheckListItem");
- }
- init();
- }
-
- KviTalCheckListItem::KviTalCheckListItem(KviTalListViewItem *parent, KviTalListViewItem *after,
- const TQString &text, Type tt)
- : KviTalListViewItem(parent, after, text)
- {
- myType = tt;
- if (myType == RadioButton) {
- tqWarning("KviTalCheckListItem::KviTalCheckListItem(), radio button must be "
- "child of a KviTalCheckListItem");
- }
- init();
- }
-
- KviTalCheckListItem::KviTalCheckListItem(KviTalListView *parent, const TQString &text,
- Type tt)
- : KviTalListViewItem(parent, text)
- {
- myType = tt;
- if (tt == RadioButton)
- tqWarning("KviTalCheckListItem::KviTalCheckListItem(), radio button must be "
- "child of a KviTalCheckListItem");
- init();
- }
-
- KviTalCheckListItem::KviTalCheckListItem(KviTalListView *parent, KviTalListViewItem *after,
- const TQString &text, Type tt)
- : KviTalListViewItem(parent, after, text)
- {
- myType = tt;
- if (tt == RadioButton)
- tqWarning("KviTalCheckListItem::KviTalCheckListItem(), radio button must be "
- "child of a KviTalCheckListItem");
- init();
- }
-
- int KviTalCheckListItem::rtti() const
- {
- return RTTI;
- }
-
- KviTalCheckListItem::KviTalCheckListItem(KviTalListView *parent, const TQString &text,
- const TQPixmap & p)
- : KviTalListViewItem(parent, text)
- {
- myType = RadioButtonController;
- setPixmap(0, p);
- init();
- }
-
- KviTalCheckListItem::KviTalCheckListItem(KviTalListViewItem *parent, const TQString &text,
- const TQPixmap & p)
- : KviTalListViewItem(parent, text)
- {
- myType = RadioButtonController;
- setPixmap(0, p);
- init();
- }
-
- void KviTalCheckListItem::init()
- {
- d = new KviTalCheckListItemPrivate();
- on = false; // ### remove on ver 4
- // CheckBoxControllers by default have tristate set to true
- if (myType == CheckBoxController)
- setTristate(true);
- }
-
- KviTalCheckListItem::~KviTalCheckListItem()
- {
- if (myType == RadioButton
- && d->exclusive && d->exclusive->d
- && d->exclusive->d->exclusive == this)
- d->exclusive->turnOffChild();
- d->exclusive = 0; // so the children won't try to access us.
- delete d;
- d = 0;
- }
-
- void KviTalCheckListItem::setTristate(bool b)
- {
- if ((myType != CheckBoxController) && (myType != CheckBox)) {
- tqWarning("KviTalCheckListItem::setTristate(), has no effect on RadioButton "
- "or RadioButtonController.");
- return;
- }
- d->tristate = b;
- }
-
- bool KviTalCheckListItem::isTristate() const
- {
- return d->tristate;
- }
-
- KviTalCheckListItem::ToggleState KviTalCheckListItem::state() const
- {
- if (!isTristate() && internalState() == NoChange)
- return Off;
- else
- return d->currentState;
- }
-
- KviTalCheckListItem::ToggleState KviTalCheckListItem::internalState() const
- {
- return d->currentState;
- }
-
- void KviTalCheckListItem::setState(ToggleState s)
- {
- if (myType == CheckBoxController && state() == NoChange)
- updateStoredState(this);
- setState(s, true, true);
- }
-
- void KviTalCheckListItem::setState(ToggleState s, bool update, bool store)
- {
-
- if (s == internalState())
- return;
-
- if (myType == CheckBox) {
- setCurrentState(s);
- stateChange(state());
- if (update && parent() && parent()->rtti() == 1
- && ((KviTalCheckListItem*)parent())->type() == CheckBoxController)
- ((KviTalCheckListItem*)parent())->updateController(update, store);
- } else if (myType == CheckBoxController) {
- if (s == NoChange && childCount()) {
- restoreState(this);
- } else {
- KviTalListViewItem *item = firstChild();
- int childCount = 0;
- while(item) {
- if (item->rtti() == 1 &&
- (((KviTalCheckListItem*)item)->type() == CheckBox ||
- ((KviTalCheckListItem*)item)->type() == CheckBoxController)) {
- KviTalCheckListItem *checkItem = (KviTalCheckListItem*)item;
- checkItem->setState(s, false, false);
- childCount++;
- }
- item = item->nextSibling();
- }
- if (update) {
- if (childCount > 0) {
- ToggleState oldState = internalState();
- updateController(false, false);
- if (oldState != internalState() &&
- parent() && parent()->rtti() == 1 &&
- ((KviTalCheckListItem*)parent())->type() == CheckBoxController)
- ((KviTalCheckListItem*)parent())->updateController(update, store);
-
- updateController(update, store);
- } else {
- // if there are no children we simply set the CheckBoxController and update its parent
- setCurrentState(s);
- stateChange(state());
- if (parent() && parent()->rtti() == 1
- && ((KviTalCheckListItem*)parent())->type() == CheckBoxController)
- ((KviTalCheckListItem*)parent())->updateController(update, store);
- }
- } else {
- setCurrentState(s);
- stateChange(state());
- }
-
- }
- } else if (myType == RadioButton) {
- if (s == On) {
- if (d->exclusive && d->exclusive->d->exclusive != this)
- d->exclusive->turnOffChild();
- setCurrentState(s);
- if (d->exclusive)
- d->exclusive->d->exclusive = this;
- } else {
- if (d->exclusive && d->exclusive->d->exclusive == this)
- d->exclusive->d->exclusive = 0;
- setCurrentState(Off);
- }
- stateChange(state());
- }
- repaint();
- }
-
- void KviTalCheckListItem::setCurrentState(ToggleState s)
- {
- ToggleState old = d->currentState;
- d->currentState = s;
- if (d->currentState == On)
- on = true;
- else
- on = false;
-
- //#ifndef TQT_NO_ACCESSIBILITY
- // if (old != d->currentState && listView())
- // TQAccessible::updateAccessibility(listView()->viewport(), indexOfItem(this), TQAccessible::StateChanged);
- //#else
- // Q_UNUSED(old);
- //#endif
- }
-
- void KviTalCheckListItem::setStoredState(ToggleState newState, KviTalCheckListItem *key)
- {
- if (myType == CheckBox || myType == CheckBoxController)
- d->statesDict[key] = newState;
- }
-
- KviTalCheckListItem::ToggleState KviTalCheckListItem::storedState(KviTalCheckListItem *key) const
- {
- TQHash<KviTalCheckListItem *, KviTalCheckListItem::ToggleState>::Iterator it = d->statesDict.find(key);
- if (it != d->statesDict.end())
- return it.value();
- else
- return Off;
- }
-
- void KviTalCheckListItem::turnOffChild()
- {
- if (myType == RadioButtonController && d->exclusive)
- d->exclusive->setOn(false);
- }
-
- void KviTalCheckListItem::activate()
- {
- KviTalListView * lv = listView();
-
- if (lv && !lv->isEnabled() || !isEnabled())
- return;
-
- TQPoint pos;
- int boxsize = lv->style()->pixelMetric(TQStyle::PM_CheckListButtonSize, 0, lv);
- if (activatedPos(pos)) {
- bool parentControl = false;
- if (parent() && parent()->rtti() == 1 &&
- ((KviTalCheckListItem*) parent())->type() == RadioButtonController)
- parentControl = true;
-
- int x = parentControl ? 0 : 3;
- int align = lv->columnAlignment(0);
- int marg = lv->itemMargin();
- int y = 0;
-
- if (align & TQt::AlignVCenter)
- y = ((height() - boxsize) / 2) + marg;
- else
- y = (lv->fontMetrics().height() + 2 + marg - boxsize) / 2;
-
- TQRect r(x, y, boxsize-3, boxsize-3);
- // columns might have been swapped
- r.moveBy(lv->header()->sectionPos(0), 0);
- if (!r.contains(pos))
- return;
- }
- if ((myType == CheckBox) || (myType == CheckBoxController)) {
- //lv->d->startEdit = FALSE;
- switch (internalState()) {
- case On:
- setState(Off);
- break;
- case Off:
- if (!isTristate() && myType == CheckBox) {
- setState(On);
- } else {
- setState(NoChange);
- if (myType == CheckBoxController && internalState() != NoChange)
- setState(On);
- }
- break;
- case NoChange:
- setState(On);
- break;
- }
- ignoreDoubleClick();
- } else if (myType == RadioButton) {
- setOn(true);
- ignoreDoubleClick();
- }
- }
-
- void KviTalCheckListItem::setOn(bool b )
- {
- if (b)
- setState(On , true, true);
- else
- setState(Off , true, true);
- }
-
- void KviTalCheckListItem::stateChange(bool)
- {
- }
-
- void KviTalCheckListItem::stateChange(ToggleState s)
- {
- stateChange(s == On);
- }
-
- void KviTalCheckListItem::restoreState(KviTalCheckListItem *key, int depth)
- {
- switch (type()) {
- case CheckBox:
- setCurrentState(storedState(key));
- stateChange(state());
- repaint();
- break;
- case CheckBoxController: {
- KviTalListViewItem *item = firstChild();
- int childCount = 0;
- while (item) {
- // recursively calling restoreState for children of type CheckBox and CheckBoxController
- if (item->rtti() == 1 &&
- (((KviTalCheckListItem*)item)->type() == CheckBox ||
- ((KviTalCheckListItem*)item)->type() == CheckBoxController)) {
- ((KviTalCheckListItem*)item)->restoreState(key , depth+1);
- childCount++;
- }
- item = item->nextSibling();
- }
- if (childCount > 0) {
- if (depth == 0)
- updateController(true);
- else
- updateController(false);
- } else {
- // if there are no children we retrieve the CheckBoxController state directly.
- setState(storedState(key), true, false);
- }
- }
- break;
- default:
- break;
- }
- }
-
- void KviTalCheckListItem::updateController(bool update , bool store)
- {
- if (myType != CheckBoxController)
- return;
-
- KviTalCheckListItem *controller = 0;
- // checks if this CheckBoxController has another CheckBoxController as parent
- if (parent() && parent()->rtti() == 1
- && ((KviTalCheckListItem*)parent())->type() == CheckBoxController)
- controller = (KviTalCheckListItem*)parent();
-
- ToggleState theState = Off;
- bool first = true;
- KviTalListViewItem *item = firstChild();
- while(item && theState != NoChange) {
- if (item->rtti() == 1 &&
- (((KviTalCheckListItem*)item)->type() == CheckBox ||
- ((KviTalCheckListItem*)item)->type() == CheckBoxController)) {
- KviTalCheckListItem *checkItem = (KviTalCheckListItem*)item;
- if (first) {
- theState = checkItem->internalState();
- first = false;
- } else {
- if (checkItem->internalState() == NoChange ||
- theState != checkItem->internalState())
- theState = NoChange;
- else
- theState = checkItem->internalState();
- }
- }
- item = item->nextSibling();
- }
- if (internalState() != theState) {
- setCurrentState(theState);
- if (store && (internalState() == On || internalState() == Off))
- updateStoredState(this);
- stateChange(state());
- if (update && controller) {
- controller->updateController(update, store);
- }
- repaint();
- }
- }
-
- void KviTalCheckListItem::updateStoredState(KviTalCheckListItem *key)
- {
- if (myType != CheckBoxController)
- return;
-
- KviTalListViewItem *item = firstChild();
- while(item) {
- if (item->rtti() == 1) {
- KviTalCheckListItem *checkItem = (KviTalCheckListItem*)item;
- if (checkItem->type() == CheckBox)
- checkItem->setStoredState(checkItem->internalState(), key);
- else if (checkItem->type() == CheckBoxController)
- checkItem->updateStoredState(key);
- }
- item = item->nextSibling();
- }
- // this state is only needed if the CheckBoxController has no CheckBox / CheckBoxController children.
- setStoredState(internalState() , key);
- }
-
- void KviTalCheckListItem::setup()
- {
- KviTalListViewItem::setup();
- int h = height();
- KviTalListView *lv = listView();
- if (lv)
- h = qMax(lv->style()->pixelMetric(TQStyle::PM_CheckListButtonSize, 0, lv),
- h);
- h = qMax(h, TQApplication::globalStrut().height());
- setHeight(h);
- }
-
- int KviTalCheckListItem::width(const TQFontMetrics& fm, const KviTalListView* lv, int column) const
- {
- int r = KviTalListViewItem::width(fm, lv, column);
- if (column == 0) {
- r += lv->itemMargin();
- if (myType == RadioButtonController && pixmap(0)) {
- // r += 0;
- } else {
- r += lv->style()->pixelMetric(TQStyle::PM_CheckListButtonSize, 0, lv) + 4;
- }
- }
- return qMax(r, TQApplication::globalStrut().width());
- }
-
- void KviTalCheckListItem::paintCell(TQPainter * p, const TQColorGroup & cg,
- int column, int width, int align)
- {
- if (!p)
- return;
-
- KviTalListView *lv = listView();
- if (!lv)
- return;
-
- const TQPalette::ColorRole crole = lv->foregroundRole();
- if (cg.brush(crole) != lv->palette().brush(crole))
- p->fillRect(0, 0, width, height(), cg.brush(crole));
- else
- lv->paintEmptyArea(p, TQRect(0, 0, width, height()));
-
- if (column != 0) {
- // The rest is text, or for subclasses to change.
- KviTalListViewItem::paintCell(p, cg, column, width, align);
- return;
- }
-
- bool parentControl = false;
- if (parent() && parent()->rtti() == 1 &&
- ((KviTalCheckListItem*) parent())->type() == RadioButtonController)
- parentControl = true;
-
- TQFontMetrics fm(lv->fontMetrics());
- int boxsize = lv->style()->pixelMetric(myType == RadioButtonController ? TQStyle::PM_CheckListControllerSize :
- TQStyle::PM_CheckListButtonSize, 0, lv);
- int marg = lv->itemMargin();
- int r = marg;
-
- // Draw controller / checkbox / radiobutton ---------------------
- TQStyle::State styleflags = TQStyle::State_None;
- if (internalState() == On) {
- styleflags |= TQStyle::State_On;
- } else if (internalState() == NoChange) {
- if (myType == CheckBoxController && !isTristate())
- styleflags |= TQStyle::State_Off;
- else
- styleflags |= TQStyle::State_NoChange;
- } else {
- styleflags |= TQStyle::State_Off;
- }
- if (isSelected())
- styleflags |= TQStyle::State_Selected;
- if (isEnabled() && lv->isEnabled())
- styleflags |= TQStyle::State_Enabled;
- if (lv->window()->isActiveWindow())
- styleflags |= TQStyle::State_Active;
-
- if (myType == RadioButtonController) {
- int x = 0;
- if(!parentControl)
- x += 3;
- if (!pixmap(0)) {
- TQStyleOptionQ3ListView opt = getStyleOption(lv, this);
- opt.rect.setRect(x, 0, boxsize, fm.height() + 2 + marg);
- opt.palette = cg;
- opt.state = styleflags;
- lv->style()->drawPrimitive(TQStyle::PE_Q3CheckListController, &opt, p, lv);
- r += boxsize + 4;
- }
- } else {
- Q_ASSERT(lv); //###
- int x = 0;
- int y = 0;
- if (!parentControl)
- x += 3;
- if (align & TQt::AlignVCenter)
- y = ((height() - boxsize) / 2) + marg;
- else
- y = (fm.height() + 2 + marg - boxsize) / 2;
-
- TQStyleOptionQ3ListView opt = getStyleOption(lv, this);
- opt.rect.setRect(x, y, boxsize, fm.height() + 2 + marg);
- opt.palette = cg;
- opt.state = styleflags;
- lv->style()->drawPrimitive((myType == CheckBox || myType == CheckBoxController)
- ? TQStyle::PE_Q3CheckListIndicator
- : TQStyle::PE_Q3CheckListExclusiveIndicator, &opt, p, lv);
- r += boxsize + 4;
- }
-
- // Draw text ----------------------------------------------------
- p->translate(r, 0);
- p->setPen(TQPen(cg.text()));
- KviTalListViewItem::paintCell(p, cg, column, width - r, align);
- }
-
- void KviTalCheckListItem::paintFocus(TQPainter *p, const TQColorGroup & cg,
- const TQRect & r)
- {
- bool intersect = true;
- KviTalListView *lv = listView();
- if (lv && lv->header()->mapToActual(0) != 0) {
- int xdepth = lv->treeStepSize() * (depth() + (lv->rootIsDecorated() ? 1 : 0)) + lv->itemMargin();
- int p = lv->header()->cellPos(lv->header()->mapToActual(0));
- xdepth += p;
- intersect = r.intersects(TQRect(p, r.y(), xdepth - p + 1, r.height()));
- }
- bool parentControl = false;
- if (parent() && parent()->rtti() == 1 &&
- ((KviTalCheckListItem*) parent())->type() == RadioButtonController)
- parentControl = true;
- if (myType != RadioButtonController && intersect &&
- (lv->rootIsDecorated() || myType == RadioButton ||
- (myType == CheckBox && parentControl))) {
- TQRect rect;
- int boxsize = lv->style()->pixelMetric(TQStyle::PM_CheckListButtonSize, 0, lv);
- if (lv->columnAlignment(0) == TQt::AlignCenter) {
- TQFontMetrics fm(lv->font());
- int bx = (lv->columnWidth(0) - (boxsize + fm.width(text())))/2 + boxsize;
- if (bx < 0) bx = 0;
- rect.setRect(r.x() + bx + 5, r.y(), r.width() - bx - 5,
- r.height());
- } else
- rect.setRect(r.x() + boxsize + 5, r.y(), r.width() - boxsize - 5,
- r.height());
- KviTalListViewItem::paintFocus(p, cg, rect);
- } else {
- KviTalListViewItem::paintFocus(p, cg, r);
- }
- }
-
-
- #include "kvi_tal_listview_qt4.moc"
-#else
#include <tqpainter.h>
#include <tqstyle.h>
#include <tqheader.h>
@@ -1536,7 +763,6 @@
}
#include "kvi_tal_listview_qt3.moc"
-#endif