00001 #include "VocabTreeItem.h" 00002 #include "icons/closedVocab.xpm" 00003 #include "icons/openedVocab.xpm" 00004 00005 VocabTreeItem::VocabTreeItem( QListViewItem* parent, Vocabulary* vocab, PropertiesPanel* propsPanel ) 00006 : TreeItem( parent, "VocabTreeItem", CheckBox ), vocab( vocab ), propsPanel( propsPanel ) { 00007 setText( 0, vocab->getTitle() ); 00008 setOn( vocab->isMarkedForStudy() ); 00009 } 00010 00011 VocabTreeItem::~VocabTreeItem() { 00012 } 00013 00014 void VocabTreeItem::setPropertiesPanel( PropertiesPanel* propsPanel ) { 00015 this->propsPanel = propsPanel; 00016 } 00017 00018 void VocabTreeItem::setOpen( bool isOpened ) { 00019 // Ignore close event when selected. 00020 if( !isSelected() || isOpened ) { 00021 QCheckListItem::setOpen( isOpened ); 00022 setPixmap( 0, ( isOpened ? ZPIXMAP( openedVocab_xpm ) : ZPIXMAP( closedVocab_xpm ) ) ); 00023 } 00024 } 00025 00026 void VocabTreeItem::setOn( bool isOn ) { 00027 // We clear the selection in order to effectively reset it after 00028 // changing the state of the item. This is needed because the 00029 // item is updated when a selection event occurs. 00030 bool isUpdateHackEnabled = listView()->isUpdatesEnabled(); 00031 if( isUpdateHackEnabled ) 00032 listView()->clearSelection(); 00033 QCheckListItem::setOn( isOn ); 00034 vocab->setMarkedForStudy( isOn ); 00035 // Force updating the event. 00036 if( isUpdateHackEnabled ) 00037 listView()->setSelected( this, true ); 00038 } 00039 00040 void VocabTreeItem::setSelected( bool isSelected ) { 00041 QCheckListItem::setSelected( isSelected ); 00042 if( !isSelected ) 00043 setOpen( FALSE ); 00044 } 00045 00046 Vocabulary* VocabTreeItem::getVocabulary() { 00047 return( vocab ); 00048 } 00049 00050 void VocabTreeItem::update() { 00051 if( propsPanel ) 00052 propsPanel->updateCounters(); 00053 }