/**************************************************************************** ** ** Copyright (C) 1992-2008 Trolltech ASA. All rights reserved. ** ** This file is part of an example program for TQt. This example ** program may be used, distributed and modified without limitation. ** *****************************************************************************/ #include "listbox.h" #include #include #include #include #include #include #include #include ListBoxDemo::ListBoxDemo() : TQWidget( 0, 0 ) { TQGridLayout * g = new TQGridLayout( this, 2, 2, 6 ); g->addWidget( new TQLabel( "Configuration:", this ), 0, 0 ); g->addWidget( new TQLabel( "Result:", this ), 0, 1 ); l = new TQListBox( this ); g->addWidget( l, 1, 1 ); l->setFocusPolicy( TQWidget::StrongFocus ); TQVBoxLayout * v = new TQVBoxLayout; g->addLayout( v, 1, 0 ); TQRadioButton * b; bg = new TQButtonGroup( 0 ); b = new TQRadioButton( "Fixed number of columns,\n" "as many rows as needed.", this ); bg->insert( b ); v->addWidget( b ); b->setChecked( TRUE ); connect( b, TQ_SIGNAL(clicked()), this, TQ_SLOT(setNumCols()) ); TQHBoxLayout * h = new TQHBoxLayout; v->addLayout( h ); h->addSpacing( 30 ); h->addSpacing( 100 ); h->addWidget( new TQLabel( "Columns:", this ) ); columns = new TQSpinBox( this ); h->addWidget( columns ); v->addSpacing( 12 ); b = new TQRadioButton( "As many columns as fit on-screen,\n" "as many rows as needed.", this ); bg->insert( b ); v->addWidget( b ); connect( b, TQ_SIGNAL(clicked()), this, TQ_SLOT(setColsByWidth()) ); v->addSpacing( 12 ); b = new TQRadioButton( "Fixed number of rows,\n" "as many columns as needed.", this ); bg->insert( b ); v->addWidget( b ); connect( b, TQ_SIGNAL(clicked()), this, TQ_SLOT(setNumRows()) ); h = new TQHBoxLayout; v->addLayout( h ); h->addSpacing( 30 ); h->addSpacing( 100 ); h->addWidget( new TQLabel( "Rows:", this ) ); rows = new TQSpinBox( this ); rows->setEnabled( FALSE ); h->addWidget( rows ); v->addSpacing( 12 ); b = new TQRadioButton( "As many rows as fit on-screen,\n" "as many columns as needed.", this ); bg->insert( b ); v->addWidget( b ); connect( b, TQ_SIGNAL(clicked()), this, TQ_SLOT(setRowsByHeight()) ); v->addSpacing( 12 ); TQCheckBox * cb = new TQCheckBox( "Variable-height rows", this ); cb->setChecked( TRUE ); connect( cb, TQ_SIGNAL(toggled(bool)), this, TQ_SLOT(setVariableHeight(bool)) ); v->addWidget( cb ); v->addSpacing( 6 ); cb = new TQCheckBox( "Variable-width columns", this ); connect( cb, TQ_SIGNAL(toggled(bool)), this, TQ_SLOT(setVariableWidth(bool)) ); v->addWidget( cb ); cb = new TQCheckBox( "Extended-Selection", this ); connect( cb, TQ_SIGNAL(toggled(bool)), this, TQ_SLOT(setMultiSelection(bool)) ); v->addWidget( cb ); TQPushButton *pb = new TQPushButton( "Sort ascending", this ); connect( pb, TQ_SIGNAL( clicked() ), this, TQ_SLOT( sortAscending() ) ); v->addWidget( pb ); pb = new TQPushButton( "Sort descending", this ); connect( pb, TQ_SIGNAL( clicked() ), this, TQ_SLOT( sortDescending() ) ); v->addWidget( pb ); v->addStretch( 100 ); int i = 0; while( ++i <= 2560 ) l->insertItem( TQString::fromLatin1( "Item " ) + TQString::number( i ), i ); columns->setRange( 1, 256 ); columns->setValue( 1 ); rows->setRange( 1, 256 ); rows->setValue( 256 ); connect( columns, TQ_SIGNAL(valueChanged(int)), this, TQ_SLOT(setNumCols()) ); connect( rows, TQ_SIGNAL(valueChanged(int)), this, TQ_SLOT(setNumRows()) ); } ListBoxDemo::~ListBoxDemo() { delete bg; } void ListBoxDemo::setNumRows() { columns->setEnabled( FALSE ); rows->setEnabled( TRUE ); l->setRowMode( rows->value() ); } void ListBoxDemo::setNumCols() { columns->setEnabled( TRUE ); rows->setEnabled( FALSE ); l->setColumnMode( columns->value() ); } void ListBoxDemo::setRowsByHeight() { columns->setEnabled( FALSE ); rows->setEnabled( FALSE ); l->setRowMode( TQListBox::FitToHeight ); } void ListBoxDemo::setColsByWidth() { columns->setEnabled( FALSE ); rows->setEnabled( FALSE ); l->setColumnMode( TQListBox::FitToWidth ); } void ListBoxDemo::setVariableWidth( bool b ) { l->setVariableWidth( b ); } void ListBoxDemo::setVariableHeight( bool b ) { l->setVariableHeight( b ); } void ListBoxDemo::setMultiSelection( bool b ) { l->clearSelection(); l->setSelectionMode( b ? TQListBox::Extended : TQListBox::Single ); } void ListBoxDemo::sortAscending() { l->sort( TRUE ); } void ListBoxDemo::sortDescending() { l->sort( FALSE ); }