summaryrefslogtreecommitdiff
path: root/libopie/big-screen/osplitter.cpp
Side-by-side diff
Diffstat (limited to 'libopie/big-screen/osplitter.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/big-screen/osplitter.cpp55
1 files changed, 38 insertions, 17 deletions
diff --git a/libopie/big-screen/osplitter.cpp b/libopie/big-screen/osplitter.cpp
index d06568f..47f856d 100644
--- a/libopie/big-screen/osplitter.cpp
+++ b/libopie/big-screen/osplitter.cpp
@@ -75,8 +75,9 @@ OSplitter::OSplitter( Orientation orient, QWidget* parent, const char* name, WFl
* widgets will be deleted
* @see addWidget
*/
OSplitter::~OSplitter() {
+ qWarning("Deleted Splitter");
m_splitter.setAutoDelete( true );
m_splitter.clear();
delete m_hbox;
@@ -153,9 +154,9 @@ void OSplitter::addWidget( OSplitter* split ) {
/*
* set tab widget
*/
if (m_tabWidget )
- split->setTabWidget( m_tabWidget );
+ setTabWidget( m_parentTab );
else{
Opie::OSplitterContainer con;
con.widget =split;
addToBox( con );
@@ -305,26 +306,32 @@ QWidget* OSplitter::currentWidget() const{
return 0l;
}
-#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_parentTab )
+ return QFrame::sizeHint();
if (m_hbox )
return m_hbox->sizeHint();
else
return m_tabWidget->sizeHint();
}
QSize OSplitter::minimumSizeHint()const {
- return QSize(10, 10 );
+ if (m_parentTab )
+ return QFrame::minimumSizeHint();
+ if (m_hbox)
+ return m_hbox->sizeHint();
+ else
+ return m_tabWidget->sizeHint();
}
-#endif
+
/**
* @reimplemented for internal reasons
*/
@@ -334,9 +341,9 @@ void OSplitter::resizeEvent( QResizeEvent* res ) {
*
*/
// qWarning("Old size was width = %d height = %d", res->oldSize().width(), res->oldSize().height() );
bool mode = true;
- qWarning("New size is width = %d height = %d", res->size().width(), res->size().height() );
+ qWarning("New size is width = %d height = %d %s", res->size().width(), res->size().height(), name() );
if ( res->size().width() > m_size_policy &&
m_orient == Horizontal ) {
changeHBox();
mode = false;
@@ -345,9 +352,10 @@ void OSplitter::resizeEvent( QResizeEvent* res ) {
(res->size().height() <= m_size_policy &&
m_orient == Vertical ) ) {
changeTab();
}else if ( res->size().height() > m_size_policy &&
- m_size_policy == Vertical ) {
+ m_orient == Vertical ) {
+ qWarning("Changng to vbox %s", name() );
changeVBox();
mode = false;
}
@@ -397,18 +405,23 @@ void OSplitter::changeTab() {
m_tabWidget->setGeometry( frameRect() );
return;
}
- qWarning(" New Tab Widget ");
+ qWarning(" New Tab Widget %s", name() );
/*
* and add all widgets this will reparent them
* delete m_hbox set it to 0
*
*/
OTabWidget *tab;
if ( m_parentTab ) {
tab = m_parentTab;
- tab->removePage( this );
+ /* expensive but needed cause we're called from setTabWidget and resizeEvent*/
+ if (!m_container.isEmpty() ) {
+ ContainerList::Iterator it = m_container.begin();
+ for (; it != m_container.end(); ++it )
+ m_parentTab->removePage( (*it).widget );
+ }
}else
tab = m_tabWidget = new OTabWidget( this );
connect(tab, SIGNAL(currentChanged(QWidget*) ),
@@ -418,10 +431,12 @@ void OSplitter::changeTab() {
qWarning("Widget is %s", (*it).name.latin1() );
addToTab( (*it) );
}
- for ( OSplitter* split = m_splitter.first(); split; split = m_splitter.next() )
+ for ( OSplitter* split = m_splitter.first(); split; split = m_splitter.next() ) {
+ split->reparent(this, 0, QPoint(0, 0) );
split->setTabWidget( tab );
+ }
delete m_hbox;
m_hbox = 0;
@@ -442,9 +457,9 @@ void OSplitter::changeHBox() {
m_hbox->setGeometry( frameRect() );
return;
}
- qWarning("new HBox");
+ qWarning("new HBox %s", name() );
m_hbox = new QHBox( this );
commonChangeBox();
}
@@ -453,9 +468,9 @@ void OSplitter::changeVBox() {
m_hbox->setGeometry( frameRect() );
return;
}
- qWarning("New VBOX");
+ qWarning("New VBOX %s", name() );
m_hbox = new QVBox( this );
commonChangeBox();
@@ -467,8 +482,9 @@ void OSplitter::changeVBox() {
* the other splitters
* it is recursive as well due the call to setTabWidget
*/
void OSplitter::commonChangeBox() {
+ qWarning(" Name of Splitters is %s", name() );
for (ContainerList::Iterator it = m_container.begin(); it != m_container.end(); ++it ) {
/* only if parent tab.. m_tabWidgets gets deleted and would do that as well */
if (m_parentTab )
@@ -480,16 +496,19 @@ void OSplitter::commonChangeBox() {
/* tell them the world had changed */
split->setTabWidget( 0 );
Opie::OSplitterContainer con;
con.widget = split;
+// con.widget = split->m_tabWidget ? static_cast<QWidget*>(split->m_tabWidget)
+// : static_cast<QWidget*>(split->m_hbox);
addToBox( con );
}
if (m_parentTab )
- m_parentTab->addTab(this, iconName(), label() );
+ m_parentTab->addTab(m_hbox, iconName(), label() );
else {
+ qWarning(" setting Box geometry for %s", name() );
m_hbox->setGeometry( frameRect() );
m_hbox->show();
delete m_tabWidget;
m_tabWidget = 0;
@@ -502,9 +521,9 @@ void OSplitter::commonChangeBox() {
void OSplitter::setTabWidget( OTabWidget* wid) {
/* clean up cause m_parentTab will not be available for us */
if ( m_parentTab ) {
if (m_hbox )
- m_parentTab->removePage( this );
+ m_parentTab->removePage( m_hbox );
else if (!m_container.isEmpty() ){
ContainerList::Iterator it = m_container.begin();
for ( ; it != m_container.end(); ++it )
m_parentTab->removePage( (*it).widget );
@@ -525,10 +544,12 @@ void OSplitter::setTabWidget( OTabWidget* wid) {
else
changeVBox();
/* our own crap is added and children from change* */
- delete tab;
- delete box;
+ if (m_parentTab ) {
+ delete tab;
+ delete box;
+ }
}
#if 0
@@ -551,9 +572,9 @@ bool OSplitter::layoutMode()const {
if ( size().width() > m_size_policy &&
m_orient == Horizontal ) {
return false;
}else if ( size().height() > m_size_policy &&
- m_size_policy == Vertical ) {
+ m_orient == Vertical ) {
return false;
}
return true;