/***************************************************************************
* $Id$
**
* Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
**
* This file is part of an example program for Qt. This example
* program may be used, distributed and modified without limitation.
**
****************************************************************************/
import org.kde.qt.*;
class ListBoxDemo extends TQWidget
{
private TQListBox l;
private TQSpinBox columns;
private TQSpinBox rows;
private TQButtonGroup bg;
ListBoxDemo()
{
super( null, null );
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 = null;
bg = new TQButtonGroup( (TQWidget) null );
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, SIGNAL("clicked()"), this, 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, SIGNAL("clicked()"), this, 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, SIGNAL("clicked()"), this, 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, SIGNAL("clicked()"), this, SLOT("setRowsByHeight()") );
v.addSpacing( 12 );
TQCheckBox cb = new TQCheckBox( "Variable-height rows", this );
cb.setChecked( true );
connect( cb, SIGNAL("toggled(boolean)"), this, SLOT("setVariableHeight(boolean)") );
v.addWidget( cb );
v.addSpacing( 6 );
cb = new TQCheckBox( "Variable-width columns", this );
connect( cb, SIGNAL("toggled(boolean)"), this, SLOT("setVariableWidth(boolean)") );
v.addWidget( cb );
cb = new TQCheckBox( "Extended-Selection", this );
connect( cb, SIGNAL("toggled(boolean)"), this, SLOT("setMultiSelection(boolean)") );
v.addWidget( cb );
TQPushButton pb = new TQPushButton( "Sort ascending", this );
connect( pb, SIGNAL(" clicked()"), this, SLOT(" sortAscending()") );
v.addWidget( pb );
pb = new TQPushButton( "Sort descending", this );
connect( pb, SIGNAL(" clicked()"), this, SLOT(" sortDescending()") );
v.addWidget( pb );
v.addStretch( 100 );
int i = 0;
while( ++i <= 2560 )
l.insertItem( "Item " + i,
i );
columns.setRange( 1, 256 );
columns.setValue( 1 );
rows.setRange( 1, 256 );
rows.setValue( 256 );
connect( columns, SIGNAL("valueChanged(int)"), this, SLOT("setNumCols()") );
connect( rows, SIGNAL("valueChanged(int)"), this, SLOT("setNumRows()") );
}
void setNumRows()
{
columns.setEnabled( false );
rows.setEnabled( true );
l.setRowMode( rows.value() );
}
void setNumCols()
{
columns.setEnabled( true );
rows.setEnabled( false );
l.setColumnMode( columns.value() );
}
void setRowsByHeight()
{
columns.setEnabled( false );
rows.setEnabled( false );
l.setRowMode( TQListBox.FitToHeight );
}
void setColsByWidth()
{
columns.setEnabled( false );
rows.setEnabled( false );
l.setColumnMode( TQListBox.FitToWidth );
}
void setVariableWidth( boolean b )
{
l.setVariableWidth( b );
}
void setVariableHeight( boolean b )
{
l.setVariableHeight( b );
}
void setMultiSelection( boolean b )
{
l.clearSelection();
l.setSelectionMode( b ? TQListBox.Extended : TQListBox.Single );
}
void sortAscending()
{
l.sort( true );
}
void sortDescending()
{
l.sort( false );
}
}