summaryrefslogtreecommitdiff
path: root/libopie
Side-by-side diff
Diffstat (limited to 'libopie') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/big-screen/example/osplitter_mail.cpp70
-rw-r--r--libopie/big-screen/example/osplitter_mail.h48
-rw-r--r--libopie/big-screen/example/osplitter_mail.pro12
-rw-r--r--libopie/big-screen/osplitter.cpp55
-rw-r--r--libopie/big-screen/osplitter.h10
5 files changed, 176 insertions, 19 deletions
diff --git a/libopie/big-screen/example/osplitter_mail.cpp b/libopie/big-screen/example/osplitter_mail.cpp
new file mode 100644
index 0000000..91442c8
--- a/dev/null
+++ b/libopie/big-screen/example/osplitter_mail.cpp
@@ -0,0 +1,70 @@
+
+#include <qstring.h>
+#include <qlabel.h>
+#include <qheader.h>
+#include <qlayout.h>
+
+#include <qpe/qpeapplication.h>
+#include <opie/oapplicationfactory.h>
+
+#include "../osplitter.h"
+
+#include "osplitter_mail.h"
+
+
+OPIE_EXPORT_APP( OApplicationFactory<ListViews> )
+
+class Folder {
+ int dummy;
+};
+
+// -----------------------------------------------------------------
+
+ListViews::ListViews( QWidget* p, const char* name, WFlags fl )
+ : QWidget( p, name, fl ) {
+ m_lstFolders.setAutoDelete( true );
+ QHBoxLayout *lay = new QHBoxLayout(this);
+
+ m_splitter = new OSplitter( Horizontal, this, "SPlitter 1" );
+ lay->addWidget( m_splitter );
+ connect(m_splitter, SIGNAL(sizeChange(bool, const QSize& ) ),
+ this, SLOT(slotSizeChange(bool, const QSize& ) ) );
+
+ m_overview = new QListView( m_splitter );
+ m_overview->header()->setClickEnabled( FALSE );
+ m_overview->addColumn( tr("Folder") );
+ m_overview->setMaximumWidth( 200 );
+ m_splitter->addWidget( m_overview, "zoom", tr("Folder Overview") );
+ m_splitter->setSizeChange( 300 );
+
+ /* OSplitter starts with the small mode */
+ m_messages = 0;
+ m_message = m_attach = 0;
+
+ splitti = new OSplitter( Vertical, m_splitter, "Splitti2" );
+ splitti->setSizeChange( 300 );
+ splitti->setSizePolicy( QSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding ) );
+
+ QLabel *lbl = new QLabel(splitti);
+ lbl->setTextFormat ( Qt::RichText );
+ lbl->setText("<br><br><b>Test Test Test</b><br><br><p>Fooooo hjhh</p>");
+
+ m_messages = new QListView( splitti );
+ m_messages->addColumn(" Messages ");
+
+ folder1 = new QListView( splitti );
+ folder1->addColumn( "Messages 2 " );
+
+ splitti->addWidget(m_messages, "mail", tr("Mails") );
+ splitti->addWidget(folder1, "folder", tr("Folder") );
+ splitti->addWidget( lbl, "logo", tr("Label") );
+ m_message = lbl;
+
+ m_splitter->addWidget( splitti );
+
+}
+
+
+ListViews::~ListViews() {
+
+}
diff --git a/libopie/big-screen/example/osplitter_mail.h b/libopie/big-screen/example/osplitter_mail.h
new file mode 100644
index 0000000..d76f264
--- a/dev/null
+++ b/libopie/big-screen/example/osplitter_mail.h
@@ -0,0 +1,48 @@
+/*
+ * You may use, modify and distribute this code without any limitation
+ */
+
+/*
+ * Header file for a more complete email client like
+ * layout
+ */
+
+#ifndef OPIE_SPLITTER_MAIL_EXAMPLE_H
+#define OPIE_SPLITTER_MAIL_EXAMPLE_H
+
+#include <qwidget.h>
+#include <qlist.h>
+#include <qlistview.h>
+
+class Folder;
+class QLabel;
+
+class OSplitter;
+class ListViews : public QWidget {
+ Q_OBJECT
+public:
+ static QString appName() { return QString::fromLatin1("osplitter-mail"); }
+ ListViews( QWidget* parent, const char * name, WFlags fl );
+ ~ListViews();
+
+private:
+ void initFolders();
+ void initFolder( Folder *folder, unsigned int &count );
+
+ QListView *m_messages, *m_overview;
+ QLabel *m_message, *m_attach;
+ QList<QListView> m_folders; // used in tab mode
+ QList<Folder> m_lstFolders;
+ bool m_mode : 1; // bitfield
+ OSplitter *m_splitter;
+ OSplitter *splitti;
+ QListView *folder1;
+#if 0
+//private slots:
+// void slotFolderChanged( QListViewItem* );
+// void slotMessageChanged();
+// void slotSizeChange( bool, const QSize& );
+#endif
+};
+
+#endif
diff --git a/libopie/big-screen/example/osplitter_mail.pro b/libopie/big-screen/example/osplitter_mail.pro
new file mode 100644
index 0000000..ec6e626
--- a/dev/null
+++ b/libopie/big-screen/example/osplitter_mail.pro
@@ -0,0 +1,12 @@
+CONFIG += qt warn_on
+TEMPLATE = app
+TARGET = osplitter-mail
+
+INCLUDEPATH += $(OPIEDIR)/include
+DEPENDSPATH += $(OPIEDIR)/include
+
+HEADERS = osplitter_mail.h
+SOURCES = osplitter_mail.cpp
+
+LIBS += -lqpe -lopie
+include ( $(OPIEDIR)/include.pro )
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
@@ -77,4 +77,5 @@ OSplitter::OSplitter( Orientation orient, QWidget* parent, const char* name, WFl
*/
OSplitter::~OSplitter() {
+ qWarning("Deleted Splitter");
m_splitter.setAutoDelete( true );
m_splitter.clear();
@@ -155,5 +156,5 @@ void OSplitter::addWidget( OSplitter* split ) {
*/
if (m_tabWidget )
- split->setTabWidget( m_tabWidget );
+ setTabWidget( m_parentTab );
else{
Opie::OSplitterContainer con;
@@ -307,5 +308,5 @@ QWidget* OSplitter::currentWidget() const{
}
-#if 0
+
/**
* @reimplented for internal reasons
@@ -313,5 +314,6 @@ QWidget* OSplitter::currentWidget() const{
*/
QSize OSplitter::sizeHint()const {
- return QSize(10, 10);
+ if (m_parentTab )
+ return QFrame::sizeHint();
if (m_hbox )
@@ -322,7 +324,12 @@ QSize OSplitter::sizeHint()const {
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
+
/**
@@ -336,5 +343,5 @@ 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 ) {
@@ -347,5 +354,6 @@ void OSplitter::resizeEvent( QResizeEvent* res ) {
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;
@@ -399,5 +407,5 @@ void OSplitter::changeTab() {
}
- qWarning(" New Tab Widget ");
+ qWarning(" New Tab Widget %s", name() );
/*
* and add all widgets this will reparent them
@@ -408,5 +416,10 @@ void OSplitter::changeTab() {
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 );
@@ -420,6 +433,8 @@ void OSplitter::changeTab() {
}
- 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 );
+ }
@@ -444,5 +459,5 @@ void OSplitter::changeHBox() {
}
- qWarning("new HBox");
+ qWarning("new HBox %s", name() );
m_hbox = new QHBox( this );
commonChangeBox();
@@ -455,5 +470,5 @@ void OSplitter::changeVBox() {
}
- qWarning("New VBOX");
+ qWarning("New VBOX %s", name() );
m_hbox = new QVBox( this );
@@ -469,4 +484,5 @@ void OSplitter::changeVBox() {
*/
void OSplitter::commonChangeBox() {
+ qWarning(" Name of Splitters is %s", name() );
for (ContainerList::Iterator it = m_container.begin(); it != m_container.end(); ++it ) {
@@ -482,4 +498,6 @@ void OSplitter::commonChangeBox() {
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 );
}
@@ -488,6 +506,7 @@ void OSplitter::commonChangeBox() {
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();
@@ -504,5 +523,5 @@ void OSplitter::setTabWidget( OTabWidget* wid) {
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();
@@ -527,6 +546,8 @@ void OSplitter::setTabWidget( OTabWidget* wid) {
/* our own crap is added and children from change* */
- delete tab;
- delete box;
+ if (m_parentTab ) {
+ delete tab;
+ delete box;
+ }
}
@@ -553,5 +574,5 @@ bool OSplitter::layoutMode()const {
return false;
}else if ( size().height() > m_size_policy &&
- m_size_policy == Vertical ) {
+ m_orient == Vertical ) {
return false;
}
diff --git a/libopie/big-screen/osplitter.h b/libopie/big-screen/osplitter.h
index 2bcde57..33a085f 100644
--- a/libopie/big-screen/osplitter.h
+++ b/libopie/big-screen/osplitter.h
@@ -43,4 +43,10 @@ class QHBox;
//template class QValueList<Opie::OSplitterContainer>;
+/*
+ * TODO
+ * -check API docu
+ * -one more example
+ * -allow inserting at a position
+ */
/**
@@ -103,6 +109,6 @@ signals:
void sizeChanged( bool b, Orientation ori);
public:
-// QSize sizeHint()const;
-// QSize minimumSizeHint()const;
+ QSize sizeHint()const;
+ QSize minimumSizeHint()const;
protected: