author | zecke <zecke> | 2003-09-01 16:29:42 (UTC) |
---|---|---|
committer | zecke <zecke> | 2003-09-01 16:29:42 (UTC) |
commit | 4513097a6eb827a9bf91b96d098cb392442c77f3 (patch) (unidiff) | |
tree | 4dcfa31739ba093fb3a8962769e6acb1fde4b28e /libopie/big-screen | |
parent | a1119a2cdb040e0e783a04ccd2a9da21f49c10b9 (diff) | |
download | opie-4513097a6eb827a9bf91b96d098cb392442c77f3.zip opie-4513097a6eb827a9bf91b96d098cb392442c77f3.tar.gz opie-4513097a6eb827a9bf91b96d098cb392442c77f3.tar.bz2 |
Add big-screen extension to libopie
-rw-r--r-- | libopie/big-screen/big-screen.pro | 2 | ||||
-rw-r--r-- | libopie/big-screen/osplitter.cpp | 35 | ||||
-rw-r--r-- | libopie/big-screen/osplitter.h | 11 |
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 @@ | |||
1 | HEADERS += big-screen/obigscreen_p.h big-screen/osplitter.h | ||
2 | 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,19 +1,19 @@ | |||
1 | /* | 1 | /* |
2 | =. This file is part of the OPIE Project | 2 | =. This file is part of the OPIE Project |
3 | .=l. Copyright (c) 2002 hOlgAr <zecke@handhelds.org> | 3 | .=l. Copyright (c) 2003 hOlgAr <zecke@handhelds.org> |
4 | .>+-= | 4 | .>+-= |
5 | _;:, .> :=|. This library is free software; you can | 5 | _;:, .> :=|. This library is free software; you can |
6 | .> <`_, > . <= redistribute it and/or modify it under | 6 | .> <`_, > . <= redistribute it and/or modify it under |
7 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 7 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
8 | .="- .-=="i, .._ License as published by the Free Software | 8 | .="- .-=="i, .._ License as published by the Free Software |
9 | - . .-<_> .<> Foundation; either version 2 of the License, | 9 | - . .-<_> .<> Foundation; either version 2 of the License, |
10 | ._= =} : or (at your option) any later version. | 10 | ._= =} : or (at your option) any later version. |
11 | .%`+i> _;_. | 11 | .%`+i> _;_. |
12 | .i_,=:_. -<s. This library is distributed in the hope that | 12 | .i_,=:_. -<s. This library is distributed in the hope that |
13 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 13 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
14 | : .. .:, . . . without even the implied warranty of | 14 | : .. .:, . . . without even the implied warranty of |
15 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 15 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
16 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 16 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
17 | ..}^=.= = ; Library General Public License for more | 17 | ..}^=.= = ; Library General Public License for more |
18 | ++= -. .` .: details. | 18 | ++= -. .` .: details. |
19 | : = ...= . :.=- | 19 | : = ...= . :.=- |
@@ -46,52 +46,59 @@ | |||
46 | * @param orient The orientation wether to layout horizontal or vertical | 46 | * @param orient The orientation wether to layout horizontal or vertical |
47 | * @param parent The parent of this widget | 47 | * @param parent The parent of this widget |
48 | * @param name The name passed on to QObject | 48 | * @param name The name passed on to QObject |
49 | * @param fl Additional widgets flags passed to QWidget | 49 | * @param fl Additional widgets flags passed to QWidget |
50 | * | 50 | * |
51 | * @short single c'tor of the OSplitter | 51 | * @short single c'tor of the OSplitter |
52 | */ | 52 | */ |
53 | OSplitter::OSplitter( Orientation orient, QWidget* parent, const char* name, WFlags fl ) | 53 | OSplitter::OSplitter( Orientation orient, QWidget* parent, const char* name, WFlags fl ) |
54 | : QFrame( parent, name, fl ) | 54 | : QFrame( parent, name, fl ) |
55 | { | 55 | { |
56 | m_orient = orient; | 56 | m_orient = orient; |
57 | m_hbox = 0; | 57 | m_hbox = 0; |
58 | m_size_policy = 330; | 58 | m_size_policy = 330; |
59 | setFontPropagation( AllChildren ); | 59 | setFontPropagation( AllChildren ); |
60 | setPalettePropagation( AllChildren ); | 60 | setPalettePropagation( AllChildren ); |
61 | 61 | ||
62 | m_tabWidget = new OTabWidget(this); | 62 | /* start by default with the tab widget */ |
63 | m_tabWidget = 0; | ||
64 | changeTab(); | ||
65 | |||
63 | } | 66 | } |
64 | 67 | ||
65 | 68 | ||
66 | /** | 69 | /** |
67 | * Destructor destructs this object and cleans up. All child | 70 | * Destructor destructs this object and cleans up. All child |
68 | * widgets will be deleted | 71 | * widgets will be deleted |
69 | * @see addWidget | 72 | * @see addWidget |
70 | */ | 73 | */ |
71 | OSplitter::~OSplitter() { | 74 | OSplitter::~OSplitter() { |
72 | delete m_hbox; | 75 | delete m_hbox; |
73 | delete m_tabWidget; | 76 | delete m_tabWidget; |
74 | } | 77 | } |
75 | 78 | ||
76 | 79 | ||
77 | /** | 80 | /** |
78 | * This function sets the size change policy of the splitter. | 81 | * This function sets the size change policy of the splitter. |
79 | * If this size marked is crossed the splitter will relayout. | 82 | * If this size marked is crossed the splitter will relayout. |
80 | * Note that depending on the set Orientation it'll either look | 83 | * Note: that depending on the set Orientation it'll either look |
81 | * at the width or height. | 84 | * at the width or height. |
85 | * Note: If you want to from side to side view to tabbed view you need | ||
86 | * to make sure that the size you supply is not smaller than the minimum | ||
87 | * size of your added widgets. Note that if you use widgets like QComboBoxes | ||
88 | * you need to teach them to accept smaller sizes as well @see QWidget::setSizePolicy | ||
82 | * | 89 | * |
83 | * @param width_height The mark that will be watched. Interpreted depending on the Orientation of the Splitter. | 90 | * @param width_height The mark that will be watched. Interpreted depending on the Orientation of the Splitter. |
84 | * @return void | 91 | * @return void |
85 | */ | 92 | */ |
86 | void OSplitter::setSizeChange( int width_height ) { | 93 | void OSplitter::setSizeChange( int width_height ) { |
87 | m_size_policy = width_height; | 94 | m_size_policy = width_height; |
88 | QSize sz(width(), height() ); | 95 | QSize sz(width(), height() ); |
89 | QResizeEvent ev(sz, sz ); | 96 | QResizeEvent ev(sz, sz ); |
90 | resizeEvent(&ev); | 97 | resizeEvent(&ev); |
91 | } | 98 | } |
92 | 99 | ||
93 | /** | 100 | /** |
94 | * Adds a widget to the Splitter. The widgets gets inserted | 101 | * Adds a widget to the Splitter. The widgets gets inserted |
95 | * at the end of either the Box or TabWidget. | 102 | * at the end of either the Box or TabWidget. |
96 | * Ownership gets transfered and the widgets gets reparented. | 103 | * Ownership gets transfered and the widgets gets reparented. |
97 | * Note: icon and label is only available on small screensizes | 104 | * Note: icon and label is only available on small screensizes |
@@ -174,65 +181,83 @@ void OSplitter::setCurrentWidget( QWidget* w) { | |||
174 | * argument it takes. | 181 | * argument it takes. |
175 | * Searches list of widgets for label. It'll pick the first label it finds | 182 | * Searches list of widgets for label. It'll pick the first label it finds |
176 | * | 183 | * |
177 | * @param label Label to look for. First match will be taken | 184 | * @param label Label to look for. First match will be taken |
178 | */ | 185 | */ |
179 | void OSplitter::setCurrentWidget( const QString& label ) { | 186 | void OSplitter::setCurrentWidget( const QString& label ) { |
180 | ContainerList::Iterator it; | 187 | ContainerList::Iterator it; |
181 | for (it = m_container.begin(); it != m_container.end(); ++it ) { | 188 | for (it = m_container.begin(); it != m_container.end(); ++it ) { |
182 | if ( (*it).name == label ) { | 189 | if ( (*it).name == label ) { |
183 | setCurrentWidget( (*it).widget ); | 190 | setCurrentWidget( (*it).widget ); |
184 | break; | 191 | break; |
185 | } | 192 | } |
186 | } | 193 | } |
187 | } | 194 | } |
188 | 195 | ||
189 | /** | 196 | /** |
197 | * This will only work when the TabWidget is active | ||
198 | * If everything is visible this signal is kindly ignored | ||
199 | * @see OTabWidget::setCurrentTab(int) | ||
200 | * | ||
201 | * @param tab The tab to make current | ||
202 | */ | ||
203 | void OSplitter::setCurrentWidget( int tab ) { | ||
204 | if (m_tabWidget ) | ||
205 | m_tabWidget->setCurrentTab( tab ); | ||
206 | } | ||
207 | |||
208 | /** | ||
190 | * return the currently activated widget if in tab widget mode | 209 | * return the currently activated widget if in tab widget mode |
191 | * or null because all widgets are visible | 210 | * or null because all widgets are visible |
192 | */ | 211 | */ |
193 | QWidget* OSplitter::currentWidget() { | 212 | QWidget* OSplitter::currentWidget() { |
194 | if ( m_hbox ) | 213 | if ( m_hbox ) |
195 | return 0l; | 214 | return 0l; |
196 | else | 215 | else |
197 | return m_tabWidget->currentWidget(); | 216 | return m_tabWidget->currentWidget(); |
198 | } | 217 | } |
199 | 218 | ||
200 | #if 0 | 219 | #if 0 |
201 | /** | 220 | /** |
202 | * @reimplented for internal reasons | 221 | * @reimplented for internal reasons |
203 | * returns the sizeHint of one of its sub widgets | 222 | * returns the sizeHint of one of its sub widgets |
204 | */ | 223 | */ |
205 | QSize OSplitter::sizeHint()const { | 224 | QSize OSplitter::sizeHint()const { |
225 | return QSize(10, 10); | ||
226 | |||
206 | if (m_hbox ) | 227 | if (m_hbox ) |
207 | return m_hbox->sizeHint(); | 228 | return m_hbox->sizeHint(); |
208 | else | 229 | else |
209 | return m_tabWidget->sizeHint(); | 230 | return m_tabWidget->sizeHint(); |
210 | } | 231 | } |
232 | |||
233 | QSize OSplitter::minimumSizeHint()const { | ||
234 | return QSize(10, 10 ); | ||
235 | } | ||
211 | #endif | 236 | #endif |
212 | 237 | ||
213 | /** | 238 | /** |
214 | * @reimplemented for internal reasons | 239 | * @reimplemented for internal reasons |
215 | */ | 240 | */ |
216 | void OSplitter::resizeEvent( QResizeEvent* res ) { | 241 | void OSplitter::resizeEvent( QResizeEvent* res ) { |
217 | QFrame::resizeEvent( res ); | 242 | QFrame::resizeEvent( res ); |
218 | /* | 243 | /* |
219 | * | 244 | * |
220 | */ | 245 | */ |
221 | // qWarning("Old size was width = %d height = %d", res->oldSize().width(), res->oldSize().height() ); | 246 | // qWarning("Old size was width = %d height = %d", res->oldSize().width(), res->oldSize().height() ); |
222 | // qWarning("New size is width = %d height = %d", res->size().width(), res->size().height() ); | 247 | qWarning("New size is width = %d height = %d", res->size().width(), res->size().height() ); |
223 | if ( res->size().width() > m_size_policy && | 248 | if ( res->size().width() > m_size_policy && |
224 | m_orient == Horizontal ) { | 249 | m_orient == Horizontal ) { |
225 | changeHBox(); | 250 | changeHBox(); |
226 | }else if ( (res->size().width() <= m_size_policy && | 251 | }else if ( (res->size().width() <= m_size_policy && |
227 | m_orient == Horizontal ) || | 252 | m_orient == Horizontal ) || |
228 | (res->size().height() <= m_size_policy && | 253 | (res->size().height() <= m_size_policy && |
229 | m_orient == Vertical ) ) { | 254 | m_orient == Vertical ) ) { |
230 | changeTab(); | 255 | changeTab(); |
231 | }else if ( res->size().height() > m_size_policy && | 256 | }else if ( res->size().height() > m_size_policy && |
232 | m_size_policy == Vertical ) { | 257 | m_size_policy == Vertical ) { |
233 | changeVBox(); | 258 | changeVBox(); |
234 | } | 259 | } |
235 | } | 260 | } |
236 | 261 | ||
237 | 262 | ||
238 | void OSplitter::addToTab( const Opie::OSplitterContainer& con ) { | 263 | void OSplitter::addToTab( const Opie::OSplitterContainer& con ) { |
@@ -250,32 +275,34 @@ void OSplitter::removeFromTab( QWidget* wid ) { | |||
250 | m_tabWidget->removePage( wid ); | 275 | m_tabWidget->removePage( wid ); |
251 | } | 276 | } |
252 | 277 | ||
253 | void OSplitter::changeTab() { | 278 | void OSplitter::changeTab() { |
254 | if (m_tabWidget ) { | 279 | if (m_tabWidget ) { |
255 | m_tabWidget->setGeometry( frameRect() ); | 280 | m_tabWidget->setGeometry( frameRect() ); |
256 | return; | 281 | return; |
257 | } | 282 | } |
258 | 283 | ||
259 | qWarning(" New Tab Widget "); | 284 | qWarning(" New Tab Widget "); |
260 | /* | 285 | /* |
261 | * and add all widgets this will reparent them | 286 | * and add all widgets this will reparent them |
262 | * delete m_hbox set it to 0 | 287 | * delete m_hbox set it to 0 |
263 | * | 288 | * |
264 | */ | 289 | */ |
265 | m_tabWidget = new OTabWidget( this ); | 290 | m_tabWidget = new OTabWidget( this ); |
291 | connect(m_tabWidget, SIGNAL(currentChanged(QWidget*) ), | ||
292 | this, SIGNAL(currentChanged(QWidget*) ) ); | ||
266 | 293 | ||
267 | for ( ContainerList::Iterator it = m_container.begin(); it != m_container.end(); ++it ) { | 294 | for ( ContainerList::Iterator it = m_container.begin(); it != m_container.end(); ++it ) { |
268 | qWarning("Widget is %s", (*it).name.latin1() ); | 295 | qWarning("Widget is %s", (*it).name.latin1() ); |
269 | addToTab( (*it) ); | 296 | addToTab( (*it) ); |
270 | } | 297 | } |
271 | 298 | ||
272 | delete m_hbox; | 299 | delete m_hbox; |
273 | m_hbox = 0; | 300 | m_hbox = 0; |
274 | m_tabWidget->setGeometry( frameRect() ); | 301 | m_tabWidget->setGeometry( frameRect() ); |
275 | m_tabWidget->show(); | 302 | m_tabWidget->show(); |
276 | 303 | ||
277 | } | 304 | } |
278 | 305 | ||
279 | void OSplitter::changeHBox() { | 306 | void OSplitter::changeHBox() { |
280 | if (m_hbox ) { | 307 | if (m_hbox ) { |
281 | m_hbox->setGeometry( frameRect() ); | 308 | m_hbox->setGeometry( frameRect() ); |
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,19 +1,19 @@ | |||
1 | /* | 1 | /* |
2 | =. This file is part of the OPIE Project | 2 | =. This file is part of the OPIE Project |
3 | .=l. Copyright (c) 2002 hOlgAr <zecke@handhelds.org> | 3 | .=l. Copyright (c) 2003 hOlgAr <zecke@handhelds.org> |
4 | .>+-= | 4 | .>+-= |
5 | _;:, .> :=|. This library is free software; you can | 5 | _;:, .> :=|. This library is free software; you can |
6 | .> <`_, > . <= redistribute it and/or modify it under | 6 | .> <`_, > . <= redistribute it and/or modify it under |
7 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 7 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
8 | .="- .-=="i, .._ License as published by the Free Software | 8 | .="- .-=="i, .._ License as published by the Free Software |
9 | - . .-<_> .<> Foundation; either version 2 of the License, | 9 | - . .-<_> .<> Foundation; either version 2 of the License, |
10 | ._= =} : or (at your option) any later version. | 10 | ._= =} : or (at your option) any later version. |
11 | .%`+i> _;_. | 11 | .%`+i> _;_. |
12 | .i_,=:_. -<s. This library is distributed in the hope that | 12 | .i_,=:_. -<s. This library is distributed in the hope that |
13 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 13 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
14 | : .. .:, . . . without even the implied warranty of | 14 | : .. .:, . . . without even the implied warranty of |
15 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 15 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
16 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 16 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
17 | ..}^=.= = ; Library General Public License for more | 17 | ..}^=.= = ; Library General Public License for more |
18 | ++= -. .` .: details. | 18 | ++= -. .` .: details. |
19 | : = ...= . :.=- | 19 | : = ...= . :.=- |
@@ -61,35 +61,44 @@ class QHBox; | |||
61 | */ | 61 | */ |
62 | class OSplitter : public QFrame{ | 62 | class OSplitter : public QFrame{ |
63 | Q_OBJECT | 63 | Q_OBJECT |
64 | public: | 64 | public: |
65 | typedef QValueList<Opie::OSplitterContainer> ContainerList; | 65 | typedef QValueList<Opie::OSplitterContainer> ContainerList; |
66 | OSplitter( Qt::Orientation = Horizontal, QWidget *parent = 0, | 66 | OSplitter( Qt::Orientation = Horizontal, QWidget *parent = 0, |
67 | const char* name = 0, WFlags fl = 0 ); | 67 | const char* name = 0, WFlags fl = 0 ); |
68 | ~OSplitter(); | 68 | ~OSplitter(); |
69 | 69 | ||
70 | void setSizeChange( int width_height ); | 70 | void setSizeChange( int width_height ); |
71 | 71 | ||
72 | void addWidget( QWidget* wid, const QString& icon, const QString& label ); | 72 | void addWidget( QWidget* wid, const QString& icon, const QString& label ); |
73 | void removeWidget( QWidget* ); | 73 | void removeWidget( QWidget* ); |
74 | 74 | ||
75 | void setCurrentWidget( QWidget* ); | 75 | void setCurrentWidget( QWidget* ); |
76 | void setCurrentWidget( const QString& label ); | 76 | void setCurrentWidget( const QString& label ); |
77 | void setCurrentWidget( int ); | ||
77 | QWidget* currentWidget(); | 78 | QWidget* currentWidget(); |
78 | 79 | ||
80 | signals: | ||
81 | /** | ||
82 | * Emitted if in tab and comes directly from the tab widget | ||
83 | * | ||
84 | */ | ||
85 | void currentChanged( QWidget* ); | ||
86 | public: | ||
79 | // QSize sizeHint()const; | 87 | // QSize sizeHint()const; |
88 | // QSize minimumSizeHint()const; | ||
80 | 89 | ||
81 | protected: | 90 | protected: |
82 | void resizeEvent( QResizeEvent* ); | 91 | void resizeEvent( QResizeEvent* ); |
83 | 92 | ||
84 | private: | 93 | private: |
85 | void addToTab( const Opie::OSplitterContainer& ); | 94 | void addToTab( const Opie::OSplitterContainer& ); |
86 | void addToBox( const Opie::OSplitterContainer& ); | 95 | void addToBox( const Opie::OSplitterContainer& ); |
87 | void removeFromTab( QWidget* ); | 96 | void removeFromTab( QWidget* ); |
88 | void changeTab(); | 97 | void changeTab(); |
89 | void changeHBox(); | 98 | void changeHBox(); |
90 | void changeVBox(); | 99 | void changeVBox(); |
91 | void commonChangeBox(); | 100 | void commonChangeBox(); |
92 | QHBox *m_hbox; | 101 | QHBox *m_hbox; |
93 | OTabWidget *m_tabWidget; | 102 | OTabWidget *m_tabWidget; |
94 | Orientation m_orient; | 103 | Orientation m_orient; |
95 | int m_size_policy; | 104 | int m_size_policy; |