/***************************************************************************
kuninstalllistview.cpp - description
-------------------
begin : Tue Mar 16 1999
copyright : (C) 1999 by Geri House
email : ge_ha@yahoo.com
***************************************************************************/
/***************************************************************************
* *
* 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. *
* *
***************************************************************************/
#include <kapp.h>
#include <kpopmenu.h>
#include "kuninstalllistview.h"
KUninstallListView::KUninstallListView( QWidget * parent, const char * name)
:QListView(parent, name) {
lastSize=0;
lastNumber=0;
setAllColumnsShowFocus(TRUE);
}
KUninstallListView::~KUninstallListView(){
}
void KUninstallListView::mousePressEvent ( QMouseEvent * m) {
KUninstallListItem *item=(KUninstallListItem*)itemAt(m->pos());
if (m->button() == LeftButton) {
if (item!=0 && item->parent()!=0) {
setSelected(item,TRUE);
int width=treeStepSize()*item->depth()+20;
if (m->x() < width || m->x() > width+18) {
bool setOpen = FALSE ;
if (item->isOn()==FALSE)
setOpen=TRUE;
checkItemAndChilds(item, setOpen);
emit changeChecked(item);
}
}
}
else if (m->button() == RightButton) {
if (childCount()!=0) {
KPopupMenu * menue= new KPopupMenu(i18n("Operations"),0, "Operations");
if (item!=0) {
setSelected(item,TRUE);
if (item->isOpen()==FALSE)
menue->insertItem(i18n("Expand"),this, SLOT(expandOrCollapse()));
else
menue->insertItem(i18n("Collapse"),this, SLOT(expandOrCollapse()));
if (item->isOn()==TRUE)
menue->insertItem(i18n("Uncheck Item"),this, SLOT(checkOne()));
else
menue->insertItem(i18n("Check Item"),this, SLOT(checkOne()));
menue->insertSeparator();
}
else
setSelected(currentItem(),FALSE);
menue->insertItem(i18n("Uncheck All"),this, SLOT(uncheckall()));
menue->insertItem(i18n("Check All"),this, SLOT(checkall()));
menue->move(m->globalPos());
menue->show();
}
}
else
QListView::mousePressEvent(m);
}
void KUninstallListView::mouseDoubleClickEvent(QMouseEvent * m) {
KUninstallListItem *item=(KUninstallListItem *)currentItem();
if (item!=0)
item->showChildItems();
QListView::mouseDoubleClickEvent(m);
}
void KUninstallListView::checkItemAndChilds(KUninstallListItem *item, bool setOpen) {
lastSize=item->getSizeAndNumber(lastNumber);
item->setOn(setOpen);
item->checkAllChilds(setOpen);
item->repaint();
KUninstallListItem *parent=(KUninstallListItem *)item->parent();
while(parent!=0) {
if (setOpen==TRUE) {
if (parent->isOn()==FALSE)
parent->setOn(setOpen);
}
parent->repaint();
parent=(KUninstallListItem *)parent->parent();
}
}
void KUninstallListView::checkOne() {
KUninstallListItem *item=(KUninstallListItem *)currentItem();
if (item!=0)
checkItemAndChilds(item,!item->isOn());
emit changeChecked(item);
}
void KUninstallListView::expandOrCollapse() {
KUninstallListItem *item=(KUninstallListItem *)currentItem();
if (item!=0)
item->showChildItems();
if (item->isOpen()==FALSE)
item->setOpen(TRUE);
else
item->setOpen(FALSE);
}
void KUninstallListView::uncheckall() {
KUninstallListItem *parent=(KUninstallListItem*)firstChild();
for (int i=0;i<childCount();i++) {
KUninstallListItem *first=(KUninstallListItem*)parent->firstChild();
do
{
first->setOn(FALSE);
first->checkAllChilds(FALSE);
first->repaint();
first=(KUninstallListItem*)first->nextSibling();
} while (first!=NULL);
parent=(KUninstallListItem*)parent->nextSibling();
}
emit emitUpdateNumLabel(0);
emit emitUpdateSizeLabel(0);
}
void KUninstallListView::checkall() {
int numberItems=0;
float sumSize=0;
int number=0;
KUninstallListItem *parent=(KUninstallListItem*)firstChild();
for (int i=0;i<childCount();i++) {
KUninstallListItem *first=(KUninstallListItem*)parent->firstChild();
do
{
first->setOn(TRUE);
first->checkAllChilds(TRUE);
first->repaint();
sumSize+= first->getSizeAndNumber(number);
numberItems+=number;
first=(KUninstallListItem*)first->nextSibling();
} while (first!=NULL);
parent=(KUninstallListItem*)parent->nextSibling();
}
emit emitUpdateNumLabel(numberItems);
emit emitUpdateSizeLabel(sumSize);
}
Documentation generated by haeusler@stiegl on Fri Apr 16 09:31:32 MET DST 1999