00001
00002
00003
00004
00005 #include "owidgetstack_example.h"
00006
00007
00008 #include <opie2/oapplicationfactory.h>
00009 #include <opie2/owidgetstack.h>
00010 #include <opie2/oresource.h>
00011
00012
00013 #include <qaction.h>
00014 #include <qtoolbar.h>
00015 #include <qpopupmenu.h>
00016 #include <qmenubar.h>
00017 #include <qlayout.h>
00018 #include <qlabel.h>
00019 #include <qpushbutton.h>
00020 #include <qsignalmapper.h>
00021
00022 using namespace Opie::Core;
00023 using namespace Opie::Ui;
00024
00025 OPIE_EXPORT_APP( OApplicationFactory<StackExample> )
00026
00027 StackExample::StackExample( QWidget* parent, const char* name, WFlags fl )
00028 : QMainWindow( parent, name, fl )
00029 {
00030 m_stack = new OWidgetStack( this );
00031 setCentralWidget( m_stack );
00032
00033
00034 QSignalMapper *sm = new QSignalMapper(this);
00035 connect(sm, SIGNAL(mapped(int) ), m_stack, SLOT(raiseWidget(int)) );
00036
00037
00038 setToolBarsMovable( false );
00039
00040
00041 QToolBar* holder = new QToolBar( this );
00042 holder->setHorizontalStretchable( true );
00043
00044 QMenuBar *bar = new QMenuBar( holder );
00045 QPopupMenu *menu = new QPopupMenu( this );
00046
00047 QAction* a = new QAction( tr("Show MainWidget"), Opie::Core::OResource::loadPixmap("zoom", Opie::Core::OResource::SmallIcon),
00048 QString::null, 0, this, 0 );
00049 sm->setMapping(a, 1 );
00050 connect(a, SIGNAL(activated() ),
00051 sm, SLOT(map() ) );
00052 a->addTo( menu );
00053
00054 a = new QAction( tr("Show Details Small"), Opie::Core::OResource::loadPixmap("zoom", Opie::Core::OResource::SmallIcon),
00055 QString::null, 0, this, 0 );
00056 sm->setMapping(a, 2 );
00057 connect(a, SIGNAL(activated() ),
00058 sm, SLOT(map() ) );
00059 a->addTo( menu );
00060
00061 a = new QAction( tr("Show Details More"), Opie::Core::OResource::loadPixmap("zoom", Opie::Core::OResource::SmallIcon),
00062 QString::null, 0, this, 0 );
00063 sm->setMapping(a, 3 );
00064 connect(a, SIGNAL(activated() ),
00065 sm, SLOT(map() ) );
00066 a->addTo( menu );
00067
00068 a = new QAction( tr("Show Details All"), Opie::Core::OResource::loadPixmap("zoom", Opie::Core::OResource::SmallIcon),
00069 QString::null, 0, this, 0 );
00070 sm->setMapping(a, 4 );
00071 connect(a, SIGNAL(activated() ),
00072 sm, SLOT(map() ) );
00073
00074 bar->insertItem( tr("Actions"), menu );
00075
00076
00077
00078
00079 QWidget * wid = new QWidget( m_stack );
00080 QGridLayout *grid = new QGridLayout(wid, 2, 2 );
00081
00082 QPushButton *btn = new QPushButton( tr("Show Details Small"), wid, "details1" );
00083 sm->setMapping(btn, 2 );
00084 connect(btn, SIGNAL(clicked()), sm, SLOT(map() ) );
00085 grid->addWidget( btn, 0, 0 );
00086
00087 btn = new QPushButton( tr("Show Details Medium"), wid, "details2");
00088 sm->setMapping(btn, 3 );
00089 connect(btn, SIGNAL(clicked()), sm, SLOT(map() ) );
00090 grid->addWidget( btn, 0, 1 );
00091
00092 btn = new QPushButton( tr("Show Details All"), wid, "details3");
00093 sm->setMapping(btn, 4 );
00094 connect(btn, SIGNAL(clicked()), sm, SLOT(map() ) );
00095 grid->addWidget( btn, 1, 1 );
00096
00097 m_stack->addWidget( wid, 1 );
00098 m_main = wid;
00099
00100 QLabel *lbl = new QLabel(m_stack );
00101 lbl->setText(tr("Only small Details are shown here. M�h") );
00102 m_stack->addWidget( lbl, 2 );
00103
00104 lbl = new QLabel( m_stack );
00105 lbl->setText( tr("Some more details....Wo ist das Schaf?") );
00106 m_stack->addWidget( lbl, 3 );
00107
00108 lbl = new QLabel( m_stack );
00109 lbl->setText( tr("<qt>Ne nicht in Bayerisch Gmain sondern in Berlin<br>Vermiss und meine Augen werden nicht eckig, da mein Bildschirm abgerundet ist<br>Es lebe Hamburg Sd,weiss du, verstehst du? ;)<br>Susi ist dOOf, es lebe die Ofenecke...", "hard to translate that") );
00110 m_stack->addWidget( lbl, 4 );
00111
00112
00113
00114 m_stack->raiseWidget( m_main );
00115 }
00116
00117
00118 StackExample::~StackExample() {
00119
00120 }
00121
00122
00123
00124 void StackExample::closeEvent( QCloseEvent* ev) {
00125
00126 if (m_stack->visibleWidget() != m_main ) {
00127 m_stack->raiseWidget( m_main );
00128 ev->ignore();
00129 return;
00130 }
00131
00132 ev->accept();
00133 }