summaryrefslogtreecommitdiff
path: root/libopie/big-screen
authorzecke <zecke>2003-09-01 16:29:42 (UTC)
committer zecke <zecke>2003-09-01 16:29:42 (UTC)
commit4513097a6eb827a9bf91b96d098cb392442c77f3 (patch) (side-by-side diff)
tree4dcfa31739ba093fb3a8962769e6acb1fde4b28e /libopie/big-screen
parenta1119a2cdb040e0e783a04ccd2a9da21f49c10b9 (diff)
downloadopie-4513097a6eb827a9bf91b96d098cb392442c77f3.zip
opie-4513097a6eb827a9bf91b96d098cb392442c77f3.tar.gz
opie-4513097a6eb827a9bf91b96d098cb392442c77f3.tar.bz2
Add big-screen extension to libopie
Diffstat (limited to 'libopie/big-screen') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/big-screen/big-screen.pro2
-rw-r--r--libopie/big-screen/osplitter.cpp35
-rw-r--r--libopie/big-screen/osplitter.h11
3 files changed, 43 insertions, 5 deletions
diff --git a/libopie/big-screen/big-screen.pro b/libopie/big-screen/big-screen.pro
new file mode 100644
index 0000000..e5111f2
--- a/dev/null
+++ b/libopie/big-screen/big-screen.pro
@@ -0,0 +1,2 @@
+HEADERS += big-screen/obigscreen_p.h big-screen/osplitter.h
+SOURCES += big-screen/osplitter.cpp \ No newline at end of file
diff --git a/libopie/big-screen/osplitter.cpp b/libopie/big-screen/osplitter.cpp
index ce53ee1..1cd0fd5 100644
--- a/libopie/big-screen/osplitter.cpp
+++ b/libopie/big-screen/osplitter.cpp
@@ -1,15 +1,15 @@
/*
               =. This file is part of the OPIE Project
-             .=l. Copyright (c) 2002 hOlgAr <zecke@handhelds.org>
+             .=l. Copyright (c) 2003 hOlgAr <zecke@handhelds.org>
           .>+-=
 _;:,     .>    :=|. This library is free software; you can
.> <`_,   >  .   <= redistribute it and/or modify it under
:`=1 )Y*s>-.--   : the terms of the GNU Library General Public
.="- .-=="i,     .._ License as published by the Free Software
 - .   .-<_>     .<> Foundation; either version 2 of the License,
     ._= =}       : or (at your option) any later version.
    .%`+i>       _;_.
    .i_,=:_.      -<s. This library is distributed in the hope that
     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
    : ..    .:,     . . . without even the implied warranty of
    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
@@ -50,44 +50,51 @@
*
* @short single c'tor of the OSplitter
*/
OSplitter::OSplitter( Orientation orient, QWidget* parent, const char* name, WFlags fl )
: QFrame( parent, name, fl )
{
m_orient = orient;
m_hbox = 0;
m_size_policy = 330;
setFontPropagation( AllChildren );
setPalettePropagation( AllChildren );
- m_tabWidget = new OTabWidget(this);
+ /* start by default with the tab widget */
+ m_tabWidget = 0;
+ changeTab();
+
}
/**
* Destructor destructs this object and cleans up. All child
* widgets will be deleted
* @see addWidget
*/
OSplitter::~OSplitter() {
delete m_hbox;
delete m_tabWidget;
}
/**
* This function sets the size change policy of the splitter.
* If this size marked is crossed the splitter will relayout.
- * Note that depending on the set Orientation it'll either look
+ * Note: that depending on the set Orientation it'll either look
* at the width or height.
+ * Note: If you want to from side to side view to tabbed view you need
+ * to make sure that the size you supply is not smaller than the minimum
+ * size of your added widgets. Note that if you use widgets like QComboBoxes
+ * you need to teach them to accept smaller sizes as well @see QWidget::setSizePolicy
*
* @param width_height The mark that will be watched. Interpreted depending on the Orientation of the Splitter.
* @return void
*/
void OSplitter::setSizeChange( int width_height ) {
m_size_policy = width_height;
QSize sz(width(), height() );
QResizeEvent ev(sz, sz );
resizeEvent(&ev);
}
/**
@@ -178,57 +185,75 @@ void OSplitter::setCurrentWidget( QWidget* w) {
*/
void OSplitter::setCurrentWidget( const QString& label ) {
ContainerList::Iterator it;
for (it = m_container.begin(); it != m_container.end(); ++it ) {
if ( (*it).name == label ) {
setCurrentWidget( (*it).widget );
break;
}
}
}
/**
+ * This will only work when the TabWidget is active
+ * If everything is visible this signal is kindly ignored
+ * @see OTabWidget::setCurrentTab(int)
+ *
+ * @param tab The tab to make current
+ */
+void OSplitter::setCurrentWidget( int tab ) {
+ if (m_tabWidget )
+ m_tabWidget->setCurrentTab( tab );
+}
+
+/**
* return the currently activated widget if in tab widget mode
* or null because all widgets are visible
*/
QWidget* OSplitter::currentWidget() {
if ( m_hbox )
return 0l;
else
return m_tabWidget->currentWidget();
}
#if 0
/**
* @reimplented for internal reasons
* returns the sizeHint of one of its sub widgets
*/
QSize OSplitter::sizeHint()const {
+ return QSize(10, 10);
+
if (m_hbox )
return m_hbox->sizeHint();
else
return m_tabWidget->sizeHint();
}
+
+QSize OSplitter::minimumSizeHint()const {
+ return QSize(10, 10 );
+}
#endif
/**
* @reimplemented for internal reasons
*/
void OSplitter::resizeEvent( QResizeEvent* res ) {
QFrame::resizeEvent( res );
/*
*
*/
// qWarning("Old size was width = %d height = %d", res->oldSize().width(), res->oldSize().height() );
-// qWarning("New size is width = %d height = %d", res->size().width(), res->size().height() );
+ qWarning("New size is width = %d height = %d", res->size().width(), res->size().height() );
if ( res->size().width() > m_size_policy &&
m_orient == Horizontal ) {
changeHBox();
}else if ( (res->size().width() <= m_size_policy &&
m_orient == Horizontal ) ||
(res->size().height() <= m_size_policy &&
m_orient == Vertical ) ) {
changeTab();
}else if ( res->size().height() > m_size_policy &&
m_size_policy == Vertical ) {
changeVBox();
}
@@ -254,24 +279,26 @@ void OSplitter::changeTab() {
if (m_tabWidget ) {
m_tabWidget->setGeometry( frameRect() );
return;
}
qWarning(" New Tab Widget ");
/*
* and add all widgets this will reparent them
* delete m_hbox set it to 0
*
*/
m_tabWidget = new OTabWidget( this );
+ connect(m_tabWidget, SIGNAL(currentChanged(QWidget*) ),
+ this, SIGNAL(currentChanged(QWidget*) ) );
for ( ContainerList::Iterator it = m_container.begin(); it != m_container.end(); ++it ) {
qWarning("Widget is %s", (*it).name.latin1() );
addToTab( (*it) );
}
delete m_hbox;
m_hbox = 0;
m_tabWidget->setGeometry( frameRect() );
m_tabWidget->show();
}
diff --git a/libopie/big-screen/osplitter.h b/libopie/big-screen/osplitter.h
index bc4f80b..db69fc6 100644
--- a/libopie/big-screen/osplitter.h
+++ b/libopie/big-screen/osplitter.h
@@ -1,15 +1,15 @@
/*
               =. This file is part of the OPIE Project
-             .=l. Copyright (c) 2002 hOlgAr <zecke@handhelds.org>
+             .=l. Copyright (c) 2003 hOlgAr <zecke@handhelds.org>
           .>+-=
 _;:,     .>    :=|. This library is free software; you can
.> <`_,   >  .   <= redistribute it and/or modify it under
:`=1 )Y*s>-.--   : the terms of the GNU Library General Public
.="- .-=="i,     .._ License as published by the Free Software
 - .   .-<_>     .<> Foundation; either version 2 of the License,
     ._= =}       : or (at your option) any later version.
    .%`+i>       _;_.
    .i_,=:_.      -<s. This library is distributed in the hope that
     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
    : ..    .:,     . . . without even the implied warranty of
    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
@@ -65,27 +65,36 @@ public:
typedef QValueList<Opie::OSplitterContainer> ContainerList;
OSplitter( Qt::Orientation = Horizontal, QWidget *parent = 0,
const char* name = 0, WFlags fl = 0 );
~OSplitter();
void setSizeChange( int width_height );
void addWidget( QWidget* wid, const QString& icon, const QString& label );
void removeWidget( QWidget* );
void setCurrentWidget( QWidget* );
void setCurrentWidget( const QString& label );
+ void setCurrentWidget( int );
QWidget* currentWidget();
+signals:
+ /**
+ * Emitted if in tab and comes directly from the tab widget
+ *
+ */
+ void currentChanged( QWidget* );
+public:
// QSize sizeHint()const;
+// QSize minimumSizeHint()const;
protected:
void resizeEvent( QResizeEvent* );
private:
void addToTab( const Opie::OSplitterContainer& );
void addToBox( const Opie::OSplitterContainer& );
void removeFromTab( QWidget* );
void changeTab();
void changeHBox();
void changeVBox();
void commonChangeBox();