author | mickeyl <mickeyl> | 2003-05-01 14:00:37 (UTC) |
---|---|---|
committer | mickeyl <mickeyl> | 2003-05-01 14:00:37 (UTC) |
commit | 95e533a6ac257d3b95cd8905660008fb7dcd33f1 (patch) (unidiff) | |
tree | c671954f59eaa70db2285f9abe49fd8b4512dd12 | |
parent | 1d721ddb247e9000e29fba3150e0cce5f59f543e (diff) | |
download | opie-95e533a6ac257d3b95cd8905660008fb7dcd33f1.zip opie-95e533a6ac257d3b95cd8905660008fb7dcd33f1.tar.gz opie-95e533a6ac257d3b95cd8905660008fb7dcd33f1.tar.bz2 |
- restructure opieui example directory
- start work on ONamedListViewItem providing a slightly higher level interface
-rw-r--r-- | libopie2/examples/opieui/olistviewdemo/.cvsignore | 8 | ||||
-rw-r--r-- | libopie2/examples/opieui/olistviewdemo/main.cpp | 26 | ||||
-rw-r--r-- | libopie2/examples/opieui/olistviewdemo/olistviewdemo.cpp | 54 | ||||
-rw-r--r-- | libopie2/examples/opieui/olistviewdemo/olistviewdemo.h | 51 | ||||
-rw-r--r-- | libopie2/examples/opieui/olistviewdemo/olistviewdemo.pro (copied from libopie2/examples/opieui/oversatileviewdemo/opieui.pro) | 8 | ||||
-rw-r--r-- | libopie2/examples/opieui/opieui.pro | 3 | ||||
-rw-r--r-- | libopie2/examples/opieui/oversatileviewdemo/oversatileviewdemo.pro (renamed from libopie2/examples/opieui/oversatileviewdemo/opieui.pro) | 0 | ||||
-rw-r--r-- | libopie2/opieui/olistview.cpp | 109 | ||||
-rw-r--r-- | libopie2/opieui/olistview.h | 177 |
9 files changed, 380 insertions, 56 deletions
diff --git a/libopie2/examples/opieui/olistviewdemo/.cvsignore b/libopie2/examples/opieui/olistviewdemo/.cvsignore new file mode 100644 index 0000000..1317f7e --- a/dev/null +++ b/libopie2/examples/opieui/olistviewdemo/.cvsignore | |||
@@ -0,0 +1,8 @@ | |||
1 | Makefile* | ||
2 | moc* | ||
3 | *moc | ||
4 | *.o | ||
5 | ~* | ||
6 | moc | ||
7 | obj | ||
8 | |||
diff --git a/libopie2/examples/opieui/olistviewdemo/main.cpp b/libopie2/examples/opieui/olistviewdemo/main.cpp new file mode 100644 index 0000000..a93f361 --- a/dev/null +++ b/libopie2/examples/opieui/olistviewdemo/main.cpp | |||
@@ -0,0 +1,26 @@ | |||
1 | /********************************************************************** | ||
2 | ** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved. | ||
3 | ** | ||
4 | ** This file is part of Opie Environment. | ||
5 | ** | ||
6 | ** This file may be distributed and/or modified under the terms of the | ||
7 | ** GNU General Public License version 2 as published by the Free Software | ||
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | ||
9 | ** packaging of this file. | ||
10 | ** | ||
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | ||
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | ||
13 | ** | ||
14 | **********************************************************************/ | ||
15 | |||
16 | #include "olistviewdemo.h" | ||
17 | #include <opie2/oapplication.h> | ||
18 | |||
19 | int main( int argc, char **argv ) | ||
20 | { | ||
21 | OApplication a( argc, argv, "OListViewDemo" ); | ||
22 | OListViewDemo e; | ||
23 | a.showMainWidget(&e); | ||
24 | return a.exec(); | ||
25 | } | ||
26 | |||
diff --git a/libopie2/examples/opieui/olistviewdemo/olistviewdemo.cpp b/libopie2/examples/opieui/olistviewdemo/olistviewdemo.cpp new file mode 100644 index 0000000..31bda9d --- a/dev/null +++ b/libopie2/examples/opieui/olistviewdemo/olistviewdemo.cpp | |||
@@ -0,0 +1,54 @@ | |||
1 | /* | ||
2 | This file is part of the Opie Project | ||
3 | |||
4 | Copyright (C) 2003 Michael 'Mickey' Lauer | ||
5 | <mickey@tm.informatik.uni-frankfurt.de> | ||
6 | =. | ||
7 | .=l. | ||
8 | .>+-= | ||
9 | _;:, .> :=|. This program is free software; you can | ||
10 | .> <`_, > . <= redistribute it and/or modify it under | ||
11 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | ||
12 | .="- .-=="i, .._ License as published by the Free Software | ||
13 | - . .-<_> .<> Foundation; either version 2 of the License, | ||
14 | ._= =} : or (at your option) any later version. | ||
15 | .%`+i> _;_. | ||
16 | .i_,=:_. -<s. This program is distributed in the hope that | ||
17 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | ||
18 | : .. .:, . . . without even the implied warranty of | ||
19 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | ||
20 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | ||
21 | ..}^=.= = ; Library General Public License for more | ||
22 | ++= -. .` .: details. | ||
23 | : = ...= . :.=- | ||
24 | -. .:....=;==+<; You should have received a copy of the GNU | ||
25 | -_. . . )=. = Library General Public License along with | ||
26 | -- :-=` this library; see the file COPYING.LIB. | ||
27 | If not, write to the Free Software Foundation, | ||
28 | Inc., 59 Temple Place - Suite 330, | ||
29 | Boston, MA 02111-1307, USA. | ||
30 | |||
31 | */ | ||
32 | |||
33 | #include "olistviewdemo.h" | ||
34 | #include <opie2/olistview.h> | ||
35 | |||
36 | #include <qstring.h> | ||
37 | #include <qpixmap.h> | ||
38 | #include <qlistview.h> | ||
39 | |||
40 | OListViewDemo::OListViewDemo( QWidget* parent, const char* name, WFlags f ) | ||
41 | :QVBox( parent, name, f ) | ||
42 | { | ||
43 | lv = new ONamedListView( this ); | ||
44 | lv->addColumns( QStringList::split( ' ', "Column1 Column2 Column3 Column4" ) ); | ||
45 | |||
46 | ONamedListViewItem* item = new ONamedListViewItem( lv, QStringList::split( ' ', "Text1 Text2 Text3 Text4" ) ); | ||
47 | item->setText( "Column2", "ModifiedText" ); | ||
48 | item->setText( "Column5", "ThisColumnDoesNotExits" ); | ||
49 | } | ||
50 | |||
51 | OListViewDemo::~OListViewDemo() | ||
52 | { | ||
53 | } | ||
54 | |||
diff --git a/libopie2/examples/opieui/olistviewdemo/olistviewdemo.h b/libopie2/examples/opieui/olistviewdemo/olistviewdemo.h new file mode 100644 index 0000000..8a5986a --- a/dev/null +++ b/libopie2/examples/opieui/olistviewdemo/olistviewdemo.h | |||
@@ -0,0 +1,51 @@ | |||
1 | /* | ||
2 | This file is part of the Opie Project | ||
3 | |||
4 | Copyright (C) 2003 Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> | ||
5 | =. | ||
6 | .=l. | ||
7 | .>+-= | ||
8 | _;:, .> :=|. This program is free software; you can | ||
9 | .> <`_, > . <= redistribute it and/or modify it under | ||
10 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | ||
11 | .="- .-=="i, .._ License as published by the Free Software | ||
12 | - . .-<_> .<> Foundation; either version 2 of the License, | ||
13 | ._= =} : or (at your option) any later version. | ||
14 | .%`+i> _;_. | ||
15 | .i_,=:_. -<s. This program is distributed in the hope that | ||
16 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | ||
17 | : .. .:, . . . without even the implied warranty of | ||
18 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | ||
19 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | ||
20 | ..}^=.= = ; Library General Public License for more | ||
21 | ++= -. .` .: details. | ||
22 | : = ...= . :.=- | ||
23 | -. .:....=;==+<; You should have received a copy of the GNU | ||
24 | -_. . . )=. = Library General Public License along with | ||
25 | -- :-=` this library; see the file COPYING.LIB. | ||
26 | If not, write to the Free Software Foundation, | ||
27 | Inc., 59 Temple Place - Suite 330, | ||
28 | Boston, MA 02111-1307, USA. | ||
29 | |||
30 | */ | ||
31 | |||
32 | #ifndef OLISTVIEWDEMO_H | ||
33 | #define OLISTVIEWDEMO_H | ||
34 | |||
35 | #include <qvbox.h> | ||
36 | #include <opie2/olistview.h> | ||
37 | |||
38 | class OListViewDemo: public QVBox | ||
39 | { | ||
40 | Q_OBJECT | ||
41 | |||
42 | public: | ||
43 | OListViewDemo( QWidget* parent=0, const char* name=0, WFlags f=0 ); | ||
44 | virtual ~OListViewDemo(); | ||
45 | |||
46 | private: | ||
47 | ONamedListView* lv; | ||
48 | |||
49 | }; | ||
50 | |||
51 | #endif | ||
diff --git a/libopie2/examples/opieui/oversatileviewdemo/opieui.pro b/libopie2/examples/opieui/olistviewdemo/olistviewdemo.pro index 8ad5fc9..aabe733 100644 --- a/libopie2/examples/opieui/oversatileviewdemo/opieui.pro +++ b/libopie2/examples/opieui/olistviewdemo/olistviewdemo.pro | |||
@@ -1,17 +1,15 @@ | |||
1 | TEMPLATE = app | 1 | TEMPLATE = app |
2 | CONFIG = qt warn_on debug | 2 | CONFIG = qt warn_on debug |
3 | HEADERS = opieuidemo.h \ | 3 | HEADERS = olistviewdemo.h |
4 | oversatileviewdemo.h | 4 | SOURCES = olistviewdemo.cpp \ |
5 | SOURCES = opieuidemo.cpp \ | ||
6 | oversatileviewdemo.cpp \ | ||
7 | main.cpp | 5 | main.cpp |
8 | INCLUDEPATH += $(OPIEDIR)/include | 6 | INCLUDEPATH += $(OPIEDIR)/include |
9 | DEPENDPATH += $(OPIEDIR)/include | 7 | DEPENDPATH += $(OPIEDIR)/include |
10 | LIBS += -lopieui2 -lopiecore2 | 8 | LIBS += -lopieui2 -lopiecore2 |
11 | TARGET = opieuidemo | 9 | TARGET = olistviewdemo |
12 | MOC_DIR = moc | 10 | MOC_DIR = moc |
13 | OBJECTS_DIR = obj | 11 | OBJECTS_DIR = obj |
14 | 12 | ||
15 | include ( $(OPIEDIR)/include.pro ) | 13 | include ( $(OPIEDIR)/include.pro ) |
16 | 14 | ||
17 | 15 | ||
diff --git a/libopie2/examples/opieui/opieui.pro b/libopie2/examples/opieui/opieui.pro new file mode 100644 index 0000000..b52f013 --- a/dev/null +++ b/libopie2/examples/opieui/opieui.pro | |||
@@ -0,0 +1,3 @@ | |||
1 | TEMPLATE = subdirs | ||
2 | SUBDIRS = olistviewdemo oversatileviewdemo | ||
3 | |||
diff --git a/libopie2/examples/opieui/oversatileviewdemo/opieui.pro b/libopie2/examples/opieui/oversatileviewdemo/oversatileviewdemo.pro index 8ad5fc9..8ad5fc9 100644 --- a/libopie2/examples/opieui/oversatileviewdemo/opieui.pro +++ b/libopie2/examples/opieui/oversatileviewdemo/oversatileviewdemo.pro | |||
diff --git a/libopie2/opieui/olistview.cpp b/libopie2/opieui/olistview.cpp index 2b2f09a..8f97cc6 100644 --- a/libopie2/opieui/olistview.cpp +++ b/libopie2/opieui/olistview.cpp | |||
@@ -1,423 +1,532 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
3 | 3 | ||
4 | =. (C) 2003 Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> | 4 | =. (C) 2003 Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> |
5 | .=l. | 5 | .=l. |
6 | .>+-= | 6 | .>+-= |
7 | _;:, .> :=|. This program is free software; you can | 7 | _;:, .> :=|. This program is free software; you can |
8 | .> <`_, > . <= redistribute it and/or modify it under | 8 | .> <`_, > . <= redistribute it and/or modify it under |
9 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 9 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
10 | .="- .-=="i, .._ License as published by the Free Software | 10 | .="- .-=="i, .._ License as published by the Free Software |
11 | - . .-<_> .<> Foundation; either version 2 of the License, | 11 | - . .-<_> .<> Foundation; either version 2 of the License, |
12 | ._= =} : or (at your option) any later version. | 12 | ._= =} : or (at your option) any later version. |
13 | .%`+i> _;_. | 13 | .%`+i> _;_. |
14 | .i_,=:_. -<s. This program is distributed in the hope that | 14 | .i_,=:_. -<s. This program is distributed in the hope that |
15 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 15 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
16 | : .. .:, . . . without even the implied warranty of | 16 | : .. .:, . . . without even the implied warranty of |
17 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 17 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
18 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 18 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
19 | ..}^=.= = ; Library General Public License for more | 19 | ..}^=.= = ; Library General Public License for more |
20 | ++= -. .` .: details. | 20 | ++= -. .` .: details. |
21 | : = ...= . :.=- | 21 | : = ...= . :.=- |
22 | -. .:....=;==+<; You should have received a copy of the GNU | 22 | -. .:....=;==+<; You should have received a copy of the GNU |
23 | -_. . . )=. = Library General Public License along with | 23 | -_. . . )=. = Library General Public License along with |
24 | -- :-=` this library; see the file COPYING.LIB. | 24 | -- :-=` this library; see the file COPYING.LIB. |
25 | If not, write to the Free Software Foundation, | 25 | If not, write to the Free Software Foundation, |
26 | Inc., 59 Temple Place - Suite 330, | 26 | Inc., 59 Temple Place - Suite 330, |
27 | Boston, MA 02111-1307, USA. | 27 | Boston, MA 02111-1307, USA. |
28 | 28 | ||
29 | */ | 29 | */ |
30 | 30 | ||
31 | /* QT */ | 31 | /* QT */ |
32 | 32 | ||
33 | #include <qcolor.h> | 33 | #include <qcolor.h> |
34 | #include <qheader.h> | 34 | #include <qheader.h> |
35 | #include <qpainter.h> | 35 | #include <qpainter.h> |
36 | #include <qpixmap.h> | 36 | #include <qpixmap.h> |
37 | 37 | ||
38 | /* OPIE */ | 38 | /* OPIE */ |
39 | 39 | ||
40 | #include <opie2/olistview.h> | 40 | #include <opie2/olistview.h> |
41 | 41 | ||
42 | /*====================================================================================== | 42 | /*====================================================================================== |
43 | * OListView | 43 | * OListView |
44 | *======================================================================================*/ | 44 | *======================================================================================*/ |
45 | 45 | ||
46 | OListView::OListView( QWidget *parent, const char *name ) | 46 | OListView::OListView( QWidget *parent, const char *name ) |
47 | :QListView( parent, name ) | 47 | :QListView( parent, name ) |
48 | { | 48 | { |
49 | //FIXME: get from global settings and calculate ==> see oglobalsettings.* | 49 | //FIXME: get from global settings and calculate ==> see oglobalsettings.* |
50 | 50 | ||
51 | m_alternateBackground = QColor( 238, 246, 255 ); | 51 | m_alternateBackground = QColor( 238, 246, 255 ); |
52 | m_columnSeparator = QPen( QColor( 150, 160, 170 ), 0, DotLine ); | 52 | m_columnSeparator = QPen( QColor( 150, 160, 170 ), 0, DotLine ); |
53 | m_fullWidth = true; | 53 | m_fullWidth = true; |
54 | } | 54 | } |
55 | 55 | ||
56 | OListView::~OListView() | 56 | OListView::~OListView() |
57 | { | 57 | { |
58 | } | 58 | } |
59 | 59 | ||
60 | void OListView::setFullWidth( bool fullWidth ) | 60 | void OListView::setFullWidth( bool fullWidth ) |
61 | { | 61 | { |
62 | m_fullWidth = m_fullWidth; | 62 | m_fullWidth = m_fullWidth; |
63 | #if QT_VERSION > 290 | 63 | #if QT_VERSION > 290 |
64 | header()->setStretchEnabled( fullWidth, columns()-1 ); | 64 | header()->setStretchEnabled( fullWidth, columns()-1 ); |
65 | #endif | 65 | #endif |
66 | } | 66 | } |
67 | 67 | ||
68 | bool OListView::fullWidth() const | 68 | bool OListView::fullWidth() const |
69 | { | 69 | { |
70 | return m_fullWidth; | 70 | return m_fullWidth; |
71 | } | 71 | } |
72 | 72 | ||
73 | int OListView::addColumn( const QString& label, int width ) | 73 | int OListView::addColumn( const QString& label, int width ) |
74 | { | 74 | { |
75 | int result = QListView::addColumn( label, width ); | 75 | int result = QListView::addColumn( label, width ); |
76 | #if QT_VERSION > 290 | 76 | #if QT_VERSION > 290 |
77 | if (m_fullWidth) { | 77 | if (m_fullWidth) { |
78 | header()->setStretchEnabled( false, columns()-2 ); | 78 | header()->setStretchEnabled( false, columns()-2 ); |
79 | header()->setStretchEnabled( true, columns()-1 ); | 79 | header()->setStretchEnabled( true, columns()-1 ); |
80 | } | 80 | } |
81 | #endif | 81 | #endif |
82 | return result; | 82 | return result; |
83 | } | 83 | } |
84 | 84 | ||
85 | int OListView::addColumn( const QIconSet& iconset, const QString& label, int width ) | 85 | int OListView::addColumn( const QIconSet& iconset, const QString& label, int width ) |
86 | { | 86 | { |
87 | int result = QListView::addColumn( iconset, label, width ); | 87 | int result = QListView::addColumn( iconset, label, width ); |
88 | #if QT_VERSION > 290 | 88 | #if QT_VERSION > 290 |
89 | if (m_fullWidth) { | 89 | if (m_fullWidth) { |
90 | header()->setStretchEnabled( false, columns()-2 ); | 90 | header()->setStretchEnabled( false, columns()-2 ); |
91 | header()->setStretchEnabled( true, columns()-1 ); | 91 | header()->setStretchEnabled( true, columns()-1 ); |
92 | } | 92 | } |
93 | #endif | 93 | #endif |
94 | return result; | 94 | return result; |
95 | } | 95 | } |
96 | 96 | ||
97 | void OListView::removeColumn( int index ) | 97 | void OListView::removeColumn( int index ) |
98 | { | 98 | { |
99 | QListView::removeColumn(index); | 99 | QListView::removeColumn(index); |
100 | #if QT_VERSION > 290 | 100 | #if QT_VERSION > 290 |
101 | if ( m_fullWidth && index == columns() ) | 101 | if ( m_fullWidth && index == columns() ) |
102 | { | 102 | { |
103 | header()->setStretchEnabled( true, columns()-1 ); | 103 | header()->setStretchEnabled( true, columns()-1 ); |
104 | } | 104 | } |
105 | #endif | 105 | #endif |
106 | } | 106 | } |
107 | 107 | ||
108 | const QColor& OListView::alternateBackground() const | 108 | const QColor& OListView::alternateBackground() const |
109 | { | 109 | { |
110 | return m_alternateBackground; | 110 | return m_alternateBackground; |
111 | } | 111 | } |
112 | 112 | ||
113 | void OListView::setAlternateBackground( const QColor &c ) | 113 | void OListView::setAlternateBackground( const QColor &c ) |
114 | { | 114 | { |
115 | m_alternateBackground = c; | 115 | m_alternateBackground = c; |
116 | repaint(); | 116 | repaint(); |
117 | } | 117 | } |
118 | 118 | ||
119 | const QPen& OListView::columnSeparator() const | 119 | const QPen& OListView::columnSeparator() const |
120 | { | 120 | { |
121 | return m_columnSeparator; | 121 | return m_columnSeparator; |
122 | } | 122 | } |
123 | 123 | ||
124 | void OListView::setColumnSeparator( const QPen& p ) | 124 | void OListView::setColumnSeparator( const QPen& p ) |
125 | { | 125 | { |
126 | m_columnSeparator = p; | 126 | m_columnSeparator = p; |
127 | repaint(); | 127 | repaint(); |
128 | } | 128 | } |
129 | 129 | ||
130 | OListViewItem* OListView::childFactory() | 130 | OListViewItem* OListView::childFactory() |
131 | { | 131 | { |
132 | return new OListViewItem( this ); | 132 | return new OListViewItem( this ); |
133 | } | 133 | } |
134 | 134 | ||
135 | #ifndef QT_NO_DATASTREAM | 135 | #ifndef QT_NO_DATASTREAM |
136 | void OListView::serializeTo( QDataStream& s ) const | 136 | void OListView::serializeTo( QDataStream& s ) const |
137 | { | 137 | { |
138 | #warning Caution... the binary format is still under construction... | 138 | #warning Caution... the binary format is still under construction... |
139 | qDebug( "storing OListView..." ); | 139 | qDebug( "storing OListView..." ); |
140 | 140 | ||
141 | // store number of columns and the labels | 141 | // store number of columns and the labels |
142 | s << columns(); | 142 | s << columns(); |
143 | for ( int i = 0; i < columns(); ++i ) | 143 | for ( int i = 0; i < columns(); ++i ) |
144 | s << columnText( i ); | 144 | s << columnText( i ); |
145 | 145 | ||
146 | // calculate the number of top-level items to serialize | 146 | // calculate the number of top-level items to serialize |
147 | int items = 0; | 147 | int items = 0; |
148 | QListViewItem* item = firstChild(); | 148 | QListViewItem* item = firstChild(); |
149 | while ( item ) | 149 | while ( item ) |
150 | { | 150 | { |
151 | item = item->nextSibling(); | 151 | item = item->nextSibling(); |
152 | items++; | 152 | items++; |
153 | } | 153 | } |
154 | 154 | ||
155 | // store number of items and the items itself | 155 | // store number of items and the items itself |
156 | s << items; | 156 | s << items; |
157 | item = firstChild(); | 157 | item = firstChild(); |
158 | for ( int i = 0; i < items; ++i ) | 158 | for ( int i = 0; i < items; ++i ) |
159 | { | 159 | { |
160 | s << *static_cast<OListViewItem*>( item ); | 160 | s << *static_cast<OListViewItem*>( item ); |
161 | item = item->nextSibling(); | 161 | item = item->nextSibling(); |
162 | } | 162 | } |
163 | 163 | ||
164 | qDebug( "OListview stored." ); | 164 | qDebug( "OListview stored." ); |
165 | } | 165 | } |
166 | 166 | ||
167 | void OListView::serializeFrom( QDataStream& s ) | 167 | void OListView::serializeFrom( QDataStream& s ) |
168 | { | 168 | { |
169 | #warning Caution... the binary format is still under construction... | 169 | #warning Caution... the binary format is still under construction... |
170 | qDebug( "loading OListView..." ); | 170 | qDebug( "loading OListView..." ); |
171 | 171 | ||
172 | int cols; | 172 | int cols; |
173 | s >> cols; | 173 | s >> cols; |
174 | qDebug( "read number of columns = %d", cols ); | 174 | qDebug( "read number of columns = %d", cols ); |
175 | 175 | ||
176 | while ( columns() < cols ) addColumn( QString::null ); | 176 | while ( columns() < cols ) addColumn( QString::null ); |
177 | 177 | ||
178 | for ( int i = 0; i < cols; ++i ) | 178 | for ( int i = 0; i < cols; ++i ) |
179 | { | 179 | { |
180 | QString coltext; | 180 | QString coltext; |
181 | s >> coltext; | 181 | s >> coltext; |
182 | qDebug( "read text '%s' for column %d", (const char*) coltext, i ); | 182 | qDebug( "read text '%s' for column %d", (const char*) coltext, i ); |
183 | setColumnText( i, coltext ); | 183 | setColumnText( i, coltext ); |
184 | } | 184 | } |
185 | 185 | ||
186 | int items; | 186 | int items; |
187 | s >> items; | 187 | s >> items; |
188 | qDebug( "read number of items = %d", items ); | 188 | qDebug( "read number of items = %d", items ); |
189 | 189 | ||
190 | for ( int i = 0; i < items; ++i ) | 190 | for ( int i = 0; i < items; ++i ) |
191 | { | 191 | { |
192 | OListViewItem* item = childFactory(); | 192 | OListViewItem* item = childFactory(); |
193 | s >> *item; | 193 | s >> *item; |
194 | } | 194 | } |
195 | 195 | ||
196 | qDebug( "OListView loaded." ); | 196 | qDebug( "OListView loaded." ); |
197 | 197 | ||
198 | } | 198 | } |
199 | 199 | ||
200 | QDataStream& operator<<( QDataStream& s, const OListView& lv ) | 200 | QDataStream& operator<<( QDataStream& s, const OListView& lv ) |
201 | { | 201 | { |
202 | lv.serializeTo( s ); | 202 | lv.serializeTo( s ); |
203 | } | 203 | } |
204 | 204 | ||
205 | QDataStream& operator>>( QDataStream& s, OListView& lv ) | 205 | QDataStream& operator>>( QDataStream& s, OListView& lv ) |
206 | { | 206 | { |
207 | lv.serializeFrom( s ); | 207 | lv.serializeFrom( s ); |
208 | } | 208 | } |
209 | #endif // QT_NO_DATASTREAM | 209 | #endif // QT_NO_DATASTREAM |
210 | 210 | ||
211 | /*====================================================================================== | 211 | /*====================================================================================== |
212 | * OListViewItem | 212 | * OListViewItem |
213 | *======================================================================================*/ | 213 | *======================================================================================*/ |
214 | 214 | ||
215 | OListViewItem::OListViewItem(QListView *parent) | 215 | OListViewItem::OListViewItem(QListView *parent) |
216 | : QListViewItem(parent) | 216 | : QListViewItem(parent) |
217 | { | 217 | { |
218 | init(); | 218 | init(); |
219 | } | 219 | } |
220 | 220 | ||
221 | |||
221 | OListViewItem::OListViewItem(QListViewItem *parent) | 222 | OListViewItem::OListViewItem(QListViewItem *parent) |
222 | : QListViewItem(parent) | 223 | : QListViewItem(parent) |
223 | { | 224 | { |
224 | init(); | 225 | init(); |
225 | } | 226 | } |
226 | 227 | ||
228 | |||
227 | OListViewItem::OListViewItem(QListView *parent, QListViewItem *after) | 229 | OListViewItem::OListViewItem(QListView *parent, QListViewItem *after) |
228 | : QListViewItem(parent, after) | 230 | : QListViewItem(parent, after) |
229 | { | 231 | { |
230 | init(); | 232 | init(); |
231 | } | 233 | } |
232 | 234 | ||
235 | |||
233 | OListViewItem::OListViewItem(QListViewItem *parent, QListViewItem *after) | 236 | OListViewItem::OListViewItem(QListViewItem *parent, QListViewItem *after) |
234 | : QListViewItem(parent, after) | 237 | : QListViewItem(parent, after) |
235 | { | 238 | { |
236 | init(); | 239 | init(); |
237 | } | 240 | } |
238 | 241 | ||
242 | |||
239 | OListViewItem::OListViewItem(QListView *parent, | 243 | OListViewItem::OListViewItem(QListView *parent, |
240 | QString label1, QString label2, QString label3, QString label4, | 244 | QString label1, QString label2, QString label3, QString label4, |
241 | QString label5, QString label6, QString label7, QString label8) | 245 | QString label5, QString label6, QString label7, QString label8) |
242 | : QListViewItem(parent, label1, label2, label3, label4, label5, label6, label7, label8) | 246 | : QListViewItem(parent, label1, label2, label3, label4, label5, label6, label7, label8) |
243 | { | 247 | { |
244 | init(); | 248 | init(); |
245 | } | 249 | } |
246 | 250 | ||
251 | |||
247 | OListViewItem::OListViewItem(QListViewItem *parent, | 252 | OListViewItem::OListViewItem(QListViewItem *parent, |
248 | QString label1, QString label2, QString label3, QString label4, | 253 | QString label1, QString label2, QString label3, QString label4, |
249 | QString label5, QString label6, QString label7, QString label8) | 254 | QString label5, QString label6, QString label7, QString label8) |
250 | : QListViewItem(parent, label1, label2, label3, label4, label5, label6, label7, label8) | 255 | : QListViewItem(parent, label1, label2, label3, label4, label5, label6, label7, label8) |
251 | { | 256 | { |
252 | init(); | 257 | init(); |
253 | } | 258 | } |
254 | 259 | ||
260 | |||
255 | OListViewItem::OListViewItem(QListView *parent, QListViewItem *after, | 261 | OListViewItem::OListViewItem(QListView *parent, QListViewItem *after, |
256 | QString label1, QString label2, QString label3, QString label4, | 262 | QString label1, QString label2, QString label3, QString label4, |
257 | QString label5, QString label6, QString label7, QString label8) | 263 | QString label5, QString label6, QString label7, QString label8) |
258 | : QListViewItem(parent, after, label1, label2, label3, label4, label5, label6, label7, label8) | 264 | : QListViewItem(parent, after, label1, label2, label3, label4, label5, label6, label7, label8) |
259 | { | 265 | { |
260 | init(); | 266 | init(); |
261 | } | 267 | } |
262 | 268 | ||
269 | |||
263 | OListViewItem::OListViewItem(QListViewItem *parent, QListViewItem *after, | 270 | OListViewItem::OListViewItem(QListViewItem *parent, QListViewItem *after, |
264 | QString label1, QString label2, QString label3, QString label4, | 271 | QString label1, QString label2, QString label3, QString label4, |
265 | QString label5, QString label6, QString label7, QString label8) | 272 | QString label5, QString label6, QString label7, QString label8) |
266 | : QListViewItem(parent, after, label1, label2, label3, label4, label5, label6, label7, label8) | 273 | : QListViewItem(parent, after, label1, label2, label3, label4, label5, label6, label7, label8) |
267 | { | 274 | { |
268 | init(); | 275 | init(); |
269 | } | 276 | } |
270 | 277 | ||
278 | |||
271 | OListViewItem::~OListViewItem() | 279 | OListViewItem::~OListViewItem() |
272 | { | 280 | { |
273 | } | 281 | } |
274 | 282 | ||
283 | |||
275 | void OListViewItem::init() | 284 | void OListViewItem::init() |
276 | { | 285 | { |
277 | m_known = false; | 286 | m_known = false; |
278 | } | 287 | } |
279 | 288 | ||
289 | |||
280 | const QColor &OListViewItem::backgroundColor() | 290 | const QColor &OListViewItem::backgroundColor() |
281 | { | 291 | { |
282 | return isAlternate() ? static_cast<OListView*>(listView())->alternateBackground() : | 292 | return isAlternate() ? static_cast<OListView*>(listView())->alternateBackground() : |
283 | listView()->viewport()->colorGroup().base(); | 293 | listView()->viewport()->colorGroup().base(); |
284 | } | 294 | } |
285 | 295 | ||
296 | |||
286 | bool OListViewItem::isAlternate() | 297 | bool OListViewItem::isAlternate() |
287 | { | 298 | { |
288 | OListView *lv = static_cast<OListView*>( listView() ); | 299 | OListView *lv = static_cast<OListView*>( listView() ); |
289 | 300 | ||
290 | // check if the item above is an OListViewItem | 301 | // check if the item above is an OListViewItem |
291 | OListViewItem *above = static_cast<OListViewItem*>( itemAbove() ); | 302 | OListViewItem *above = static_cast<OListViewItem*>( itemAbove() ); |
292 | /*if (! itemAbove()->inherits( "OListViewItem" )) return false;*/ | 303 | /*if (! itemAbove()->inherits( "OListViewItem" )) return false;*/ |
293 | 304 | ||
294 | // check if we have a valid alternate background color | 305 | // check if we have a valid alternate background color |
295 | if (!(lv && lv->alternateBackground().isValid())) return false; | 306 | if (!(lv && lv->alternateBackground().isValid())) return false; |
296 | 307 | ||
297 | m_known = above ? above->m_known : true; | 308 | m_known = above ? above->m_known : true; |
298 | if (m_known) | 309 | if (m_known) |
299 | { | 310 | { |
300 | m_odd = above ? !above->m_odd : false; | 311 | m_odd = above ? !above->m_odd : false; |
301 | } | 312 | } |
302 | else | 313 | else |
303 | { | 314 | { |
304 | OListViewItem *item; | 315 | OListViewItem *item; |
305 | bool previous = true; | 316 | bool previous = true; |
306 | if (parent()) | 317 | if (parent()) |
307 | { | 318 | { |
308 | item = static_cast<OListViewItem *>(parent()); | 319 | item = static_cast<OListViewItem *>(parent()); |
309 | if ( item /*&& item->inherits( "OListViewItem" )*/ ) previous = item->m_odd; | 320 | if ( item /*&& item->inherits( "OListViewItem" )*/ ) previous = item->m_odd; |
310 | item = static_cast<OListViewItem *>(parent()->firstChild()); | 321 | item = static_cast<OListViewItem *>(parent()->firstChild()); |
311 | /* if ( !item.inherits( "OListViewItem" ) item = 0; */ | 322 | /* if ( !item.inherits( "OListViewItem" ) item = 0; */ |
312 | } | 323 | } |
313 | else | 324 | else |
314 | { | 325 | { |
315 | item = static_cast<OListViewItem *>(lv->firstChild()); | 326 | item = static_cast<OListViewItem *>(lv->firstChild()); |
316 | } | 327 | } |
317 | 328 | ||
318 | while(item) | 329 | while(item) |
319 | { | 330 | { |
320 | item->m_odd = previous = !previous; | 331 | item->m_odd = previous = !previous; |
321 | item->m_known = true; | 332 | item->m_known = true; |
322 | item = static_cast<OListViewItem *>(item->nextSibling()); | 333 | item = static_cast<OListViewItem *>(item->nextSibling()); |
323 | /* if (!item.inherits( "OListViewItem" ) ) break; */ | 334 | /* if (!item.inherits( "OListViewItem" ) ) break; */ |
324 | } | 335 | } |
325 | } | 336 | } |
326 | return m_odd; | 337 | return m_odd; |
327 | } | 338 | } |
328 | 339 | ||
340 | |||
329 | void OListViewItem::paintCell(QPainter *p, const QColorGroup &cg, int column, int width, int alignment) | 341 | void OListViewItem::paintCell(QPainter *p, const QColorGroup &cg, int column, int width, int alignment) |
330 | { | 342 | { |
331 | QColorGroup _cg = cg; | 343 | QColorGroup _cg = cg; |
332 | const QPixmap *pm = listView()->viewport()->backgroundPixmap(); | 344 | const QPixmap *pm = listView()->viewport()->backgroundPixmap(); |
333 | if (pm && !pm->isNull()) | 345 | if (pm && !pm->isNull()) |
334 | { | 346 | { |
335 | _cg.setBrush( QColorGroup::Base, QBrush(backgroundColor(), *pm) ); | 347 | _cg.setBrush( QColorGroup::Base, QBrush(backgroundColor(), *pm) ); |
336 | p->setBrushOrigin( -listView()->contentsX(), -listView()->contentsY() ); | 348 | p->setBrushOrigin( -listView()->contentsX(), -listView()->contentsY() ); |
337 | } | 349 | } |
338 | else if ( isAlternate() ) | 350 | else if ( isAlternate() ) |
339 | { | 351 | { |
340 | _cg.setColor( QColorGroup::Base, static_cast<OListView*>( listView() )->alternateBackground() ); | 352 | _cg.setColor( QColorGroup::Base, static_cast<OListView*>( listView() )->alternateBackground() ); |
341 | } | 353 | } |
342 | QListViewItem::paintCell( p, _cg, column, width, alignment ); | 354 | QListViewItem::paintCell( p, _cg, column, width, alignment ); |
343 | 355 | ||
344 | //FIXME: Use styling here! | 356 | //FIXME: Use styling here! |
345 | 357 | ||
346 | const QPen& pen = static_cast<OListView*>( listView() )->columnSeparator(); | 358 | const QPen& pen = static_cast<OListView*>( listView() )->columnSeparator(); |
347 | p->setPen( pen ); | 359 | p->setPen( pen ); |
348 | p->drawLine( width-1, 0, width-1, height() ); | 360 | p->drawLine( width-1, 0, width-1, height() ); |
349 | } | 361 | } |
350 | 362 | ||
363 | |||
351 | OListViewItem* OListViewItem::childFactory() | 364 | OListViewItem* OListViewItem::childFactory() |
352 | { | 365 | { |
353 | return new OListViewItem( this ); | 366 | return new OListViewItem( this ); |
354 | } | 367 | } |
355 | 368 | ||
369 | |||
356 | #ifndef QT_NO_DATASTREAM | 370 | #ifndef QT_NO_DATASTREAM |
357 | void OListViewItem::serializeTo( QDataStream& s ) const | 371 | void OListViewItem::serializeTo( QDataStream& s ) const |
358 | { | 372 | { |
359 | #warning Caution... the binary format is still under construction... | 373 | #warning Caution... the binary format is still under construction... |
360 | qDebug( "storing OListViewItem..." ); | 374 | qDebug( "storing OListViewItem..." ); |
361 | 375 | ||
362 | // store item text | 376 | // store item text |
363 | for ( int i = 0; i < listView()->columns(); ++i ) | 377 | for ( int i = 0; i < listView()->columns(); ++i ) |
364 | { | 378 | { |
365 | s << text( i ); | 379 | s << text( i ); |
366 | } | 380 | } |
367 | 381 | ||
368 | // calculate the number of children to serialize | 382 | // calculate the number of children to serialize |
369 | int items = 0; | 383 | int items = 0; |
370 | QListViewItem* item = firstChild(); | 384 | QListViewItem* item = firstChild(); |
371 | while ( item ) | 385 | while ( item ) |
372 | { | 386 | { |
373 | item = item->nextSibling(); | 387 | item = item->nextSibling(); |
374 | items++; | 388 | items++; |
375 | } | 389 | } |
376 | 390 | ||
377 | // store number of items and the items itself | 391 | // store number of items and the items itself |
378 | s << items; | 392 | s << items; |
379 | item = firstChild(); | 393 | item = firstChild(); |
380 | for ( int i = 0; i < items; ++i ) | 394 | for ( int i = 0; i < items; ++i ) |
381 | { | 395 | { |
382 | s << *static_cast<OListViewItem*>( item ); | 396 | s << *static_cast<OListViewItem*>( item ); |
383 | item = item->nextSibling(); | 397 | item = item->nextSibling(); |
384 | } | 398 | } |
385 | 399 | ||
386 | qDebug( "OListviewItem stored." ); | 400 | qDebug( "OListviewItem stored." ); |
387 | } | 401 | } |
402 | |||
403 | |||
388 | void OListViewItem::serializeFrom( QDataStream& s ) | 404 | void OListViewItem::serializeFrom( QDataStream& s ) |
389 | { | 405 | { |
390 | #warning Caution... the binary format is still under construction... | 406 | #warning Caution... the binary format is still under construction... |
391 | qDebug( "loading OListViewItem..." ); | 407 | qDebug( "loading OListViewItem..." ); |
392 | 408 | ||
393 | for ( int i = 0; i < listView()->columns(); ++i ) | 409 | for ( int i = 0; i < listView()->columns(); ++i ) |
394 | { | 410 | { |
395 | QString coltext; | 411 | QString coltext; |
396 | s >> coltext; | 412 | s >> coltext; |
397 | qDebug( "read text '%s' for column %d", (const char*) coltext, i ); | 413 | qDebug( "read text '%s' for column %d", (const char*) coltext, i ); |
398 | setText( i, coltext ); | 414 | setText( i, coltext ); |
399 | } | 415 | } |
400 | 416 | ||
401 | int items; | 417 | int items; |
402 | s >> items; | 418 | s >> items; |
403 | qDebug( "read number of items = %d", items ); | 419 | qDebug( "read number of items = %d", items ); |
404 | 420 | ||
405 | for ( int i = 0; i < items; ++i ) | 421 | for ( int i = 0; i < items; ++i ) |
406 | { | 422 | { |
407 | OListViewItem* item = childFactory(); | 423 | OListViewItem* item = childFactory(); |
408 | s >> (*item); | 424 | s >> (*item); |
409 | } | 425 | } |
410 | 426 | ||
411 | qDebug( "OListViewItem loaded." ); | 427 | qDebug( "OListViewItem loaded." ); |
412 | } | 428 | } |
413 | 429 | ||
430 | |||
414 | QDataStream& operator<<( QDataStream& s, const OListViewItem& lvi ) | 431 | QDataStream& operator<<( QDataStream& s, const OListViewItem& lvi ) |
415 | { | 432 | { |
416 | lvi.serializeTo( s ); | 433 | lvi.serializeTo( s ); |
417 | } | 434 | } |
418 | 435 | ||
436 | |||
419 | QDataStream& operator>>( QDataStream& s, OListViewItem& lvi ) | 437 | QDataStream& operator>>( QDataStream& s, OListViewItem& lvi ) |
420 | { | 438 | { |
421 | lvi.serializeFrom( s ); | 439 | lvi.serializeFrom( s ); |
422 | } | 440 | } |
423 | #endif // QT_NO_DATASTREAM | 441 | #endif // QT_NO_DATASTREAM |
442 | |||
443 | |||
444 | /*====================================================================================== | ||
445 | * ONamedListView | ||
446 | *======================================================================================*/ | ||
447 | |||
448 | ONamedListView::ONamedListView( QWidget *parent, const char *name ) | ||
449 | :OListView( parent, name ) | ||
450 | { | ||
451 | } | ||
452 | |||
453 | |||
454 | ONamedListView::~ONamedListView() | ||
455 | { | ||
456 | } | ||
457 | |||
458 | |||
459 | void ONamedListView::addColumns( const QStringList& columns ) | ||
460 | { | ||
461 | for ( QStringList::ConstIterator it = columns.begin(); it != columns.end(); ++it ) | ||
462 | { | ||
463 | qDebug( "adding column %s", (const char*) *it ); | ||
464 | addColumn( *it ); | ||
465 | } | ||
466 | } | ||
467 | |||
468 | |||
469 | /*====================================================================================== | ||
470 | * ONamedListViewItem | ||
471 | *======================================================================================*/ | ||
472 | |||
473 | ONamedListViewItem::ONamedListViewItem( QListView* parent, const QStringList& texts ) | ||
474 | :OListViewItem( parent ) | ||
475 | { | ||
476 | setText( texts ); | ||
477 | } | ||
478 | |||
479 | |||
480 | ONamedListViewItem::ONamedListViewItem( QListViewItem* parent, const QStringList& texts ) | ||
481 | :OListViewItem( parent ) | ||
482 | { | ||
483 | setText( texts ); | ||
484 | } | ||
485 | |||
486 | |||
487 | ONamedListViewItem::ONamedListViewItem( QListView* parent, QListViewItem* after, const QStringList& texts ) | ||
488 | :OListViewItem( parent, after ) | ||
489 | { | ||
490 | setText( texts ); | ||
491 | } | ||
492 | |||
493 | |||
494 | ONamedListViewItem::ONamedListViewItem( QListViewItem* parent, QListViewItem* after, const QStringList& texts ) | ||
495 | :OListViewItem( parent, after ) | ||
496 | { | ||
497 | setText( texts ); | ||
498 | } | ||
499 | |||
500 | |||
501 | ONamedListViewItem::~ONamedListViewItem() | ||
502 | { | ||
503 | } | ||
504 | |||
505 | |||
506 | void ONamedListViewItem::setText( const QStringList& texts ) | ||
507 | { | ||
508 | int col = 0; | ||
509 | for ( QStringList::ConstIterator it = texts.begin(); it != texts.end(); ++it ) | ||
510 | { | ||
511 | qDebug( "setting column %d = text %s", col, (const char*) *it ); | ||
512 | OListViewItem::setText( col++, *it ); | ||
513 | } | ||
514 | |||
515 | } | ||
516 | |||
517 | |||
518 | void ONamedListViewItem::setText( const QString& column, const QString& text ) | ||
519 | { | ||
520 | //FIXME: If used excessively, this will slow down performance of updates | ||
521 | //FIXME: because of the linear search over all column texts. | ||
522 | //FIXME: I will optimize later by using a hash map. | ||
523 | for ( int i = 0; i < listView()->columns(); ++i ) | ||
524 | { | ||
525 | if ( listView()->columnText( i ) == column ) | ||
526 | { | ||
527 | OListViewItem::setText( i, text ); | ||
528 | return; | ||
529 | } | ||
530 | } | ||
531 | qWarning( "ONamedListViewItem::setText(): Warning! Columntext '%s' not found.", (const char*) column ); | ||
532 | } | ||
diff --git a/libopie2/opieui/olistview.h b/libopie2/opieui/olistview.h index b62e278..99770bf 100644 --- a/libopie2/opieui/olistview.h +++ b/libopie2/opieui/olistview.h | |||
@@ -1,235 +1,310 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
3 | 3 | ||
4 | =. (C) 2003 Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> | 4 | =. (C) 2003 Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> |
5 | .=l. | 5 | .=l. |
6 | .>+-= | 6 | .>+-= |
7 | _;:, .> :=|. This program is free software; you can | 7 | _;:, .> :=|. This program is free software; you can |
8 | .> <`_, > . <= redistribute it and/or modify it under | 8 | .> <`_, > . <= redistribute it and/or modify it under |
9 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 9 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
10 | .="- .-=="i, .._ License as published by the Free Software | 10 | .="- .-=="i, .._ License as published by the Free Software |
11 | - . .-<_> .<> Foundation; either version 2 of the License, | 11 | - . .-<_> .<> Foundation; either version 2 of the License, |
12 | ._= =} : or (at your option) any later version. | 12 | ._= =} : or (at your option) any later version. |
13 | .%`+i> _;_. | 13 | .%`+i> _;_. |
14 | .i_,=:_. -<s. This program is distributed in the hope that | 14 | .i_,=:_. -<s. This program is distributed in the hope that |
15 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 15 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
16 | : .. .:, . . . without even the implied warranty of | 16 | : .. .:, . . . without even the implied warranty of |
17 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 17 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
18 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 18 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
19 | ..}^=.= = ; Library General Public License for more | 19 | ..}^=.= = ; Library General Public License for more |
20 | ++= -. .` .: details. | 20 | ++= -. .` .: details. |
21 | : = ...= . :.=- | 21 | : = ...= . :.=- |
22 | -. .:....=;==+<; You should have received a copy of the GNU | 22 | -. .:....=;==+<; You should have received a copy of the GNU |
23 | -_. . . )=. = Library General Public License along with | 23 | -_. . . )=. = Library General Public License along with |
24 | -- :-=` this library; see the file COPYING.LIB. | 24 | -- :-=` this library; see the file COPYING.LIB. |
25 | If not, write to the Free Software Foundation, | 25 | If not, write to the Free Software Foundation, |
26 | Inc., 59 Temple Place - Suite 330, | 26 | Inc., 59 Temple Place - Suite 330, |
27 | Boston, MA 02111-1307, USA. | 27 | Boston, MA 02111-1307, USA. |
28 | 28 | ||
29 | */ | 29 | */ |
30 | 30 | ||
31 | #ifndef OLISTVIEW_H | 31 | #ifndef OLISTVIEW_H |
32 | #define OLISTVIEW_H | 32 | #define OLISTVIEW_H |
33 | 33 | ||
34 | #include <qcolor.h> | 34 | #include <qcolor.h> |
35 | #include <qlistview.h> | 35 | #include <qlistview.h> |
36 | #include <qpen.h> | 36 | #include <qpen.h> |
37 | #include <qdatastream.h> | 37 | #include <qdatastream.h> |
38 | 38 | ||
39 | class OListViewItem; | 39 | class OListViewItem; |
40 | 40 | ||
41 | /*====================================================================================== | ||
42 | * OListView | ||
43 | *======================================================================================*/ | ||
44 | |||
41 | /** | 45 | /** |
46 | * @brief A list/tree widget. | ||
47 | * | ||
42 | * A @ref QListView variant featuring visual and functional enhancements | 48 | * A @ref QListView variant featuring visual and functional enhancements |
43 | * like an alternate background for odd rows, an autostretch mode | 49 | * like an alternate background for odd rows, an autostretch mode |
44 | * for the width of the widget ( >= Qt 3 only ) and persistence capabilities. | 50 | * for the width of the widget ( >= Qt 3 only ) and persistence capabilities. |
45 | * | 51 | * |
46 | * @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> | 52 | * @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> |
47 | * @short OListView list/tree widget. | ||
48 | */ | 53 | */ |
49 | class OListView: public QListView | 54 | class OListView: public QListView |
50 | { | 55 | { |
51 | public: | 56 | public: |
52 | /** | 57 | /** |
53 | * Constructor. | 58 | * Constructor. |
54 | * | 59 | * |
55 | * The parameters @p parent and @p name are handled by | 60 | * The parameters @a parent and @a name are handled by |
56 | * @ref QListView, as usual. | 61 | * @ref QListView, as usual. |
57 | */ | 62 | */ |
58 | OListView ( QWidget *parent = 0, const char *name = 0 ); | 63 | OListView( QWidget* parent = 0, const char* name = 0 ); |
59 | |||
60 | /** | 64 | /** |
61 | * Destructor. | 65 | * Destructor. |
62 | */ | 66 | */ |
63 | virtual ~OListView(); | 67 | virtual ~OListView(); |
64 | |||
65 | /** | 68 | /** |
66 | * Let the last column fit exactly all the available width. | 69 | * Let the last column fit exactly all the available width. |
67 | */ | 70 | */ |
68 | void setFullWidth( bool fullWidth ); | 71 | void setFullWidth( bool fullWidth ); |
69 | |||
70 | /** | 72 | /** |
71 | * Returns whether the last column is set to fit the available width. | 73 | * Returns whether the last column is set to fit the available width. |
72 | */ | 74 | */ |
73 | bool fullWidth() const; | 75 | bool fullWidth() const; |
74 | |||
75 | /** | 76 | /** |
76 | * Reimplemented for full width support | 77 | * Reimplemented for full width support |
77 | */ | 78 | */ |
78 | virtual int addColumn( const QString& label, int width = -1 ); | 79 | virtual int addColumn( const QString& label, int width = -1 ); |
79 | |||
80 | /** | 80 | /** |
81 | * Reimplemented for full width support | 81 | * Reimplemented for full width support |
82 | */ | 82 | */ |
83 | virtual int addColumn( const QIconSet& iconset, const QString& label, int width = -1 ); | 83 | virtual int addColumn( const QIconSet& iconset, const QString& label, int width = -1 ); |
84 | |||
85 | /** | 84 | /** |
86 | * Reimplemented for full width support | 85 | * Reimplemented for full width support |
87 | */ | 86 | */ |
88 | virtual void removeColumn(int index); | 87 | virtual void removeColumn(int index); |
89 | |||
90 | /** | 88 | /** |
91 | * sets the alternate background background color. | 89 | * Set the alternate background background @a color. |
90 | * Set to an invalid color to disable alternate colors. | ||
92 | * This only has an effect if the items are OListViewItems | 91 | * This only has an effect if the items are OListViewItems |
93 | * | ||
94 | * @param c the color to use for every other item. Set to an invalid | ||
95 | * color to disable alternate colors. | ||
96 | */ | 92 | */ |
97 | void setAlternateBackground( const QColor &c ); | 93 | void setAlternateBackground( const QColor& color ); |
98 | |||
99 | /** | 94 | /** |
100 | * sets the column separator pen. | 95 | * Sets the column separator @a pen. |
101 | * | ||
102 | * @param p the pen used to draw the column separator. | ||
103 | */ | 96 | */ |
104 | void setColumnSeparator( const QPen &p ); | 97 | void setColumnSeparator( const QPen& pen ); |
105 | 98 | ||
106 | /** | 99 | /** |
107 | * @return the alternate background color | 100 | * @returns the alternate background color |
108 | */ | 101 | */ |
109 | const QColor& alternateBackground() const; | 102 | const QColor& alternateBackground() const; |
110 | |||
111 | /** | 103 | /** |
112 | * @return the column separator pen | 104 | * @return the column separator pen |
113 | */ | 105 | */ |
114 | const QPen& columnSeparator() const; | 106 | const QPen& columnSeparator() const; |
115 | |||
116 | /** | 107 | /** |
117 | * create a list view item as child of this object | 108 | * Create a list view item as child of this object |
118 | * @return the new object | 109 | * @returns the new object |
119 | */ | 110 | */ |
120 | virtual OListViewItem* childFactory(); | 111 | virtual OListViewItem* childFactory(); |
121 | |||
122 | #ifndef QT_NO_DATASTREAM | 112 | #ifndef QT_NO_DATASTREAM |
123 | /** | 113 | /** |
124 | * serialize this object to a @ref QDataStream | 114 | * Serialize this object to @ref QDataStream @a stream |
125 | * @param s the stream used to serialize this object. | ||
126 | */ | 115 | */ |
127 | virtual void serializeTo( QDataStream& s ) const; | 116 | virtual void serializeTo( QDataStream& stream ) const; |
128 | |||
129 | /** | 117 | /** |
130 | * serialize this object from a @ref QDataStream | 118 | * Serialize this object from a @ref QDataStream @a stream |
131 | * @param s the stream used to serialize this object. | ||
132 | */ | 119 | */ |
133 | virtual void serializeFrom( QDataStream& s ); | 120 | virtual void serializeFrom( QDataStream& s ); |
134 | #endif | 121 | #endif |
135 | 122 | ||
136 | private: | 123 | private: |
137 | QColor m_alternateBackground; | 124 | QColor m_alternateBackground; |
138 | bool m_fullWidth; | 125 | bool m_fullWidth; |
139 | QPen m_columnSeparator; | 126 | QPen m_columnSeparator; |
140 | }; | 127 | }; |
141 | 128 | ||
142 | #ifndef QT_NO_DATASTREAM | 129 | #ifndef QT_NO_DATASTREAM |
143 | /** | 130 | /** |
144 | * \relates QListView | 131 | * @relates OListView |
145 | * Writes a listview to the stream and returns a reference to the stream. | 132 | * Writes @a listview to the @a stream and returns a reference to the stream. |
146 | */ | 133 | */ |
147 | QDataStream& operator<<( QDataStream& s, const OListView& lv ); | 134 | QDataStream& operator<<( QDataStream& stream, const OListView& listview ); |
148 | /** | 135 | /** |
149 | * \relates QListView | 136 | * @relates OListView |
150 | * Reads a listview from the stream and returns a reference to the stream. | 137 | * Reads @a listview from the @a stream and returns a reference to the stream. |
151 | */ | 138 | */ |
152 | QDataStream& operator>>( QDataStream& s, OListView& lv ); | 139 | QDataStream& operator>>( QDataStream& stream, OListView& listview ); |
153 | #endif // QT_NO_DATASTREAM | 140 | #endif // QT_NO_DATASTREAM |
154 | 141 | ||
155 | //****************************** OListViewItem ****************************************************************** | 142 | /*====================================================================================== |
143 | * OListViewItem | ||
144 | *======================================================================================*/ | ||
156 | 145 | ||
157 | class OListViewItem: public QListViewItem | 146 | class OListViewItem: public QListViewItem |
158 | { | 147 | { |
159 | public: | 148 | public: |
149 | /** | ||
150 | * Constructors. | ||
151 | */ | ||
160 | OListViewItem( QListView * parent ); | 152 | OListViewItem( QListView * parent ); |
161 | OListViewItem( QListViewItem * parent ); | 153 | OListViewItem( QListViewItem * parent ); |
162 | OListViewItem( QListView * parent, QListViewItem * after ); | 154 | OListViewItem( QListView * parent, QListViewItem * after ); |
163 | OListViewItem( QListViewItem * parent, QListViewItem * after ); | 155 | OListViewItem( QListViewItem * parent, QListViewItem * after ); |
164 | 156 | ||
165 | OListViewItem( QListView * parent, | 157 | OListViewItem( QListView * parent, |
166 | QString, QString = QString::null, | 158 | QString, QString = QString::null, |
167 | QString = QString::null, QString = QString::null, | 159 | QString = QString::null, QString = QString::null, |
168 | QString = QString::null, QString = QString::null, | 160 | QString = QString::null, QString = QString::null, |
169 | QString = QString::null, QString = QString::null ); | 161 | QString = QString::null, QString = QString::null ); |
170 | 162 | ||
171 | OListViewItem( QListViewItem * parent, | 163 | OListViewItem( QListViewItem * parent, |
172 | QString, QString = QString::null, | 164 | QString, QString = QString::null, |
173 | QString = QString::null, QString = QString::null, | 165 | QString = QString::null, QString = QString::null, |
174 | QString = QString::null, QString = QString::null, | 166 | QString = QString::null, QString = QString::null, |
175 | QString = QString::null, QString = QString::null ); | 167 | QString = QString::null, QString = QString::null ); |
176 | 168 | ||
177 | OListViewItem( QListView * parent, QListViewItem * after, | 169 | OListViewItem( QListView * parent, QListViewItem * after, |
178 | QString, QString = QString::null, | 170 | QString, QString = QString::null, |
179 | QString = QString::null, QString = QString::null, | 171 | QString = QString::null, QString = QString::null, |
180 | QString = QString::null, QString = QString::null, | 172 | QString = QString::null, QString = QString::null, |
181 | QString = QString::null, QString = QString::null ); | 173 | QString = QString::null, QString = QString::null ); |
182 | 174 | ||
183 | OListViewItem( QListViewItem * parent, QListViewItem * after, | 175 | OListViewItem( QListViewItem * parent, QListViewItem * after, |
184 | QString, QString = QString::null, | 176 | QString, QString = QString::null, |
185 | QString = QString::null, QString = QString::null, | 177 | QString = QString::null, QString = QString::null, |
186 | QString = QString::null, QString = QString::null, | 178 | QString = QString::null, QString = QString::null, |
187 | QString = QString::null, QString = QString::null ); | 179 | QString = QString::null, QString = QString::null ); |
188 | 180 | /** | |
181 | * Destructor. | ||
182 | */ | ||
189 | virtual ~OListViewItem(); | 183 | virtual ~OListViewItem(); |
190 | 184 | /** | |
185 | * @returns the background color of the list item. | ||
186 | */ | ||
191 | const QColor& backgroundColor(); | 187 | const QColor& backgroundColor(); |
188 | /** | ||
189 | * @returns true, if the item is at an odd position and | ||
190 | * thus have to be painted with the alternate background color. | ||
191 | */ | ||
192 | bool isAlternate(); | 192 | bool isAlternate(); |
193 | /** | ||
194 | * @note: Reimplemented for internal purposes - the API is not affected | ||
195 | * | ||
196 | */ | ||
193 | void paintCell( QPainter *p, const QColorGroup &cg, int column, int width, int alignment ); | 197 | void paintCell( QPainter *p, const QColorGroup &cg, int column, int width, int alignment ); |
198 | /** | ||
199 | * Perform object initialization. | ||
200 | */ | ||
194 | void init(); | 201 | void init(); |
195 | |||
196 | /** | 202 | /** |
197 | * create a list view item as child of this object | 203 | * create a list view item as child of this object |
198 | * @return the new object | 204 | * @returns the new object |
199 | */ | 205 | */ |
200 | virtual OListViewItem* childFactory(); | 206 | virtual OListViewItem* childFactory(); |
201 | |||
202 | #ifndef QT_NO_DATASTREAM | 207 | #ifndef QT_NO_DATASTREAM |
203 | /** | 208 | /** |
204 | * serialize this object to or from a @ref QDataStream | 209 | * serialize this object to or from a @ref QDataStream |
205 | * @param s the stream used to serialize this object. | 210 | * @param s the stream used to serialize this object. |
206 | */ | 211 | */ |
207 | virtual void serializeTo( QDataStream& s ) const; | 212 | virtual void serializeTo( QDataStream& s ) const; |
208 | 213 | ||
209 | /** | 214 | /** |
210 | * serialize this object to or from a @ref QDataStream | 215 | * serialize this object to or from a @ref QDataStream |
211 | * @param s the stream used to serialize this object. | 216 | * @param s the stream used to serialize this object. |
212 | */ | 217 | */ |
213 | virtual void serializeFrom( QDataStream& s ); | 218 | virtual void serializeFrom( QDataStream& s ); |
214 | #endif | 219 | #endif |
215 | 220 | ||
216 | private: | 221 | private: |
217 | bool m_known; | 222 | bool m_known; |
218 | bool m_odd; | 223 | bool m_odd; |
219 | }; | 224 | }; |
220 | 225 | ||
221 | #ifndef QT_NO_DATASTREAM | 226 | #ifndef QT_NO_DATASTREAM |
222 | /** | 227 | /** |
223 | * \relates QListViewItem | 228 | * @relates QListViewItem |
224 | * Writes a listview item and all subitems recursively to the stream | 229 | * Writes listview @a item and all subitems recursively to @a stream |
225 | * and returns a reference to the stream. | 230 | * and returns a reference to the stream. |
226 | */ | 231 | */ |
227 | QDataStream& operator<<( QDataStream &s, const OListViewItem& lvi ); | 232 | QDataStream& operator<<( QDataStream& stream, const OListViewItem& item ); |
228 | /** | 233 | /** |
229 | * \relates QListViewItem | 234 | * @relates QListViewItem |
230 | * Reads a listview item from the stream and returns a reference to the stream. | 235 | * Reads listview @a item from @a stream and returns a reference to the stream. |
231 | */ | 236 | */ |
232 | QDataStream& operator>>( QDataStream &s, OListViewItem& lvi ); | 237 | QDataStream& operator>>( QDataStream& stream, OListViewItem& item ); |
233 | #endif // QT_NO_DATASTREAM | 238 | #endif // QT_NO_DATASTREAM |
234 | 239 | ||
240 | /*====================================================================================== | ||
241 | * ONamedListView | ||
242 | *======================================================================================*/ | ||
243 | |||
244 | /** | ||
245 | * @brief An OListView variant with named columns. | ||
246 | * | ||
247 | * This class provides a higher-level interface to the columns in an OListView. | ||
248 | * | ||
249 | * @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> | ||
250 | */ | ||
251 | class ONamedListView: public OListView | ||
252 | { | ||
253 | public: | ||
254 | /** | ||
255 | * Constructor. | ||
256 | * | ||
257 | * The parameters @a parent and @a name are handled by | ||
258 | * @ref OListView, as usual. | ||
259 | */ | ||
260 | ONamedListView( QWidget* parent = 0, const char* name = 0 ); | ||
261 | /** | ||
262 | * Destructor. | ||
263 | */ | ||
264 | virtual ~ONamedListView(); | ||
265 | /** | ||
266 | * Add a number of @a columns to the listview. | ||
267 | */ | ||
268 | virtual void addColumns( const QStringList& columns ); | ||
269 | }; | ||
270 | |||
271 | /*====================================================================================== | ||
272 | * ONamedListViewItem | ||
273 | *======================================================================================*/ | ||
274 | |||
275 | /** | ||
276 | * @brief An OListView variant with named columns. | ||
277 | * | ||
278 | * This class provides a higher-level interface to the columns in an OListViewItem. | ||
279 | * | ||
280 | * @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> | ||
281 | */ | ||
282 | class ONamedListViewItem: public OListViewItem | ||
283 | { | ||
284 | public: | ||
285 | /** | ||
286 | * Constructor. Accepts the same parameters as a @ref OListViewItem, | ||
287 | * plus a @ref QStringList which holds an arbitrary number of @a texts. | ||
288 | */ | ||
289 | ONamedListViewItem( QListView* parent, const QStringList& texts ); | ||
290 | ONamedListViewItem( QListViewItem* parent, const QStringList& texts ); | ||
291 | ONamedListViewItem( QListView* parent, QListViewItem* after, const QStringList& texts ); | ||
292 | ONamedListViewItem( QListViewItem* parent, QListViewItem* after, const QStringList& texts ); | ||
293 | /** | ||
294 | * Destructor. | ||
295 | */ | ||
296 | virtual ~ONamedListViewItem(); | ||
297 | /** | ||
298 | * Sets the text in column @a column to @a text. | ||
299 | * This method differs from @ref QListViewItem::setText() in that it | ||
300 | * accepts a string as column indicator instead of an int. | ||
301 | */ | ||
302 | virtual void setText( const QString& column, const QString& text ); | ||
303 | /** | ||
304 | * Sets a number of @a texts for this item. | ||
305 | */ | ||
306 | virtual void setText( const QStringList& texts ); | ||
307 | }; | ||
308 | |||
309 | |||
235 | #endif // OLISTVIEW_H | 310 | #endif // OLISTVIEW_H |