diff options
Diffstat (limited to 'src/dialogs/selectpropertydialog.cpp')
-rw-r--r-- | src/dialogs/selectpropertydialog.cpp | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/src/dialogs/selectpropertydialog.cpp b/src/dialogs/selectpropertydialog.cpp new file mode 100644 index 0000000..1ce1887 --- /dev/null +++ b/src/dialogs/selectpropertydialog.cpp @@ -0,0 +1,123 @@ +/*************************************************************************** +* Copyright (C) 2003 by * +* Unai Garro ([email protected]) * +* Cyril Bosselut ([email protected]) * +* Jason Kivlighn ([email protected]) * +* * +* 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 "selectpropertydialog.h" + +#include <tdeconfig.h> +#include <tdeglobal.h> +#include <tdelocale.h> + +#include "datablocks/ingredientpropertylist.h" + +SelectPropertyDialog::SelectPropertyDialog( TQWidget* parent, IngredientPropertyList *propertyList, UnitList *unitList, OptionFlag showEmpty ) + : KDialogBase( parent, "SelectPropertyDialog", true, i18n( "Choose Property" ), + KDialogBase::Ok | KDialogBase::Cancel, KDialogBase::Ok ), m_showEmpty(showEmpty) +{ + + // Initialize internal variables + unitListBack = new UnitList; + + // Initialize Widgets + TQVBox *page = makeVBoxMainWidget(); + + box = new TQGroupBox( page ); + box->setTitle( i18n( "Choose Property" ) ); + box->setColumnLayout( 0, TQt::Vertical ); + box->layout() ->setSpacing( 6 ); + box->layout() ->setMargin( 11 ); + TQVBoxLayout *boxLayout = new TQVBoxLayout( box->layout() ); + boxLayout->setAlignment( TQt::AlignTop ); + + propertyChooseView = new TDEListView( box, "propertyChooseView" ); + + TDEConfig *config = TDEGlobal::config(); + config->setGroup( "Advanced" ); + bool show_id = config->readBoolEntry( "ShowID", false ); + propertyChooseView->addColumn( i18n( "Id" ), show_id ? -1 : 0 ); + + propertyChooseView->addColumn( i18n( "Property" ) ); + propertyChooseView->setAllColumnsShowFocus( true ); + boxLayout->addWidget( propertyChooseView ); + + TQHBoxLayout *layout2 = new TQHBoxLayout; + + perUnitsLabel = new TQLabel( box ); + perUnitsLabel->setGeometry( TQRect( 5, 285, 100, 30 ) ); + perUnitsLabel->setText( i18n( "Per units:" ) ); + layout2->addWidget( perUnitsLabel ); + + perUnitsBox = new KComboBox( FALSE, box ); + layout2->addWidget( perUnitsBox ); + boxLayout->addLayout( layout2 ); + + resize( TQSize( 200, 380 ).expandedTo( minimumSizeHint() ) ); + clearWState( WState_Polished ); + + // Load data + loadProperties( propertyList ); + loadUnits( unitList ); +} + + +SelectPropertyDialog::~SelectPropertyDialog() +{} + + +int SelectPropertyDialog::propertyID( void ) +{ + + TQListViewItem * it; + if ( ( it = propertyChooseView->selectedItem() ) ) { + return ( it->text( 0 ).toInt() ); + } + else + return ( -1 ); +} + +int SelectPropertyDialog::perUnitsID() +{ + + int comboCount = perUnitsBox->count(); + if ( comboCount > 0 ) { // If not, the list may be empty (no list defined) and crashes while reading as seen before. So check just in case. + int comboID = perUnitsBox->currentItem(); + return ( *unitListBack->at( comboID ) ).id; + } + else + return ( -1 ); +} + +void SelectPropertyDialog::loadProperties( IngredientPropertyList *propertyList ) +{ + for ( IngredientPropertyList::const_iterator prop_it = propertyList->begin(); prop_it != propertyList->end(); ++prop_it ) { + ( void ) new TQListViewItem( propertyChooseView, TQString::number( (*prop_it).id ), (*prop_it).name ); + } +} +void SelectPropertyDialog::loadUnits( UnitList *unitList ) +{ + for ( UnitList::const_iterator unit_it = unitList->begin(); unit_it != unitList->end(); ++unit_it ) { + TQString unitName = ( *unit_it ).name; + if ( unitName.isEmpty() ) { + if ( m_showEmpty == ShowEmptyUnit ) + unitName = " "+i18n("-No unit-"); + else + continue; + } + + // Insert in the combobox + perUnitsBox->insertItem( unitName ); + + // Store with index for using later + Unit newUnit( *unit_it ); + newUnit.name = unitName; + unitListBack->append( newUnit ); + } +} |