Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

owidgetstack_example.cpp

Go to the documentation of this file.
00001 /*
00002  * You may use, modify and distribute this example without any limitation
00003  */
00004 
00005 #include "owidgetstack_example.h"
00006 
00007 /* OPIE */
00008 #include <opie2/oapplicationfactory.h>
00009 #include <opie2/owidgetstack.h>
00010 #include <opie2/oresource.h>
00011 
00012 /* QT */
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     /* nice Signal Mapper ;) */
00034     QSignalMapper *sm = new QSignalMapper(this);
00035     connect(sm, SIGNAL(mapped(int) ), m_stack, SLOT(raiseWidget(int)) );
00036 
00037     /* toolbar first but this should be known from the other examples */
00038     setToolBarsMovable( false );
00039 
00040     /* only a menubar here */
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     /* now the gui */
00077 
00078     /* first widget, main widget */
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     /* THE signal mapper does all the magic */
00114     m_stack->raiseWidget( m_main );
00115 }
00116 
00117 
00118 StackExample::~StackExample() {
00119 
00120 }
00121 
00122 
00123 
00124 void StackExample::closeEvent( QCloseEvent* ev) {
00125     /* if the close even came when we displayed a details */
00126     if (m_stack->visibleWidget() != m_main ) {
00127         m_stack->raiseWidget( m_main );
00128         ev->ignore();
00129         return;
00130     }
00131 
00132     ev->accept();
00133 }

Generated on Sat Nov 5 16:15:59 2005 for OPIE by  doxygen 1.4.2