-rw-r--r-- | libopie2/opieui/oseparator.cpp | 2 | ||||
-rw-r--r-- | libopie2/qt3/opieui/oeditlistbox.h | 2 | ||||
-rw-r--r-- | libopie2/qt3/opieui/ojanuswidget.cpp | 2 |
3 files changed, 3 insertions, 3 deletions
diff --git a/libopie2/opieui/oseparator.cpp b/libopie2/opieui/oseparator.cpp index bbc4381..177368b 100644 --- a/libopie2/opieui/oseparator.cpp +++ b/libopie2/opieui/oseparator.cpp | |||
@@ -1,129 +1,129 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
3 | Copyright (C) 2003 Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> | 3 | Copyright (C) 2003 Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> |
4 | Copyright (C) 1997 Michael Roth <mroth@wirlweb.de> | 4 | Copyright (C) 1997 Michael Roth <mroth@wirlweb.de> |
5 | =. | 5 | =. |
6 | .=l. | 6 | .=l. |
7 | .>+-= | 7 | .>+-= |
8 | _;:, .> :=|. This program is free software; you can | 8 | _;:, .> :=|. This program is free software; you can |
9 | .> <`_, > . <= redistribute it and/or modify it under | 9 | .> <`_, > . <= redistribute it and/or modify it under |
10 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 10 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
11 | .="- .-=="i, .._ License as published by the Free Software | 11 | .="- .-=="i, .._ License as published by the Free Software |
12 | - . .-<_> .<> Foundation; either version 2 of the License, | 12 | - . .-<_> .<> Foundation; either version 2 of the License, |
13 | ._= =} : or (at your option) any later version. | 13 | ._= =} : or (at your option) any later version. |
14 | .%`+i> _;_. | 14 | .%`+i> _;_. |
15 | .i_,=:_. -<s. This program is distributed in the hope that | 15 | .i_,=:_. -<s. This program is distributed in the hope that |
16 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 16 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
17 | : .. .:, . . . without even the implied warranty of | 17 | : .. .:, . . . without even the implied warranty of |
18 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 18 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
19 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 19 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
20 | ..}^=.= = ; Library General Public License for more | 20 | ..}^=.= = ; Library General Public License for more |
21 | ++= -. .` .: details. | 21 | ++= -. .` .: details. |
22 | : = ...= . :.=- | 22 | : = ...= . :.=- |
23 | -. .:....=;==+<; You should have received a copy of the GNU | 23 | -. .:....=;==+<; You should have received a copy of the GNU |
24 | -_. . . )=. = Library General Public License along with | 24 | -_. . . )=. = Library General Public License along with |
25 | -- :-=` this library; see the file COPYING.LIB. | 25 | -- :-=` this library; see the file COPYING.LIB. |
26 | If not, write to the Free Software Foundation, | 26 | If not, write to the Free Software Foundation, |
27 | Inc., 59 Temple Place - Suite 330, | 27 | Inc., 59 Temple Place - Suite 330, |
28 | Boston, MA 02111-1307, USA. | 28 | Boston, MA 02111-1307, USA. |
29 | 29 | ||
30 | */ | 30 | */ |
31 | 31 | ||
32 | /* OPIE */ | 32 | /* OPIE */ |
33 | 33 | ||
34 | #include <opie2/odebug.h> | 34 | #include <opie2/odebug.h> |
35 | #include <opie2/oseparator.h> | 35 | #include <opie2/oseparator.h> |
36 | 36 | ||
37 | /* QT */ | 37 | /* QT */ |
38 | 38 | ||
39 | using namespace Opie::Core; | 39 | using namespace Opie::Core; |
40 | using namespace Opie::Ui; | 40 | using namespace Opie::Ui; |
41 | 41 | ||
42 | OSeparator::OSeparator(QWidget* parent, const char* name, WFlags f) | 42 | OSeparator::OSeparator(QWidget* parent, const char* name, WFlags f) |
43 | : QFrame(parent, name, f) | 43 | : QFrame(parent, name, f) |
44 | { | 44 | { |
45 | setLineWidth(1); | 45 | setLineWidth(1); |
46 | setMidLineWidth(0); | 46 | setMidLineWidth(0); |
47 | setOrientation( HLine ); | 47 | setOrientation( HLine ); |
48 | } | 48 | } |
49 | 49 | ||
50 | 50 | ||
51 | 51 | ||
52 | OSeparator::OSeparator(int orientation, QWidget* parent, const char* name, WFlags f) | 52 | OSeparator::OSeparator(int orientation, QWidget* parent, const char* name, WFlags f) |
53 | : QFrame(parent, name, f) | 53 | : QFrame(parent, name, f) |
54 | { | 54 | { |
55 | setLineWidth(1); | 55 | setLineWidth(1); |
56 | setMidLineWidth(0); | 56 | setMidLineWidth(0); |
57 | setOrientation( orientation ); | 57 | setOrientation( orientation ); |
58 | } | 58 | } |
59 | 59 | ||
60 | 60 | ||
61 | 61 | ||
62 | void OSeparator::setOrientation(int orientation) | 62 | void OSeparator::setOrientation(int orientation) |
63 | { | 63 | { |
64 | switch(orientation) | 64 | switch(orientation) |
65 | { | 65 | { |
66 | case Vertical: | 66 | case Vertical: |
67 | case VLine: | 67 | case VLine: |
68 | setFrameStyle( QFrame::VLine | QFrame::Sunken ); | 68 | setFrameStyle( QFrame::VLine | QFrame::Sunken ); |
69 | setMinimumSize(2, 0); | 69 | setMinimumSize(2, 0); |
70 | break; | 70 | break; |
71 | 71 | ||
72 | default: | 72 | default: |
73 | owarn << "OSeparator::setOrientation(): invalid orientation, using default orientation HLine" << oendl; | 73 | owarn << "OSeparator::setOrientation(): invalid orientation, using default orientation HLine" << oendl; |
74 | 74 | ||
75 | case Horizontal: | 75 | case Horizontal: |
76 | case HLine: | 76 | case HLine: |
77 | setFrameStyle( QFrame::HLine | QFrame::Sunken ); | 77 | setFrameStyle( QFrame::HLine | QFrame::Sunken ); |
78 | setMinimumSize(0, 2); | 78 | setMinimumSize(0, 2); |
79 | break; | 79 | break; |
80 | } | 80 | } |
81 | } | 81 | } |
82 | 82 | ||
83 | 83 | ||
84 | 84 | ||
85 | int OSeparator::orientation() const | 85 | int OSeparator::orientation() const |
86 | { | 86 | { |
87 | if ( frameStyle() & VLine ) | 87 | if ( frameStyle() & VLine ) |
88 | return VLine; | 88 | return VLine; |
89 | 89 | ||
90 | if ( frameStyle() & HLine ) | 90 | if ( frameStyle() & HLine ) |
91 | return HLine; | 91 | return HLine; |
92 | 92 | ||
93 | return 0; | 93 | return 0; |
94 | } | 94 | } |
95 | 95 | ||
96 | void OSeparator::drawFrame(QPainter *p) | 96 | void OSeparator::drawFrame(QPainter *p) |
97 | { | 97 | { |
98 | QPointp1, p2; | 98 | QPointp1, p2; |
99 | QRectr = frameRect(); | 99 | QRectr = frameRect(); |
100 | const QColorGroup & g = colorGroup(); | 100 | const QColorGroup & g = colorGroup(); |
101 | 101 | ||
102 | if ( frameStyle() & HLine ) { | 102 | if ( frameStyle() & HLine ) { |
103 | p1 = QPoint( r.x(), r.height()/2 ); | 103 | p1 = QPoint( r.x(), r.height()/2 ); |
104 | p2 = QPoint( r.x()+r.width(), p1.y() ); | 104 | p2 = QPoint( r.x()+r.width(), p1.y() ); |
105 | } | 105 | } |
106 | else { | 106 | else { |
107 | p1 = QPoint( r.x()+r.width()/2, 0 ); | 107 | p1 = QPoint( r.x()+r.width()/2, 0 ); |
108 | p2 = QPoint( p1.x(), r.height() ); | 108 | p2 = QPoint( p1.x(), r.height() ); |
109 | } | 109 | } |
110 | 110 | ||
111 | #if QT_VERSION < 300 | 111 | #if QT_VERSION < 0x030000 |
112 | style().drawSeparator( p, p1.x(), p1.y(), p2.x(), p2.y(), g, true, 1, midLineWidth() ); | 112 | style().drawSeparator( p, p1.x(), p1.y(), p2.x(), p2.y(), g, true, 1, midLineWidth() ); |
113 | #else | 113 | #else |
114 | QStyleOption opt( lineWidth(), midLineWidth() ); | 114 | QStyleOption opt( lineWidth(), midLineWidth() ); |
115 | style().drawPrimitive( QStyle::PE_Separator, p, QRect( p1, p2 ), g, QStyle::Style_Sunken, opt ); | 115 | style().drawPrimitive( QStyle::PE_Separator, p, QRect( p1, p2 ), g, QStyle::Style_Sunken, opt ); |
116 | #endif | 116 | #endif |
117 | } | 117 | } |
118 | 118 | ||
119 | 119 | ||
120 | QSize OSeparator::sizeHint() const | 120 | QSize OSeparator::sizeHint() const |
121 | { | 121 | { |
122 | if ( frameStyle() & VLine ) | 122 | if ( frameStyle() & VLine ) |
123 | return QSize(2, 0); | 123 | return QSize(2, 0); |
124 | 124 | ||
125 | if ( frameStyle() & HLine ) | 125 | if ( frameStyle() & HLine ) |
126 | return QSize(0, 2); | 126 | return QSize(0, 2); |
127 | 127 | ||
128 | return QSize(-1, -1); | 128 | return QSize(-1, -1); |
129 | } | 129 | } |
diff --git a/libopie2/qt3/opieui/oeditlistbox.h b/libopie2/qt3/opieui/oeditlistbox.h index 63fab11..c9c207d 100644 --- a/libopie2/qt3/opieui/oeditlistbox.h +++ b/libopie2/qt3/opieui/oeditlistbox.h | |||
@@ -1,250 +1,250 @@ | |||
1 | /* This file is part of the KDE libraries | 1 | /* This file is part of the KDE libraries |
2 | Copyright (C) 2000 David Faure <faure@kde.org>, Alexander Neundorf <neundorf@kde.org> | 2 | Copyright (C) 2000 David Faure <faure@kde.org>, Alexander Neundorf <neundorf@kde.org> |
3 | 3 | ||
4 | This library is free software; you can redistribute it and/or | 4 | This library is free software; you can redistribute it and/or |
5 | modify it under the terms of the GNU Library General Public | 5 | modify it under the terms of the GNU Library General Public |
6 | License as published by the Free Software Foundation; either | 6 | License as published by the Free Software Foundation; either |
7 | version 2 of the License, or (at your option) any later version. | 7 | version 2 of the License, or (at your option) any later version. |
8 | 8 | ||
9 | This library is distributed in the hope that it will be useful, | 9 | This library is distributed in the hope that it will be useful, |
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
12 | Library General Public License for more details. | 12 | Library General Public License for more details. |
13 | 13 | ||
14 | You should have received a copy of the GNU Library General Public License | 14 | You should have received a copy of the GNU Library General Public License |
15 | along with this library; see the file COPYING.LIB. If not, write to | 15 | along with this library; see the file COPYING.LIB. If not, write to |
16 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 16 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
17 | Boston, MA 02111-1307, USA. | 17 | Boston, MA 02111-1307, USA. |
18 | */ | 18 | */ |
19 | 19 | ||
20 | #ifndef OEDITLISTBOX_H | 20 | #ifndef OEDITLISTBOX_H |
21 | #define OEDITLISTBOX_H | 21 | #define OEDITLISTBOX_H |
22 | 22 | ||
23 | #include <qgroupbox.h> | 23 | #include <qgroupbox.h> |
24 | #include <qlistbox.h> | 24 | #include <qlistbox.h> |
25 | 25 | ||
26 | class OLineEdit; | 26 | class OLineEdit; |
27 | class OComboBox; | 27 | class OComboBox; |
28 | class QPushButton; | 28 | class QPushButton; |
29 | 29 | ||
30 | #if QT_VERSION < 300 | 30 | #if QT_VERSION < 0x030000 |
31 | enum StringComparisonMode { | 31 | enum StringComparisonMode { |
32 | CaseSensitive = 0x00001, // 0 0001 | 32 | CaseSensitive = 0x00001, // 0 0001 |
33 | BeginsWith = 0x00002, // 0 0010 | 33 | BeginsWith = 0x00002, // 0 0010 |
34 | EndsWith = 0x00004, // 0 0100 | 34 | EndsWith = 0x00004, // 0 0100 |
35 | Contains = 0x00008, // 0 1000 | 35 | Contains = 0x00008, // 0 1000 |
36 | ExactMatch = 0x00010 // 1 0000 | 36 | ExactMatch = 0x00010 // 1 0000 |
37 | }; | 37 | }; |
38 | #endif | 38 | #endif |
39 | 39 | ||
40 | class OEditListBoxPrivate; | 40 | class OEditListBoxPrivate; |
41 | /** | 41 | /** |
42 | * An editable listbox | 42 | * An editable listbox |
43 | * | 43 | * |
44 | * This class provides a editable listbox ;-), this means | 44 | * This class provides a editable listbox ;-), this means |
45 | * a listbox which is accompanied by a line edit to enter new | 45 | * a listbox which is accompanied by a line edit to enter new |
46 | * items into the listbox and pushbuttons to add and remove | 46 | * items into the listbox and pushbuttons to add and remove |
47 | * items from the listbox and two buttons to move items up and down. | 47 | * items from the listbox and two buttons to move items up and down. |
48 | */ | 48 | */ |
49 | class OEditListBox : public QGroupBox | 49 | class OEditListBox : public QGroupBox |
50 | { | 50 | { |
51 | Q_OBJECT | 51 | Q_OBJECT |
52 | 52 | ||
53 | public: | 53 | public: |
54 | /// @since 3.1 | 54 | /// @since 3.1 |
55 | class CustomEditor | 55 | class CustomEditor |
56 | { | 56 | { |
57 | public: | 57 | public: |
58 | CustomEditor() | 58 | CustomEditor() |
59 | : m_representationWidget( 0L ), | 59 | : m_representationWidget( 0L ), |
60 | m_lineEdit( 0L ) {} | 60 | m_lineEdit( 0L ) {} |
61 | CustomEditor( QWidget *repWidget, OLineEdit *edit ) | 61 | CustomEditor( QWidget *repWidget, OLineEdit *edit ) |
62 | : m_representationWidget( repWidget ), | 62 | : m_representationWidget( repWidget ), |
63 | m_lineEdit( edit ) {} | 63 | m_lineEdit( edit ) {} |
64 | CustomEditor( OComboBox *combo ); | 64 | CustomEditor( OComboBox *combo ); |
65 | 65 | ||
66 | void setRepresentationWidget( QWidget *repWidget ) { | 66 | void setRepresentationWidget( QWidget *repWidget ) { |
67 | m_representationWidget = repWidget; | 67 | m_representationWidget = repWidget; |
68 | } | 68 | } |
69 | void setLineEdit( OLineEdit *edit ) { | 69 | void setLineEdit( OLineEdit *edit ) { |
70 | m_lineEdit = edit; | 70 | m_lineEdit = edit; |
71 | } | 71 | } |
72 | 72 | ||
73 | virtual QWidget *representationWidget() const { | 73 | virtual QWidget *representationWidget() const { |
74 | return m_representationWidget; | 74 | return m_representationWidget; |
75 | } | 75 | } |
76 | virtual OLineEdit *lineEdit() const { | 76 | virtual OLineEdit *lineEdit() const { |
77 | return m_lineEdit; | 77 | return m_lineEdit; |
78 | } | 78 | } |
79 | 79 | ||
80 | protected: | 80 | protected: |
81 | QWidget *m_representationWidget; | 81 | QWidget *m_representationWidget; |
82 | OLineEdit *m_lineEdit; | 82 | OLineEdit *m_lineEdit; |
83 | }; | 83 | }; |
84 | 84 | ||
85 | public: | 85 | public: |
86 | 86 | ||
87 | /** | 87 | /** |
88 | * Enumeration of the buttons, the listbox offers. Specify them in the | 88 | * Enumeration of the buttons, the listbox offers. Specify them in the |
89 | * constructor in the buttons parameter. | 89 | * constructor in the buttons parameter. |
90 | */ | 90 | */ |
91 | enum Button { Add = 1, Remove = 2, UpDown = 4, All = Add|Remove|UpDown }; | 91 | enum Button { Add = 1, Remove = 2, UpDown = 4, All = Add|Remove|UpDown }; |
92 | 92 | ||
93 | /** | 93 | /** |
94 | * Create an editable listbox. | 94 | * Create an editable listbox. |
95 | * | 95 | * |
96 | * If @p checkAtEntering is true, after every character you type | 96 | * If @p checkAtEntering is true, after every character you type |
97 | * in the line edit OEditListBox will enable or disable | 97 | * in the line edit OEditListBox will enable or disable |
98 | * the Add-button, depending whether the current content of the | 98 | * the Add-button, depending whether the current content of the |
99 | * line edit is already in the listbox. Maybe this can become a | 99 | * line edit is already in the listbox. Maybe this can become a |
100 | * performance hit with large lists on slow machines. | 100 | * performance hit with large lists on slow machines. |
101 | * If @p checkAtEntering is false, | 101 | * If @p checkAtEntering is false, |
102 | * it will be checked if you press the Add-button. It is not | 102 | * it will be checked if you press the Add-button. It is not |
103 | * possible to enter items twice into the listbox. | 103 | * possible to enter items twice into the listbox. |
104 | */ | 104 | */ |
105 | OEditListBox(QWidget *parent = 0, const char *name = 0, | 105 | OEditListBox(QWidget *parent = 0, const char *name = 0, |
106 | bool checkAtEntering=false, int buttons = All ); | 106 | bool checkAtEntering=false, int buttons = All ); |
107 | /** | 107 | /** |
108 | * Create an editable listbox. | 108 | * Create an editable listbox. |
109 | * | 109 | * |
110 | * The same as the other constructor, additionally it takes | 110 | * The same as the other constructor, additionally it takes |
111 | * @title, which will be the title of the frame around the listbox. | 111 | * @title, which will be the title of the frame around the listbox. |
112 | */ | 112 | */ |
113 | OEditListBox(const QString& title, QWidget *parent = 0, | 113 | OEditListBox(const QString& title, QWidget *parent = 0, |
114 | const char *name = 0, bool checkAtEntering=false, | 114 | const char *name = 0, bool checkAtEntering=false, |
115 | int buttons = All ); | 115 | int buttons = All ); |
116 | 116 | ||
117 | /** | 117 | /** |
118 | * Another constructor, which allows to use a custom editing widget | 118 | * Another constructor, which allows to use a custom editing widget |
119 | * instead of the standard OLineEdit widget. E.g. you can use a | 119 | * instead of the standard OLineEdit widget. E.g. you can use a |
120 | * @ref OURLRequester or a @ref OComboBox as input widget. The custom | 120 | * @ref OURLRequester or a @ref OComboBox as input widget. The custom |
121 | * editor must consist of a lineedit and optionally another widget that | 121 | * editor must consist of a lineedit and optionally another widget that |
122 | * is used as representation. A OComboBox or a OURLRequester have a | 122 | * is used as representation. A OComboBox or a OURLRequester have a |
123 | * OLineEdit as child-widget for example, so the OComboBox is used as | 123 | * OLineEdit as child-widget for example, so the OComboBox is used as |
124 | * the representation widget. | 124 | * the representation widget. |
125 | * | 125 | * |
126 | * @see OURLRequester::customEditor() | 126 | * @see OURLRequester::customEditor() |
127 | * @since 3.1 | 127 | * @since 3.1 |
128 | */ | 128 | */ |
129 | OEditListBox( const QString& title, | 129 | OEditListBox( const QString& title, |
130 | const CustomEditor &customEditor, | 130 | const CustomEditor &customEditor, |
131 | QWidget *parent = 0, const char *name = 0, | 131 | QWidget *parent = 0, const char *name = 0, |
132 | bool checkAtEntering = false, int buttons = All ); | 132 | bool checkAtEntering = false, int buttons = All ); |
133 | 133 | ||
134 | virtual ~OEditListBox(); | 134 | virtual ~OEditListBox(); |
135 | 135 | ||
136 | /** | 136 | /** |
137 | * Return a pointer to the embedded QListBox. | 137 | * Return a pointer to the embedded QListBox. |
138 | */ | 138 | */ |
139 | QListBox* listBox() const { return m_listBox; } | 139 | QListBox* listBox() const { return m_listBox; } |
140 | /** | 140 | /** |
141 | * Return a pointer to the embedded QLineEdit. | 141 | * Return a pointer to the embedded QLineEdit. |
142 | */ | 142 | */ |
143 | OLineEdit* lineEdit() const { return m_lineEdit; } | 143 | OLineEdit* lineEdit() const { return m_lineEdit; } |
144 | /** | 144 | /** |
145 | * Return a pointer to the Add button | 145 | * Return a pointer to the Add button |
146 | */ | 146 | */ |
147 | QPushButton* addButton() const { return servNewButton; } | 147 | QPushButton* addButton() const { return servNewButton; } |
148 | /** | 148 | /** |
149 | * Return a pointer to the Remove button | 149 | * Return a pointer to the Remove button |
150 | */ | 150 | */ |
151 | QPushButton* removeButton() const { return servRemoveButton; } | 151 | QPushButton* removeButton() const { return servRemoveButton; } |
152 | /** | 152 | /** |
153 | * Return a pointer to the Up button | 153 | * Return a pointer to the Up button |
154 | */ | 154 | */ |
155 | QPushButton* upButton() const { return servUpButton; } | 155 | QPushButton* upButton() const { return servUpButton; } |
156 | /** | 156 | /** |
157 | * Return a pointer to the Down button | 157 | * Return a pointer to the Down button |
158 | */ | 158 | */ |
159 | QPushButton* downButton() const { return servDownButton; } | 159 | QPushButton* downButton() const { return servDownButton; } |
160 | 160 | ||
161 | /** | 161 | /** |
162 | * See @ref QListBox::count() | 162 | * See @ref QListBox::count() |
163 | */ | 163 | */ |
164 | int count() const { return int(m_listBox->count()); } | 164 | int count() const { return int(m_listBox->count()); } |
165 | /** | 165 | /** |
166 | * See @ref QListBox::insertStringList() | 166 | * See @ref QListBox::insertStringList() |
167 | */ | 167 | */ |
168 | void insertStringList(const QStringList& list, int index=-1); | 168 | void insertStringList(const QStringList& list, int index=-1); |
169 | /** | 169 | /** |
170 | * See @ref QListBox::insertStringList() | 170 | * See @ref QListBox::insertStringList() |
171 | */ | 171 | */ |
172 | void insertStrList(const QStrList* list, int index=-1); | 172 | void insertStrList(const QStrList* list, int index=-1); |
173 | /** | 173 | /** |
174 | * See @ref QListBox::insertStrList() | 174 | * See @ref QListBox::insertStrList() |
175 | */ | 175 | */ |
176 | void insertStrList(const QStrList& list, int index=-1); | 176 | void insertStrList(const QStrList& list, int index=-1); |
177 | /** | 177 | /** |
178 | * See @ref QListBox::insertStrList() | 178 | * See @ref QListBox::insertStrList() |
179 | */ | 179 | */ |
180 | void insertStrList(const char ** list, int numStrings=-1, int index=-1); | 180 | void insertStrList(const char ** list, int numStrings=-1, int index=-1); |
181 | /** | 181 | /** |
182 | * See @ref QListBox::insertItem() | 182 | * See @ref QListBox::insertItem() |
183 | */ | 183 | */ |
184 | void insertItem(const QString& text, int index=-1) {m_listBox->insertItem(text,index);} | 184 | void insertItem(const QString& text, int index=-1) {m_listBox->insertItem(text,index);} |
185 | /** | 185 | /** |
186 | * Clears both the listbox and the line edit. | 186 | * Clears both the listbox and the line edit. |
187 | */ | 187 | */ |
188 | void clear(); | 188 | void clear(); |
189 | /** | 189 | /** |
190 | * See @ref QListBox::text() | 190 | * See @ref QListBox::text() |
191 | */ | 191 | */ |
192 | QString text(int index) const { return m_listBox->text(index); } | 192 | QString text(int index) const { return m_listBox->text(index); } |
193 | /** | 193 | /** |
194 | * See @ref QListBox::currentItem() | 194 | * See @ref QListBox::currentItem() |
195 | */ | 195 | */ |
196 | int currentItem() const; | 196 | int currentItem() const; |
197 | /** | 197 | /** |
198 | * See @ref QListBox::currentText() | 198 | * See @ref QListBox::currentText() |
199 | */ | 199 | */ |
200 | QString currentText() const { return m_listBox->currentText(); } | 200 | QString currentText() const { return m_listBox->currentText(); } |
201 | 201 | ||
202 | /** | 202 | /** |
203 | * @returns a stringlist of all items in the listbox | 203 | * @returns a stringlist of all items in the listbox |
204 | */ | 204 | */ |
205 | QStringList items() const; | 205 | QStringList items() const; |
206 | 206 | ||
207 | signals: | 207 | signals: |
208 | void changed(); | 208 | void changed(); |
209 | 209 | ||
210 | /** | 210 | /** |
211 | * This signal is emitted when the user adds a new string to the list, | 211 | * This signal is emitted when the user adds a new string to the list, |
212 | * the parameter is the added string. | 212 | * the parameter is the added string. |
213 | * @since 3.2 | 213 | * @since 3.2 |
214 | */ | 214 | */ |
215 | void added( const QString & text ); | 215 | void added( const QString & text ); |
216 | 216 | ||
217 | /** | 217 | /** |
218 | * This signal is emitted when the user removes a string from the list, | 218 | * This signal is emitted when the user removes a string from the list, |
219 | * the parameter is the removed string. | 219 | * the parameter is the removed string. |
220 | * @since 3.2 | 220 | * @since 3.2 |
221 | */ | 221 | */ |
222 | void removed( const QString & text ); | 222 | void removed( const QString & text ); |
223 | 223 | ||
224 | protected slots: | 224 | protected slots: |
225 | //the names should be self-explaining | 225 | //the names should be self-explaining |
226 | void moveItemUp(); | 226 | void moveItemUp(); |
227 | void moveItemDown(); | 227 | void moveItemDown(); |
228 | void addItem(); | 228 | void addItem(); |
229 | void removeItem(); | 229 | void removeItem(); |
230 | void enableMoveButtons(int index); | 230 | void enableMoveButtons(int index); |
231 | void typedSomething(const QString& text); | 231 | void typedSomething(const QString& text); |
232 | 232 | ||
233 | private: | 233 | private: |
234 | QListBox *m_listBox; | 234 | QListBox *m_listBox; |
235 | QPushButton *servUpButton, *servDownButton; | 235 | QPushButton *servUpButton, *servDownButton; |
236 | QPushButton *servNewButton, *servRemoveButton; | 236 | QPushButton *servNewButton, *servRemoveButton; |
237 | OLineEdit *m_lineEdit; | 237 | OLineEdit *m_lineEdit; |
238 | 238 | ||
239 | //this is called in both ctors, to avoid code duplication | 239 | //this is called in both ctors, to avoid code duplication |
240 | void init( bool checkAtEntering, int buttons, | 240 | void init( bool checkAtEntering, int buttons, |
241 | QWidget *representationWidget = 0L ); | 241 | QWidget *representationWidget = 0L ); |
242 | 242 | ||
243 | protected: | 243 | protected: |
244 | virtual void virtual_hook( int id, void* data ); | 244 | virtual void virtual_hook( int id, void* data ); |
245 | private: | 245 | private: |
246 | //our lovely private d-pointer | 246 | //our lovely private d-pointer |
247 | OEditListBoxPrivate *d; | 247 | OEditListBoxPrivate *d; |
248 | }; | 248 | }; |
249 | 249 | ||
250 | #endif // OEDITLISTBOX | 250 | #endif // OEDITLISTBOX |
diff --git a/libopie2/qt3/opieui/ojanuswidget.cpp b/libopie2/qt3/opieui/ojanuswidget.cpp index 063e393..8bdbc03 100644 --- a/libopie2/qt3/opieui/ojanuswidget.cpp +++ b/libopie2/qt3/opieui/ojanuswidget.cpp | |||
@@ -1,1116 +1,1116 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
3 | 3 | ||
4 | Originally part of the KDE project | 4 | Originally part of the KDE project |
5 | (C) 1999-2000 Espen Sand (espensa@online.no) | 5 | (C) 1999-2000 Espen Sand (espensa@online.no) |
6 | =. | 6 | =. |
7 | .=l. | 7 | .=l. |
8 | .>+-= | 8 | .>+-= |
9 | _;:, .> :=|. This program is free software; you can | 9 | _;:, .> :=|. This program is free software; you can |
10 | .> <`_, > . <= redistribute it and/or modify it under | 10 | .> <`_, > . <= redistribute it and/or modify it under |
11 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 11 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
12 | .="- .-=="i, .._ License as published by the Free Software | 12 | .="- .-=="i, .._ License as published by the Free Software |
13 | - . .-<_> .<> Foundation; either version 2 of the License, | 13 | - . .-<_> .<> Foundation; either version 2 of the License, |
14 | ._= =} : or (at your option) any later version. | 14 | ._= =} : or (at your option) any later version. |
15 | .%`+i> _;_. | 15 | .%`+i> _;_. |
16 | .i_,=:_. -<s. This program is distributed in the hope that | 16 | .i_,=:_. -<s. This program is distributed in the hope that |
17 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 17 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
18 | : .. .:, . . . without even the implied warranty of | 18 | : .. .:, . . . without even the implied warranty of |
19 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 19 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
20 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 20 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
21 | ..}^=.= = ; Library General Public License for more | 21 | ..}^=.= = ; Library General Public License for more |
22 | ++= -. .` .: details. | 22 | ++= -. .` .: details. |
23 | : = ...= . :.=- | 23 | : = ...= . :.=- |
24 | -. .:....=;==+<; You should have received a copy of the GNU | 24 | -. .:....=;==+<; You should have received a copy of the GNU |
25 | -_. . . )=. = Library General Public License along with | 25 | -_. . . )=. = Library General Public License along with |
26 | -- :-=` this library; see the file COPYING.LIB. | 26 | -- :-=` this library; see the file COPYING.LIB. |
27 | If not, write to the Free Software Foundation, | 27 | If not, write to the Free Software Foundation, |
28 | Inc., 59 Temple Place - Suite 330, | 28 | Inc., 59 Temple Place - Suite 330, |
29 | Boston, MA 02111-1307, USA. | 29 | Boston, MA 02111-1307, USA. |
30 | 30 | ||
31 | */ | 31 | */ |
32 | 32 | ||
33 | /* QT */ | 33 | /* QT */ |
34 | 34 | ||
35 | #include <qbitmap.h> | 35 | #include <qbitmap.h> |
36 | #include <qgrid.h> | 36 | #include <qgrid.h> |
37 | #include <qhbox.h> | 37 | #include <qhbox.h> |
38 | #include <qheader.h> | 38 | #include <qheader.h> |
39 | #include <qlabel.h> | 39 | #include <qlabel.h> |
40 | #include <qlayout.h> | 40 | #include <qlayout.h> |
41 | #include <qobjectlist.h> | 41 | #include <qobjectlist.h> |
42 | #include <qpixmap.h> | 42 | #include <qpixmap.h> |
43 | #include <qlistview.h> | 43 | #include <qlistview.h> |
44 | #include <qsplitter.h> | 44 | #include <qsplitter.h> |
45 | #include <qtabwidget.h> | 45 | #include <qtabwidget.h> |
46 | #include <qvbox.h> | 46 | #include <qvbox.h> |
47 | #include <qwidgetstack.h> | 47 | #include <qwidgetstack.h> |
48 | #include <qpainter.h> | 48 | #include <qpainter.h> |
49 | #include <qtimer.h> | 49 | #include <qtimer.h> |
50 | #include <qstyle.h> | 50 | #include <qstyle.h> |
51 | 51 | ||
52 | /* OPIE */ | 52 | /* OPIE */ |
53 | 53 | ||
54 | #include <opie2/odialog.h> | 54 | #include <opie2/odialog.h> |
55 | #include <opie2/oseparator.h> | 55 | #include <opie2/oseparator.h> |
56 | #include <opie2/ojanuswidget.h> | 56 | #include <opie2/ojanuswidget.h> |
57 | 57 | ||
58 | /*====================================================================================== | 58 | /*====================================================================================== |
59 | * IconListItem | 59 | * IconListItem |
60 | *======================================================================================*/ | 60 | *======================================================================================*/ |
61 | 61 | ||
62 | class OJanusWidget::IconListItem : public QListBoxItem | 62 | class OJanusWidget::IconListItem : public QListBoxItem |
63 | { | 63 | { |
64 | public: | 64 | public: |
65 | IconListItem( QListBox *listbox, const QPixmap &pixmap, | 65 | IconListItem( QListBox *listbox, const QPixmap &pixmap, |
66 | const QString &text ); | 66 | const QString &text ); |
67 | virtual int height( const QListBox *lb ) const; | 67 | virtual int height( const QListBox *lb ) const; |
68 | virtual int width( const QListBox *lb ) const; | 68 | virtual int width( const QListBox *lb ) const; |
69 | int expandMinimumWidth( int width ); | 69 | int expandMinimumWidth( int width ); |
70 | 70 | ||
71 | protected: | 71 | protected: |
72 | const QPixmap &defaultPixmap(); | 72 | const QPixmap &defaultPixmap(); |
73 | void paint( QPainter *painter ); | 73 | void paint( QPainter *painter ); |
74 | 74 | ||
75 | private: | 75 | private: |
76 | QPixmap mPixmap; | 76 | QPixmap mPixmap; |
77 | int mMinimumWidth; | 77 | int mMinimumWidth; |
78 | }; | 78 | }; |
79 | 79 | ||
80 | template class QPtrList<QListViewItem>; | 80 | template class QPtrList<QListViewItem>; |
81 | 81 | ||
82 | /*====================================================================================== | 82 | /*====================================================================================== |
83 | * OJanusWidget | 83 | * OJanusWidget |
84 | *======================================================================================*/ | 84 | *======================================================================================*/ |
85 | 85 | ||
86 | OJanusWidget::OJanusWidget( QWidget *parent, const char *name, int face ) | 86 | OJanusWidget::OJanusWidget( QWidget *parent, const char *name, int face ) |
87 | : QWidget( parent, name, 0 ), | 87 | : QWidget( parent, name, 0 ), |
88 | mValid(false), mPageList(0), | 88 | mValid(false), mPageList(0), |
89 | mTitleList(0), mFace(face), mTitleLabel(0), mActivePageWidget(0), | 89 | mTitleList(0), mFace(face), mTitleLabel(0), mActivePageWidget(0), |
90 | mShowIconsInTreeList(false), d(0) | 90 | mShowIconsInTreeList(false), d(0) |
91 | { | 91 | { |
92 | QVBoxLayout *topLayout = new QVBoxLayout( this ); | 92 | QVBoxLayout *topLayout = new QVBoxLayout( this ); |
93 | 93 | ||
94 | if( mFace == TreeList || mFace == IconList ) | 94 | if( mFace == TreeList || mFace == IconList ) |
95 | { | 95 | { |
96 | mPageList = new QPtrList<QWidget>; | 96 | mPageList = new QPtrList<QWidget>; |
97 | mTitleList = new QStringList(); | 97 | mTitleList = new QStringList(); |
98 | 98 | ||
99 | QFrame *page; | 99 | QFrame *page; |
100 | if( mFace == TreeList ) | 100 | if( mFace == TreeList ) |
101 | { | 101 | { |
102 | QSplitter *splitter = new QSplitter( this ); | 102 | QSplitter *splitter = new QSplitter( this ); |
103 | topLayout->addWidget( splitter, 10 ); | 103 | topLayout->addWidget( splitter, 10 ); |
104 | mTreeListResizeMode = QSplitter::KeepSize; | 104 | mTreeListResizeMode = QSplitter::KeepSize; |
105 | 105 | ||
106 | mTreeList = new QListView( splitter ); | 106 | mTreeList = new QListView( splitter ); |
107 | mTreeList->addColumn( QString::fromLatin1("") ); | 107 | mTreeList->addColumn( QString::fromLatin1("") ); |
108 | mTreeList->header()->hide(); | 108 | mTreeList->header()->hide(); |
109 | mTreeList->setRootIsDecorated(true); | 109 | mTreeList->setRootIsDecorated(true); |
110 | mTreeList->setSorting( -1 ); | 110 | mTreeList->setSorting( -1 ); |
111 | connect( mTreeList, SIGNAL(selectionChanged()), SLOT(slotShowPage()) ); | 111 | connect( mTreeList, SIGNAL(selectionChanged()), SLOT(slotShowPage()) ); |
112 | connect( mTreeList, SIGNAL(clicked(QListViewItem*)), SLOT(slotItemClicked(QListViewItem*))); | 112 | connect( mTreeList, SIGNAL(clicked(QListViewItem*)), SLOT(slotItemClicked(QListViewItem*))); |
113 | 113 | ||
114 | // | 114 | // |
115 | // Page area. Title at top with a separator below and a pagestack using | 115 | // Page area. Title at top with a separator below and a pagestack using |
116 | // all available space at bottom. | 116 | // all available space at bottom. |
117 | // | 117 | // |
118 | QFrame *p = new QFrame( splitter ); | 118 | QFrame *p = new QFrame( splitter ); |
119 | 119 | ||
120 | QHBoxLayout *hbox = new QHBoxLayout( p, 0, 0 ); | 120 | QHBoxLayout *hbox = new QHBoxLayout( p, 0, 0 ); |
121 | hbox->addSpacing( ODialog::spacingHint() ); | 121 | hbox->addSpacing( ODialog::spacingHint() ); |
122 | 122 | ||
123 | page = new QFrame( p ); | 123 | page = new QFrame( p ); |
124 | hbox->addWidget( page, 10 ); | 124 | hbox->addWidget( page, 10 ); |
125 | } | 125 | } |
126 | else | 126 | else |
127 | { | 127 | { |
128 | QHBoxLayout *hbox = new QHBoxLayout( topLayout ); | 128 | QHBoxLayout *hbox = new QHBoxLayout( topLayout ); |
129 | mIconList = new IconListBox( this ); | 129 | mIconList = new IconListBox( this ); |
130 | 130 | ||
131 | QFont listFont( mIconList->font() ); | 131 | QFont listFont( mIconList->font() ); |
132 | listFont.setBold( true ); | 132 | listFont.setBold( true ); |
133 | mIconList->setFont( listFont ); | 133 | mIconList->setFont( listFont ); |
134 | 134 | ||
135 | mIconList->verticalScrollBar()->installEventFilter( this ); | 135 | mIconList->verticalScrollBar()->installEventFilter( this ); |
136 | hbox->addWidget( mIconList ); | 136 | hbox->addWidget( mIconList ); |
137 | connect( mIconList, SIGNAL(selectionChanged()), SLOT(slotShowPage())); | 137 | connect( mIconList, SIGNAL(selectionChanged()), SLOT(slotShowPage())); |
138 | hbox->addSpacing( ODialog::spacingHint() ); | 138 | hbox->addSpacing( ODialog::spacingHint() ); |
139 | page = new QFrame( this ); | 139 | page = new QFrame( this ); |
140 | hbox->addWidget( page, 10 ); | 140 | hbox->addWidget( page, 10 ); |
141 | } | 141 | } |
142 | 142 | ||
143 | // | 143 | // |
144 | // Rest of page area. Title at top with a separator below and a | 144 | // Rest of page area. Title at top with a separator below and a |
145 | // pagestack using all available space at bottom. | 145 | // pagestack using all available space at bottom. |
146 | // | 146 | // |
147 | 147 | ||
148 | QVBoxLayout *vbox = new QVBoxLayout( page, 0, ODialog::spacingHint() ); | 148 | QVBoxLayout *vbox = new QVBoxLayout( page, 0, ODialog::spacingHint() ); |
149 | 149 | ||
150 | mTitleLabel = new QLabel( QString::fromLatin1("Empty page"), page, "OJanusWidgetTitleLabel" ); | 150 | mTitleLabel = new QLabel( QString::fromLatin1("Empty page"), page, "OJanusWidgetTitleLabel" ); |
151 | vbox->addWidget( mTitleLabel ); | 151 | vbox->addWidget( mTitleLabel ); |
152 | 152 | ||
153 | QFont titleFont( mTitleLabel->font() ); | 153 | QFont titleFont( mTitleLabel->font() ); |
154 | titleFont.setBold( true ); | 154 | titleFont.setBold( true ); |
155 | mTitleLabel->setFont( titleFont ); | 155 | mTitleLabel->setFont( titleFont ); |
156 | 156 | ||
157 | mTitleSep = new OSeparator( page ); | 157 | mTitleSep = new OSeparator( page ); |
158 | mTitleSep->setFrameStyle( QFrame::HLine|QFrame::Plain ); | 158 | mTitleSep->setFrameStyle( QFrame::HLine|QFrame::Plain ); |
159 | vbox->addWidget( mTitleSep ); | 159 | vbox->addWidget( mTitleSep ); |
160 | 160 | ||
161 | mPageStack = new QWidgetStack( page ); | 161 | mPageStack = new QWidgetStack( page ); |
162 | connect(mPageStack, SIGNAL(aboutToShow(QWidget*)), | 162 | connect(mPageStack, SIGNAL(aboutToShow(QWidget*)), |
163 | this, SIGNAL(aboutToShowPage(QWidget*))); | 163 | this, SIGNAL(aboutToShowPage(QWidget*))); |
164 | vbox->addWidget( mPageStack, 10 ); | 164 | vbox->addWidget( mPageStack, 10 ); |
165 | } | 165 | } |
166 | else if( mFace == Tabbed ) | 166 | else if( mFace == Tabbed ) |
167 | { | 167 | { |
168 | mPageList = new QPtrList<QWidget>; | 168 | mPageList = new QPtrList<QWidget>; |
169 | 169 | ||
170 | mTabControl = new QTabWidget( this ); | 170 | mTabControl = new QTabWidget( this ); |
171 | mTabControl->setMargin (ODialog::marginHint()); | 171 | mTabControl->setMargin (ODialog::marginHint()); |
172 | topLayout->addWidget( mTabControl, 10 ); | 172 | topLayout->addWidget( mTabControl, 10 ); |
173 | } | 173 | } |
174 | else if( mFace == Swallow ) | 174 | else if( mFace == Swallow ) |
175 | { | 175 | { |
176 | mSwallowPage = new QWidget( this ); | 176 | mSwallowPage = new QWidget( this ); |
177 | topLayout->addWidget( mSwallowPage, 10 ); | 177 | topLayout->addWidget( mSwallowPage, 10 ); |
178 | } | 178 | } |
179 | else | 179 | else |
180 | { | 180 | { |
181 | mFace = Plain; | 181 | mFace = Plain; |
182 | mPlainPage = new QFrame( this ); | 182 | mPlainPage = new QFrame( this ); |
183 | topLayout->addWidget( mPlainPage, 10 ); | 183 | topLayout->addWidget( mPlainPage, 10 ); |
184 | } | 184 | } |
185 | 185 | ||
186 | /* FIXME: Revise for Opie | 186 | /* FIXME: Revise for Opie |
187 | if ( kapp ) | 187 | if ( kapp ) |
188 | connect(kapp,SIGNAL(kdisplayFontChanged()),SLOT(slotFontChanged())); | 188 | connect(kapp,SIGNAL(kdisplayFontChanged()),SLOT(slotFontChanged())); |
189 | */ | 189 | */ |
190 | 190 | ||
191 | mValid = true; | 191 | mValid = true; |
192 | 192 | ||
193 | setSwallowedWidget(0); // Set default size if 'mFace' is Swallow. | 193 | setSwallowedWidget(0); // Set default size if 'mFace' is Swallow. |
194 | } | 194 | } |
195 | 195 | ||
196 | 196 | ||
197 | OJanusWidget::~OJanusWidget() | 197 | OJanusWidget::~OJanusWidget() |
198 | { | 198 | { |
199 | delete mPageList; | 199 | delete mPageList; |
200 | mPageList = 0; | 200 | mPageList = 0; |
201 | delete mTitleList; | 201 | delete mTitleList; |
202 | mTitleList = 0; | 202 | mTitleList = 0; |
203 | } | 203 | } |
204 | 204 | ||
205 | 205 | ||
206 | bool OJanusWidget::isValid() const | 206 | bool OJanusWidget::isValid() const |
207 | { | 207 | { |
208 | return( mValid ); | 208 | return( mValid ); |
209 | } | 209 | } |
210 | 210 | ||
211 | 211 | ||
212 | QFrame *OJanusWidget::plainPage() | 212 | QFrame *OJanusWidget::plainPage() |
213 | { | 213 | { |
214 | return( mPlainPage ); | 214 | return( mPlainPage ); |
215 | } | 215 | } |
216 | 216 | ||
217 | 217 | ||
218 | int OJanusWidget::face() const | 218 | int OJanusWidget::face() const |
219 | { | 219 | { |
220 | return( mFace ); | 220 | return( mFace ); |
221 | } | 221 | } |
222 | 222 | ||
223 | QWidget *OJanusWidget::FindParent() | 223 | QWidget *OJanusWidget::FindParent() |
224 | { | 224 | { |
225 | if( mFace == Tabbed ) { | 225 | if( mFace == Tabbed ) { |
226 | return mTabControl; | 226 | return mTabControl; |
227 | } | 227 | } |
228 | else { | 228 | else { |
229 | return this; | 229 | return this; |
230 | } | 230 | } |
231 | } | 231 | } |
232 | 232 | ||
233 | QFrame *OJanusWidget::addPage( const QStringList &items, const QString &header, | 233 | QFrame *OJanusWidget::addPage( const QStringList &items, const QString &header, |
234 | const QPixmap &pixmap ) | 234 | const QPixmap &pixmap ) |
235 | { | 235 | { |
236 | if( mValid == false ) | 236 | if( mValid == false ) |
237 | { | 237 | { |
238 | qDebug( "addPage: Invalid object" ); | 238 | qDebug( "addPage: Invalid object" ); |
239 | return( 0 ); | 239 | return( 0 ); |
240 | } | 240 | } |
241 | 241 | ||
242 | QFrame *page = new QFrame( FindParent(), "page" ); | 242 | QFrame *page = new QFrame( FindParent(), "page" ); |
243 | addPageWidget( page, items, header, pixmap ); | 243 | addPageWidget( page, items, header, pixmap ); |
244 | 244 | ||
245 | return page; | 245 | return page; |
246 | } | 246 | } |
247 | 247 | ||
248 | void OJanusWidget::pageGone( QObject *obj ) | 248 | void OJanusWidget::pageGone( QObject *obj ) |
249 | { | 249 | { |
250 | removePage( static_cast<QWidget*>( obj ) ); | 250 | removePage( static_cast<QWidget*>( obj ) ); |
251 | } | 251 | } |
252 | 252 | ||
253 | void OJanusWidget::slotReopen( QListViewItem * item ) | 253 | void OJanusWidget::slotReopen( QListViewItem * item ) |
254 | { | 254 | { |
255 | if( item ) | 255 | if( item ) |
256 | item->setOpen( true ); | 256 | item->setOpen( true ); |
257 | } | 257 | } |
258 | 258 | ||
259 | QFrame *OJanusWidget::addPage( const QString &itemName, const QString &header, | 259 | QFrame *OJanusWidget::addPage( const QString &itemName, const QString &header, |
260 | const QPixmap &pixmap ) | 260 | const QPixmap &pixmap ) |
261 | { | 261 | { |
262 | QStringList items; | 262 | QStringList items; |
263 | items << itemName; | 263 | items << itemName; |
264 | return addPage(items, header, pixmap); | 264 | return addPage(items, header, pixmap); |
265 | } | 265 | } |
266 | 266 | ||
267 | 267 | ||
268 | 268 | ||
269 | QVBox *OJanusWidget::addVBoxPage( const QStringList &items, | 269 | QVBox *OJanusWidget::addVBoxPage( const QStringList &items, |
270 | const QString &header, | 270 | const QString &header, |
271 | const QPixmap &pixmap ) | 271 | const QPixmap &pixmap ) |
272 | { | 272 | { |
273 | if( mValid == false ) | 273 | if( mValid == false ) |
274 | { | 274 | { |
275 | qDebug( "addPage: Invalid object" ); | 275 | qDebug( "addPage: Invalid object" ); |
276 | return( 0 ); | 276 | return( 0 ); |
277 | } | 277 | } |
278 | 278 | ||
279 | QVBox *page = new QVBox(FindParent() , "page" ); | 279 | QVBox *page = new QVBox(FindParent() , "page" ); |
280 | page->setSpacing( ODialog::spacingHint() ); | 280 | page->setSpacing( ODialog::spacingHint() ); |
281 | addPageWidget( page, items, header, pixmap ); | 281 | addPageWidget( page, items, header, pixmap ); |
282 | 282 | ||
283 | return page; | 283 | return page; |
284 | } | 284 | } |
285 | 285 | ||
286 | QVBox *OJanusWidget::addVBoxPage( const QString &itemName, | 286 | QVBox *OJanusWidget::addVBoxPage( const QString &itemName, |
287 | const QString &header, | 287 | const QString &header, |
288 | const QPixmap &pixmap ) | 288 | const QPixmap &pixmap ) |
289 | { | 289 | { |
290 | QStringList items; | 290 | QStringList items; |
291 | items << itemName; | 291 | items << itemName; |
292 | return addVBoxPage(items, header, pixmap); | 292 | return addVBoxPage(items, header, pixmap); |
293 | } | 293 | } |
294 | 294 | ||
295 | QHBox *OJanusWidget::addHBoxPage( const QStringList &items, | 295 | QHBox *OJanusWidget::addHBoxPage( const QStringList &items, |
296 | const QString &header, | 296 | const QString &header, |
297 | const QPixmap &pixmap ) | 297 | const QPixmap &pixmap ) |
298 | { | 298 | { |
299 | if( mValid == false ) { | 299 | if( mValid == false ) { |
300 | qDebug( "addPage: Invalid object" ); | 300 | qDebug( "addPage: Invalid object" ); |
301 | return( 0 ); | 301 | return( 0 ); |
302 | } | 302 | } |
303 | 303 | ||
304 | QHBox *page = new QHBox(FindParent(), "page"); | 304 | QHBox *page = new QHBox(FindParent(), "page"); |
305 | page->setSpacing( ODialog::spacingHint() ); | 305 | page->setSpacing( ODialog::spacingHint() ); |
306 | addPageWidget( page, items, header, pixmap ); | 306 | addPageWidget( page, items, header, pixmap ); |
307 | 307 | ||
308 | return page; | 308 | return page; |
309 | } | 309 | } |
310 | 310 | ||
311 | QHBox *OJanusWidget::addHBoxPage( const QString &itemName, | 311 | QHBox *OJanusWidget::addHBoxPage( const QString &itemName, |
312 | const QString &header, | 312 | const QString &header, |
313 | const QPixmap &pixmap ) | 313 | const QPixmap &pixmap ) |
314 | { | 314 | { |
315 | QStringList items; | 315 | QStringList items; |
316 | items << itemName; | 316 | items << itemName; |
317 | return addHBoxPage(items, header, pixmap); | 317 | return addHBoxPage(items, header, pixmap); |
318 | } | 318 | } |
319 | 319 | ||
320 | QGrid *OJanusWidget::addGridPage( int n, Orientation dir, | 320 | QGrid *OJanusWidget::addGridPage( int n, Orientation dir, |
321 | const QStringList &items, | 321 | const QStringList &items, |
322 | const QString &header, | 322 | const QString &header, |
323 | const QPixmap &pixmap ) | 323 | const QPixmap &pixmap ) |
324 | { | 324 | { |
325 | if( mValid == false ) | 325 | if( mValid == false ) |
326 | { | 326 | { |
327 | qDebug( "addPage: Invalid object" ); | 327 | qDebug( "addPage: Invalid object" ); |
328 | return( 0 ); | 328 | return( 0 ); |
329 | } | 329 | } |
330 | 330 | ||
331 | QGrid *page = new QGrid( n, dir, FindParent(), "page" ); | 331 | QGrid *page = new QGrid( n, dir, FindParent(), "page" ); |
332 | page->setSpacing( ODialog::spacingHint() ); | 332 | page->setSpacing( ODialog::spacingHint() ); |
333 | addPageWidget( page, items, header, pixmap ); | 333 | addPageWidget( page, items, header, pixmap ); |
334 | 334 | ||
335 | return page; | 335 | return page; |
336 | } | 336 | } |
337 | 337 | ||
338 | 338 | ||
339 | QGrid *OJanusWidget::addGridPage( int n, Orientation dir, | 339 | QGrid *OJanusWidget::addGridPage( int n, Orientation dir, |
340 | const QString &itemName, | 340 | const QString &itemName, |
341 | const QString &header, | 341 | const QString &header, |
342 | const QPixmap &pixmap ) | 342 | const QPixmap &pixmap ) |
343 | { | 343 | { |
344 | QStringList items; | 344 | QStringList items; |
345 | items << itemName; | 345 | items << itemName; |
346 | return addGridPage(n, dir, items, header, pixmap); | 346 | return addGridPage(n, dir, items, header, pixmap); |
347 | } | 347 | } |
348 | 348 | ||
349 | void OJanusWidget::InsertTreeListItem(const QStringList &items, const QPixmap &pixmap, QFrame *page) | 349 | void OJanusWidget::InsertTreeListItem(const QStringList &items, const QPixmap &pixmap, QFrame *page) |
350 | { | 350 | { |
351 | bool isTop = true; | 351 | bool isTop = true; |
352 | QListViewItem *curTop = 0, *child, *last, *newChild; | 352 | QListViewItem *curTop = 0, *child, *last, *newChild; |
353 | unsigned int index = 1; | 353 | unsigned int index = 1; |
354 | QStringList curPath; | 354 | QStringList curPath; |
355 | 355 | ||
356 | for ( QStringList::ConstIterator it = items.begin(); it != items.end(); ++it, index++ ) { | 356 | for ( QStringList::ConstIterator it = items.begin(); it != items.end(); ++it, index++ ) { |
357 | QString name = (*it); | 357 | QString name = (*it); |
358 | bool isPath = ( index != items.count() ); | 358 | bool isPath = ( index != items.count() ); |
359 | 359 | ||
360 | // Find the first child. | 360 | // Find the first child. |
361 | if (isTop) { | 361 | if (isTop) { |
362 | child = mTreeList->firstChild(); | 362 | child = mTreeList->firstChild(); |
363 | } | 363 | } |
364 | else { | 364 | else { |
365 | child = curTop->firstChild(); | 365 | child = curTop->firstChild(); |
366 | } | 366 | } |
367 | 367 | ||
368 | // Now search for a child with the current Name, and if it we doesn't | 368 | // Now search for a child with the current Name, and if it we doesn't |
369 | // find it, then remember the location of the last child. | 369 | // find it, then remember the location of the last child. |
370 | for (last = 0; child && child->text(0) != name ; last = child, child = child->nextSibling()); | 370 | for (last = 0; child && child->text(0) != name ; last = child, child = child->nextSibling()); |
371 | 371 | ||
372 | if (last == 0 && child == 0) { | 372 | if (last == 0 && child == 0) { |
373 | // This node didn't have any children at all, lets just insert the | 373 | // This node didn't have any children at all, lets just insert the |
374 | // new child. | 374 | // new child. |
375 | if (isTop) | 375 | if (isTop) |
376 | newChild = new QListViewItem(mTreeList, name); | 376 | newChild = new QListViewItem(mTreeList, name); |
377 | else | 377 | else |
378 | newChild = new QListViewItem(curTop, name); | 378 | newChild = new QListViewItem(curTop, name); |
379 | 379 | ||
380 | } | 380 | } |
381 | else if (child != 0) { | 381 | else if (child != 0) { |
382 | // we found the given name in this child. | 382 | // we found the given name in this child. |
383 | if (!isPath) { | 383 | if (!isPath) { |
384 | qDebug( "The element inserted was already in the TreeList box!" ); | 384 | qDebug( "The element inserted was already in the TreeList box!" ); |
385 | return; | 385 | return; |
386 | } | 386 | } |
387 | else { | 387 | else { |
388 | // Ok we found the folder | 388 | // Ok we found the folder |
389 | newChild = child; | 389 | newChild = child; |
390 | } | 390 | } |
391 | } | 391 | } |
392 | else { | 392 | else { |
393 | // the node had some children, but we didn't find the given name | 393 | // the node had some children, but we didn't find the given name |
394 | if (isTop) | 394 | if (isTop) |
395 | newChild = new QListViewItem(mTreeList, last, name); | 395 | newChild = new QListViewItem(mTreeList, last, name); |
396 | else | 396 | else |
397 | newChild = new QListViewItem(curTop, last, name); | 397 | newChild = new QListViewItem(curTop, last, name); |
398 | } | 398 | } |
399 | 399 | ||
400 | // Now make the element expandable if it is a path component, and make | 400 | // Now make the element expandable if it is a path component, and make |
401 | // ready for next loop | 401 | // ready for next loop |
402 | if (isPath) { | 402 | if (isPath) { |
403 | newChild->setExpandable(true); | 403 | newChild->setExpandable(true); |
404 | curTop = newChild; | 404 | curTop = newChild; |
405 | isTop = false; | 405 | isTop = false; |
406 | curPath << name; | 406 | curPath << name; |
407 | 407 | ||
408 | QString key = curPath.join("_/_"); | 408 | QString key = curPath.join("_/_"); |
409 | if (mFolderIconMap.contains(key)) { | 409 | if (mFolderIconMap.contains(key)) { |
410 | QPixmap p = mFolderIconMap[key]; | 410 | QPixmap p = mFolderIconMap[key]; |
411 | newChild->setPixmap(0,p); | 411 | newChild->setPixmap(0,p); |
412 | } | 412 | } |
413 | } | 413 | } |
414 | else { | 414 | else { |
415 | if (mShowIconsInTreeList) { | 415 | if (mShowIconsInTreeList) { |
416 | newChild->setPixmap(0, pixmap); | 416 | newChild->setPixmap(0, pixmap); |
417 | } | 417 | } |
418 | mTreeListToPageStack.insert(newChild, page); | 418 | mTreeListToPageStack.insert(newChild, page); |
419 | } | 419 | } |
420 | } | 420 | } |
421 | } | 421 | } |
422 | 422 | ||
423 | void OJanusWidget::addPageWidget( QFrame *page, const QStringList &items, | 423 | void OJanusWidget::addPageWidget( QFrame *page, const QStringList &items, |
424 | const QString &header,const QPixmap &pixmap ) | 424 | const QString &header,const QPixmap &pixmap ) |
425 | { | 425 | { |
426 | connect(page, SIGNAL(destroyed(QObject*)), SLOT(pageGone(QObject*))); | 426 | connect(page, SIGNAL(destroyed(QObject*)), SLOT(pageGone(QObject*))); |
427 | 427 | ||
428 | if( mFace == Tabbed ) | 428 | if( mFace == Tabbed ) |
429 | { | 429 | { |
430 | mTabControl->addTab (page, items.last()); | 430 | mTabControl->addTab (page, items.last()); |
431 | mPageList->append (page); | 431 | mPageList->append (page); |
432 | } | 432 | } |
433 | else if( mFace == TreeList || mFace == IconList ) | 433 | else if( mFace == TreeList || mFace == IconList ) |
434 | { | 434 | { |
435 | mPageList->append( page ); | 435 | mPageList->append( page ); |
436 | mPageStack->addWidget( page, 0 ); | 436 | mPageStack->addWidget( page, 0 ); |
437 | 437 | ||
438 | if (items.count() == 0) { | 438 | if (items.count() == 0) { |
439 | qDebug( "Invalid QStringList, with zero items" ); | 439 | qDebug( "Invalid QStringList, with zero items" ); |
440 | return; | 440 | return; |
441 | } | 441 | } |
442 | 442 | ||
443 | if( mFace == TreeList ) | 443 | if( mFace == TreeList ) |
444 | { | 444 | { |
445 | InsertTreeListItem(items, pixmap, page); | 445 | InsertTreeListItem(items, pixmap, page); |
446 | } | 446 | } |
447 | else // mFace == IconList | 447 | else // mFace == IconList |
448 | { | 448 | { |
449 | QString itemName = items.last(); | 449 | QString itemName = items.last(); |
450 | IconListItem *item = new IconListItem( mIconList, pixmap, itemName ); | 450 | IconListItem *item = new IconListItem( mIconList, pixmap, itemName ); |
451 | // | 451 | // |
452 | // 2000-06-01 Espen Sand: If I do this with Qt 2.1.1 all sorts of | 452 | // 2000-06-01 Espen Sand: If I do this with Qt 2.1.1 all sorts of |
453 | // strange things happen. With Qt <= 2.1 it worked but now I must | 453 | // strange things happen. With Qt <= 2.1 it worked but now I must |
454 | // either specify the listbox in the constructor on the item | 454 | // either specify the listbox in the constructor on the item |
455 | // or as below, not both. | 455 | // or as below, not both. |
456 | // mIconList->insertItem( item ); | 456 | // mIconList->insertItem( item ); |
457 | // | 457 | // |
458 | mIconListToPageStack.insert(item, page); | 458 | mIconListToPageStack.insert(item, page); |
459 | mIconList->invalidateHeight(); | 459 | mIconList->invalidateHeight(); |
460 | mIconList->invalidateWidth(); | 460 | mIconList->invalidateWidth(); |
461 | 461 | ||
462 | if (mIconList->isVisible()) | 462 | if (mIconList->isVisible()) |
463 | mIconList->updateWidth(); | 463 | mIconList->updateWidth(); |
464 | } | 464 | } |
465 | 465 | ||
466 | // | 466 | // |
467 | // Make sure the title label is sufficiently wide | 467 | // Make sure the title label is sufficiently wide |
468 | // | 468 | // |
469 | QString lastName = items.last(); | 469 | QString lastName = items.last(); |
470 | const QString &title = (header != QString::null ? header : lastName); | 470 | const QString &title = (header != QString::null ? header : lastName); |
471 | QRect r = mTitleLabel->fontMetrics().boundingRect( title ); | 471 | QRect r = mTitleLabel->fontMetrics().boundingRect( title ); |
472 | if( mTitleLabel->minimumWidth() < r.width() ) | 472 | if( mTitleLabel->minimumWidth() < r.width() ) |
473 | { | 473 | { |
474 | mTitleLabel->setMinimumWidth( r.width() ); | 474 | mTitleLabel->setMinimumWidth( r.width() ); |
475 | } | 475 | } |
476 | mTitleList->append( title ); | 476 | mTitleList->append( title ); |
477 | 477 | ||
478 | if( mTitleList->count() == 1 ) | 478 | if( mTitleList->count() == 1 ) |
479 | { | 479 | { |
480 | showPage(0); | 480 | showPage(0); |
481 | } | 481 | } |
482 | } | 482 | } |
483 | else | 483 | else |
484 | { | 484 | { |
485 | qDebug( "OJanusWidget::addPageWidget: can only add a page in Tabbed, TreeList or IconList modes" ); | 485 | qDebug( "OJanusWidget::addPageWidget: can only add a page in Tabbed, TreeList or IconList modes" ); |
486 | } | 486 | } |
487 | 487 | ||
488 | } | 488 | } |
489 | 489 | ||
490 | void OJanusWidget::setFolderIcon(const QStringList &path, const QPixmap &pixmap) | 490 | void OJanusWidget::setFolderIcon(const QStringList &path, const QPixmap &pixmap) |
491 | { | 491 | { |
492 | QString key = path.join("_/_"); | 492 | QString key = path.join("_/_"); |
493 | mFolderIconMap.insert(key,pixmap); | 493 | mFolderIconMap.insert(key,pixmap); |
494 | } | 494 | } |
495 | 495 | ||
496 | 496 | ||
497 | 497 | ||
498 | bool OJanusWidget::setSwallowedWidget( QWidget *widget ) | 498 | bool OJanusWidget::setSwallowedWidget( QWidget *widget ) |
499 | { | 499 | { |
500 | if( mFace != Swallow || mValid == false ) | 500 | if( mFace != Swallow || mValid == false ) |
501 | { | 501 | { |
502 | return( false ); | 502 | return( false ); |
503 | } | 503 | } |
504 | 504 | ||
505 | // | 505 | // |
506 | // Remove current layout and make a new. | 506 | // Remove current layout and make a new. |
507 | // | 507 | // |
508 | if( mSwallowPage->layout() != 0 ) | 508 | if( mSwallowPage->layout() != 0 ) |
509 | { | 509 | { |
510 | delete mSwallowPage->layout(); | 510 | delete mSwallowPage->layout(); |
511 | } | 511 | } |
512 | QGridLayout *gbox = new QGridLayout( mSwallowPage, 1, 1, 0 ); | 512 | QGridLayout *gbox = new QGridLayout( mSwallowPage, 1, 1, 0 ); |
513 | 513 | ||
514 | // | 514 | // |
515 | // Hide old children | 515 | // Hide old children |
516 | // | 516 | // |
517 | QObjectList *l = (QObjectList*)mSwallowPage->children(); // silence please | 517 | QObjectList *l = (QObjectList*)mSwallowPage->children(); // silence please |
518 | for( uint i=0; i < l->count(); i++ ) | 518 | for( uint i=0; i < l->count(); i++ ) |
519 | { | 519 | { |
520 | QObject *o = l->at(i); | 520 | QObject *o = l->at(i); |
521 | if( o->isWidgetType() ) | 521 | if( o->isWidgetType() ) |
522 | { | 522 | { |
523 | ((QWidget*)o)->hide(); | 523 | ((QWidget*)o)->hide(); |
524 | } | 524 | } |
525 | } | 525 | } |
526 | 526 | ||
527 | // | 527 | // |
528 | // Add new child or make default size | 528 | // Add new child or make default size |
529 | // | 529 | // |
530 | if( widget == 0 ) | 530 | if( widget == 0 ) |
531 | { | 531 | { |
532 | gbox->addRowSpacing(0,100); | 532 | gbox->addRowSpacing(0,100); |
533 | gbox->addColSpacing(0,100); | 533 | gbox->addColSpacing(0,100); |
534 | mSwallowPage->setMinimumSize(100,100); | 534 | mSwallowPage->setMinimumSize(100,100); |
535 | } | 535 | } |
536 | else | 536 | else |
537 | { | 537 | { |
538 | if( widget->parent() != mSwallowPage ) | 538 | if( widget->parent() != mSwallowPage ) |
539 | { | 539 | { |
540 | widget->reparent( mSwallowPage, 0, QPoint(0,0) ); | 540 | widget->reparent( mSwallowPage, 0, QPoint(0,0) ); |
541 | } | 541 | } |
542 | gbox->addWidget(widget, 0, 0 ); | 542 | gbox->addWidget(widget, 0, 0 ); |
543 | gbox->activate(); | 543 | gbox->activate(); |
544 | mSwallowPage->setMinimumSize( widget->minimumSize() ); | 544 | mSwallowPage->setMinimumSize( widget->minimumSize() ); |
545 | } | 545 | } |
546 | 546 | ||
547 | return( true ); | 547 | return( true ); |
548 | } | 548 | } |
549 | 549 | ||
550 | bool OJanusWidget::slotShowPage() | 550 | bool OJanusWidget::slotShowPage() |
551 | { | 551 | { |
552 | if( mValid == false ) | 552 | if( mValid == false ) |
553 | { | 553 | { |
554 | return( false ); | 554 | return( false ); |
555 | } | 555 | } |
556 | 556 | ||
557 | if( mFace == TreeList ) | 557 | if( mFace == TreeList ) |
558 | { | 558 | { |
559 | QListViewItem *node = mTreeList->selectedItem(); | 559 | QListViewItem *node = mTreeList->selectedItem(); |
560 | if( node == 0 ) { return( false ); } | 560 | if( node == 0 ) { return( false ); } |
561 | 561 | ||
562 | QWidget *stackItem = mTreeListToPageStack[node]; | 562 | QWidget *stackItem = mTreeListToPageStack[node]; |
563 | return showPage(stackItem); | 563 | return showPage(stackItem); |
564 | } | 564 | } |
565 | else if( mFace == IconList ) | 565 | else if( mFace == IconList ) |
566 | { | 566 | { |
567 | QListBoxItem *node = mIconList->item( mIconList->currentItem() ); | 567 | QListBoxItem *node = mIconList->item( mIconList->currentItem() ); |
568 | if( node == 0 ) { return( false ); } | 568 | if( node == 0 ) { return( false ); } |
569 | QWidget *stackItem = mIconListToPageStack[node]; | 569 | QWidget *stackItem = mIconListToPageStack[node]; |
570 | return showPage(stackItem); | 570 | return showPage(stackItem); |
571 | } | 571 | } |
572 | 572 | ||
573 | return( false ); | 573 | return( false ); |
574 | } | 574 | } |
575 | 575 | ||
576 | 576 | ||
577 | bool OJanusWidget::showPage( int index ) | 577 | bool OJanusWidget::showPage( int index ) |
578 | { | 578 | { |
579 | if( mPageList == 0 || mValid == false ) | 579 | if( mPageList == 0 || mValid == false ) |
580 | { | 580 | { |
581 | return( false ); | 581 | return( false ); |
582 | } | 582 | } |
583 | else | 583 | else |
584 | { | 584 | { |
585 | return showPage(mPageList->at(index)); | 585 | return showPage(mPageList->at(index)); |
586 | } | 586 | } |
587 | } | 587 | } |
588 | 588 | ||
589 | 589 | ||
590 | bool OJanusWidget::showPage( QWidget *w ) | 590 | bool OJanusWidget::showPage( QWidget *w ) |
591 | { | 591 | { |
592 | if( w == 0 || mValid == false ) | 592 | if( w == 0 || mValid == false ) |
593 | { | 593 | { |
594 | return( false ); | 594 | return( false ); |
595 | } | 595 | } |
596 | 596 | ||
597 | if( mFace == TreeList || mFace == IconList ) | 597 | if( mFace == TreeList || mFace == IconList ) |
598 | { | 598 | { |
599 | mPageStack->raiseWidget( w ); | 599 | mPageStack->raiseWidget( w ); |
600 | mActivePageWidget = w; | 600 | mActivePageWidget = w; |
601 | 601 | ||
602 | int index = mPageList->findRef( w ); | 602 | int index = mPageList->findRef( w ); |
603 | mTitleLabel->setText( *mTitleList->at(index) ); | 603 | mTitleLabel->setText( *mTitleList->at(index) ); |
604 | if( mFace == TreeList ) | 604 | if( mFace == TreeList ) |
605 | { | 605 | { |
606 | QMap<QListViewItem *, QWidget *>::Iterator it; | 606 | QMap<QListViewItem *, QWidget *>::Iterator it; |
607 | for (it = mTreeListToPageStack.begin(); it != mTreeListToPageStack.end(); ++it){ | 607 | for (it = mTreeListToPageStack.begin(); it != mTreeListToPageStack.end(); ++it){ |
608 | QListViewItem *key = it.key(); | 608 | QListViewItem *key = it.key(); |
609 | QWidget *val = it.data(); | 609 | QWidget *val = it.data(); |
610 | if (val == w) { | 610 | if (val == w) { |
611 | mTreeList->setSelected(key, true ); | 611 | mTreeList->setSelected(key, true ); |
612 | break; | 612 | break; |
613 | } | 613 | } |
614 | } | 614 | } |
615 | } | 615 | } |
616 | else | 616 | else |
617 | { | 617 | { |
618 | QMap<QListBoxItem *, QWidget *>::Iterator it; | 618 | QMap<QListBoxItem *, QWidget *>::Iterator it; |
619 | for (it = mIconListToPageStack.begin(); it != mIconListToPageStack.end(); ++it){ | 619 | for (it = mIconListToPageStack.begin(); it != mIconListToPageStack.end(); ++it){ |
620 | QListBoxItem *key = it.key(); | 620 | QListBoxItem *key = it.key(); |
621 | QWidget *val = it.data(); | 621 | QWidget *val = it.data(); |
622 | if (val == w) { | 622 | if (val == w) { |
623 | mIconList->setSelected( key, true ); | 623 | mIconList->setSelected( key, true ); |
624 | break; | 624 | break; |
625 | } | 625 | } |
626 | } | 626 | } |
627 | 627 | ||
628 | // | 628 | // |
629 | // 2000-02-13 Espen Sand | 629 | // 2000-02-13 Espen Sand |
630 | // Don't ask me why (because I don't know). If I select a page | 630 | // Don't ask me why (because I don't know). If I select a page |
631 | // with the mouse the page is not updated until it receives an | 631 | // with the mouse the page is not updated until it receives an |
632 | // event. It seems this event get lost if the mouse is not moved | 632 | // event. It seems this event get lost if the mouse is not moved |
633 | // when released. The timer ensures the update | 633 | // when released. The timer ensures the update |
634 | // | 634 | // |
635 | QTimer::singleShot( 0, mActivePageWidget, SLOT(update()) ); | 635 | QTimer::singleShot( 0, mActivePageWidget, SLOT(update()) ); |
636 | } | 636 | } |
637 | } | 637 | } |
638 | else if( mFace == Tabbed ) | 638 | else if( mFace == Tabbed ) |
639 | { | 639 | { |
640 | mTabControl->showPage(w); | 640 | mTabControl->showPage(w); |
641 | mActivePageWidget = w; | 641 | mActivePageWidget = w; |
642 | } | 642 | } |
643 | else | 643 | else |
644 | { | 644 | { |
645 | return( false ); | 645 | return( false ); |
646 | } | 646 | } |
647 | 647 | ||
648 | return( true ); | 648 | return( true ); |
649 | } | 649 | } |
650 | 650 | ||
651 | 651 | ||
652 | int OJanusWidget::activePageIndex() const | 652 | int OJanusWidget::activePageIndex() const |
653 | { | 653 | { |
654 | if( mFace == TreeList) { | 654 | if( mFace == TreeList) { |
655 | QListViewItem *node = mTreeList->selectedItem(); | 655 | QListViewItem *node = mTreeList->selectedItem(); |
656 | if( node == 0 ) { return -1; } | 656 | if( node == 0 ) { return -1; } |
657 | QWidget *stackItem = mTreeListToPageStack[node]; | 657 | QWidget *stackItem = mTreeListToPageStack[node]; |
658 | return mPageList->findRef(stackItem); | 658 | return mPageList->findRef(stackItem); |
659 | } | 659 | } |
660 | else if (mFace == IconList) { | 660 | else if (mFace == IconList) { |
661 | QListBoxItem *node = mIconList->item( mIconList->currentItem() ); | 661 | QListBoxItem *node = mIconList->item( mIconList->currentItem() ); |
662 | if( node == 0 ) { return( false ); } | 662 | if( node == 0 ) { return( false ); } |
663 | QWidget *stackItem = mIconListToPageStack[node]; | 663 | QWidget *stackItem = mIconListToPageStack[node]; |
664 | return mPageList->findRef(stackItem); | 664 | return mPageList->findRef(stackItem); |
665 | } | 665 | } |
666 | else if( mFace == Tabbed ) { | 666 | else if( mFace == Tabbed ) { |
667 | QWidget *widget = mTabControl->currentPage(); | 667 | QWidget *widget = mTabControl->currentPage(); |
668 | return( widget == 0 ? -1 : mPageList->findRef( widget ) ); | 668 | return( widget == 0 ? -1 : mPageList->findRef( widget ) ); |
669 | } | 669 | } |
670 | else { | 670 | else { |
671 | return( -1 ); | 671 | return( -1 ); |
672 | } | 672 | } |
673 | } | 673 | } |
674 | 674 | ||
675 | 675 | ||
676 | int OJanusWidget::pageIndex( QWidget *widget ) const | 676 | int OJanusWidget::pageIndex( QWidget *widget ) const |
677 | { | 677 | { |
678 | if( widget == 0 ) | 678 | if( widget == 0 ) |
679 | { | 679 | { |
680 | return( -1 ); | 680 | return( -1 ); |
681 | } | 681 | } |
682 | else if( mFace == TreeList || mFace == IconList ) | 682 | else if( mFace == TreeList || mFace == IconList ) |
683 | { | 683 | { |
684 | return( mPageList->findRef( widget ) ); | 684 | return( mPageList->findRef( widget ) ); |
685 | } | 685 | } |
686 | else if( mFace == Tabbed ) | 686 | else if( mFace == Tabbed ) |
687 | { | 687 | { |
688 | // | 688 | // |
689 | // The user gets the real page widget with addVBoxPage(), addHBoxPage() | 689 | // The user gets the real page widget with addVBoxPage(), addHBoxPage() |
690 | // and addGridPage() but not with addPage() which returns a child of | 690 | // and addGridPage() but not with addPage() which returns a child of |
691 | // the toplevel page. addPage() returns a QFrame so I check for that. | 691 | // the toplevel page. addPage() returns a QFrame so I check for that. |
692 | // | 692 | // |
693 | if( widget->isA("QFrame") ) | 693 | if( widget->isA("QFrame") ) |
694 | { | 694 | { |
695 | return( mPageList->findRef( widget->parentWidget() ) ); | 695 | return( mPageList->findRef( widget->parentWidget() ) ); |
696 | } | 696 | } |
697 | else | 697 | else |
698 | { | 698 | { |
699 | return( mPageList->findRef( widget ) ); | 699 | return( mPageList->findRef( widget ) ); |
700 | } | 700 | } |
701 | } | 701 | } |
702 | else | 702 | else |
703 | { | 703 | { |
704 | return( -1 ); | 704 | return( -1 ); |
705 | } | 705 | } |
706 | } | 706 | } |
707 | 707 | ||
708 | void OJanusWidget::slotFontChanged() | 708 | void OJanusWidget::slotFontChanged() |
709 | { | 709 | { |
710 | #ifdef FIXME | 710 | #ifdef FIXME |
711 | 711 | ||
712 | if ( mTitleLabel != 0 ) | 712 | if ( mTitleLabel != 0 ) |
713 | { | 713 | { |
714 | mTitleLabel->setFont( KGlobalSettings::generalFont() ); | 714 | mTitleLabel->setFont( KGlobalSettings::generalFont() ); |
715 | QFont titleFont( mTitleLabel->font() ); | 715 | QFont titleFont( mTitleLabel->font() ); |
716 | titleFont.setBold( true ); | 716 | titleFont.setBold( true ); |
717 | mTitleLabel->setFont( titleFont ); | 717 | mTitleLabel->setFont( titleFont ); |
718 | } | 718 | } |
719 | #endif | 719 | #endif |
720 | 720 | ||
721 | if( mFace == IconList ) | 721 | if( mFace == IconList ) |
722 | { | 722 | { |
723 | QFont listFont( mIconList->font() ); | 723 | QFont listFont( mIconList->font() ); |
724 | listFont.setBold( true ); | 724 | listFont.setBold( true ); |
725 | mIconList->setFont( listFont ); | 725 | mIconList->setFont( listFont ); |
726 | mIconList->invalidateHeight(); | 726 | mIconList->invalidateHeight(); |
727 | mIconList->invalidateWidth(); | 727 | mIconList->invalidateWidth(); |
728 | } | 728 | } |
729 | } | 729 | } |
730 | 730 | ||
731 | // makes the treelist behave like the list of kcontrol | 731 | // makes the treelist behave like the list of kcontrol |
732 | void OJanusWidget::slotItemClicked(QListViewItem *it) | 732 | void OJanusWidget::slotItemClicked(QListViewItem *it) |
733 | { | 733 | { |
734 | if(it && (it->childCount()>0)) | 734 | if(it && (it->childCount()>0)) |
735 | it->setOpen(!it->isOpen()); | 735 | it->setOpen(!it->isOpen()); |
736 | } | 736 | } |
737 | 737 | ||
738 | void OJanusWidget::setFocus() | 738 | void OJanusWidget::setFocus() |
739 | { | 739 | { |
740 | if( mValid == false ) { return; } | 740 | if( mValid == false ) { return; } |
741 | if( mFace == TreeList ) | 741 | if( mFace == TreeList ) |
742 | { | 742 | { |
743 | mTreeList->setFocus(); | 743 | mTreeList->setFocus(); |
744 | } | 744 | } |
745 | if( mFace == IconList ) | 745 | if( mFace == IconList ) |
746 | { | 746 | { |
747 | mIconList->setFocus(); | 747 | mIconList->setFocus(); |
748 | } | 748 | } |
749 | else if( mFace == Tabbed ) | 749 | else if( mFace == Tabbed ) |
750 | { | 750 | { |
751 | mTabControl->setFocus(); | 751 | mTabControl->setFocus(); |
752 | } | 752 | } |
753 | else if( mFace == Swallow ) | 753 | else if( mFace == Swallow ) |
754 | { | 754 | { |
755 | mSwallowPage->setFocus(); | 755 | mSwallowPage->setFocus(); |
756 | } | 756 | } |
757 | else if( mFace == Plain ) | 757 | else if( mFace == Plain ) |
758 | { | 758 | { |
759 | mPlainPage->setFocus(); | 759 | mPlainPage->setFocus(); |
760 | } | 760 | } |
761 | } | 761 | } |
762 | 762 | ||
763 | 763 | ||
764 | QSize OJanusWidget::minimumSizeHint() const | 764 | QSize OJanusWidget::minimumSizeHint() const |
765 | { | 765 | { |
766 | if( mFace == TreeList || mFace == IconList ) | 766 | if( mFace == TreeList || mFace == IconList ) |
767 | { | 767 | { |
768 | QSize s1( ODialog::spacingHint(), ODialog::spacingHint()*2 ); | 768 | QSize s1( ODialog::spacingHint(), ODialog::spacingHint()*2 ); |
769 | QSize s2(0,0); | 769 | QSize s2(0,0); |
770 | QSize s3(0,0); | 770 | QSize s3(0,0); |
771 | QSize s4( mPageStack->sizeHint() ); | 771 | QSize s4( mPageStack->sizeHint() ); |
772 | 772 | ||
773 | if( mFace == TreeList ) | 773 | if( mFace == TreeList ) |
774 | { | 774 | { |
775 | #if QT_VERSION < 300 | 775 | #if QT_VERSION < 0x030000 |
776 | s1.rwidth() += style().splitterWidth(); | 776 | s1.rwidth() += style().splitterWidth(); |
777 | #else | 777 | #else |
778 | s1.rwidth() += style().pixelMetric( QStyle::PM_SplitterWidth ); | 778 | s1.rwidth() += style().pixelMetric( QStyle::PM_SplitterWidth ); |
779 | #endif | 779 | #endif |
780 | s2 = mTreeList->minimumSize(); | 780 | s2 = mTreeList->minimumSize(); |
781 | } | 781 | } |
782 | else | 782 | else |
783 | { | 783 | { |
784 | mIconList->updateMinimumHeight(); | 784 | mIconList->updateMinimumHeight(); |
785 | mIconList->updateWidth(); | 785 | mIconList->updateWidth(); |
786 | s2 = mIconList->minimumSize(); | 786 | s2 = mIconList->minimumSize(); |
787 | } | 787 | } |
788 | 788 | ||
789 | if( mTitleLabel->isVisible() == true ) | 789 | if( mTitleLabel->isVisible() == true ) |
790 | { | 790 | { |
791 | s3 += mTitleLabel->sizeHint(); | 791 | s3 += mTitleLabel->sizeHint(); |
792 | s3.rheight() += mTitleSep->minimumSize().height(); | 792 | s3.rheight() += mTitleSep->minimumSize().height(); |
793 | } | 793 | } |
794 | 794 | ||
795 | // | 795 | // |
796 | // Select the tallest item. It has only effect in IconList mode | 796 | // Select the tallest item. It has only effect in IconList mode |
797 | // | 797 | // |
798 | int h1 = s1.rheight() + s3.rheight() + s4.height(); | 798 | int h1 = s1.rheight() + s3.rheight() + s4.height(); |
799 | int h2 = QMAX( h1, s2.rheight() ); | 799 | int h2 = QMAX( h1, s2.rheight() ); |
800 | 800 | ||
801 | return( QSize( s1.width()+s2.width()+QMAX(s3.width(),s4.width()), h2 ) ); | 801 | return( QSize( s1.width()+s2.width()+QMAX(s3.width(),s4.width()), h2 ) ); |
802 | } | 802 | } |
803 | else if( mFace == Tabbed ) | 803 | else if( mFace == Tabbed ) |
804 | { | 804 | { |
805 | return( mTabControl->sizeHint() ); | 805 | return( mTabControl->sizeHint() ); |
806 | } | 806 | } |
807 | else if( mFace == Swallow ) | 807 | else if( mFace == Swallow ) |
808 | { | 808 | { |
809 | return( mSwallowPage->minimumSize() ); | 809 | return( mSwallowPage->minimumSize() ); |
810 | } | 810 | } |
811 | else if( mFace == Plain ) | 811 | else if( mFace == Plain ) |
812 | { | 812 | { |
813 | return( mPlainPage->sizeHint() ); | 813 | return( mPlainPage->sizeHint() ); |
814 | } | 814 | } |
815 | else | 815 | else |
816 | { | 816 | { |
817 | return( QSize( 100, 100 ) ); // Should never happen though. | 817 | return( QSize( 100, 100 ) ); // Should never happen though. |
818 | } | 818 | } |
819 | 819 | ||
820 | } | 820 | } |
821 | 821 | ||
822 | 822 | ||
823 | QSize OJanusWidget::sizeHint() const | 823 | QSize OJanusWidget::sizeHint() const |
824 | { | 824 | { |
825 | return( minimumSizeHint() ); | 825 | return( minimumSizeHint() ); |
826 | } | 826 | } |
827 | 827 | ||
828 | 828 | ||
829 | void OJanusWidget::setTreeListAutoResize( bool state ) | 829 | void OJanusWidget::setTreeListAutoResize( bool state ) |
830 | { | 830 | { |
831 | if( mFace == TreeList ) | 831 | if( mFace == TreeList ) |
832 | { | 832 | { |
833 | mTreeListResizeMode = state == false ? | 833 | mTreeListResizeMode = state == false ? |
834 | QSplitter::KeepSize : QSplitter::Stretch; | 834 | QSplitter::KeepSize : QSplitter::Stretch; |
835 | QSplitter *splitter = (QSplitter*)(mTreeList->parentWidget()); | 835 | QSplitter *splitter = (QSplitter*)(mTreeList->parentWidget()); |
836 | splitter->setResizeMode( mTreeList, mTreeListResizeMode ); | 836 | splitter->setResizeMode( mTreeList, mTreeListResizeMode ); |
837 | } | 837 | } |
838 | } | 838 | } |
839 | 839 | ||
840 | 840 | ||
841 | void OJanusWidget::setIconListAllVisible( bool state ) | 841 | void OJanusWidget::setIconListAllVisible( bool state ) |
842 | { | 842 | { |
843 | if( mFace == IconList ) | 843 | if( mFace == IconList ) |
844 | { | 844 | { |
845 | mIconList->setShowAll( state ); | 845 | mIconList->setShowAll( state ); |
846 | } | 846 | } |
847 | } | 847 | } |
848 | 848 | ||
849 | void OJanusWidget::setShowIconsInTreeList( bool state ) | 849 | void OJanusWidget::setShowIconsInTreeList( bool state ) |
850 | { | 850 | { |
851 | mShowIconsInTreeList = state; | 851 | mShowIconsInTreeList = state; |
852 | } | 852 | } |
853 | 853 | ||
854 | void OJanusWidget::setRootIsDecorated( bool state ) | 854 | void OJanusWidget::setRootIsDecorated( bool state ) |
855 | { | 855 | { |
856 | if( mFace == TreeList ) { | 856 | if( mFace == TreeList ) { |
857 | mTreeList->setRootIsDecorated(state); | 857 | mTreeList->setRootIsDecorated(state); |
858 | } | 858 | } |
859 | } | 859 | } |
860 | 860 | ||
861 | void OJanusWidget::unfoldTreeList( bool persist ) | 861 | void OJanusWidget::unfoldTreeList( bool persist ) |
862 | { | 862 | { |
863 | if( mFace == TreeList ) | 863 | if( mFace == TreeList ) |
864 | { | 864 | { |
865 | if( persist ) | 865 | if( persist ) |
866 | connect( mTreeList, SIGNAL( collapsed(QListViewItem*) ), this, SLOT( slotReopen(QListViewItem*) ) ); | 866 | connect( mTreeList, SIGNAL( collapsed(QListViewItem*) ), this, SLOT( slotReopen(QListViewItem*) ) ); |
867 | else | 867 | else |
868 | disconnect( mTreeList, SIGNAL( collapsed(QListViewItem*) ), this, SLOT( slotReopen(QListViewItem*) ) ); | 868 | disconnect( mTreeList, SIGNAL( collapsed(QListViewItem*) ), this, SLOT( slotReopen(QListViewItem*) ) ); |
869 | 869 | ||
870 | for( QListViewItem * item = mTreeList->firstChild(); item; item = item->itemBelow() ) | 870 | for( QListViewItem * item = mTreeList->firstChild(); item; item = item->itemBelow() ) |
871 | item->setOpen( true ); | 871 | item->setOpen( true ); |
872 | } | 872 | } |
873 | } | 873 | } |
874 | 874 | ||
875 | void OJanusWidget::showEvent( QShowEvent * ) | 875 | void OJanusWidget::showEvent( QShowEvent * ) |
876 | { | 876 | { |
877 | if( mFace == TreeList ) | 877 | if( mFace == TreeList ) |
878 | { | 878 | { |
879 | QSplitter *splitter = (QSplitter*)(mTreeList->parentWidget()); | 879 | QSplitter *splitter = (QSplitter*)(mTreeList->parentWidget()); |
880 | splitter->setResizeMode( mTreeList, mTreeListResizeMode ); | 880 | splitter->setResizeMode( mTreeList, mTreeListResizeMode ); |
881 | } | 881 | } |
882 | } | 882 | } |
883 | 883 | ||
884 | 884 | ||
885 | // | 885 | // |
886 | // 2000-13-02 Espen Sand | 886 | // 2000-13-02 Espen Sand |
887 | // It should be obvious that this eventfilter must only be | 887 | // It should be obvious that this eventfilter must only be |
888 | // be installed on the vertical scrollbar of the mIconList. | 888 | // be installed on the vertical scrollbar of the mIconList. |
889 | // | 889 | // |
890 | bool OJanusWidget::eventFilter( QObject *o, QEvent *e ) | 890 | bool OJanusWidget::eventFilter( QObject *o, QEvent *e ) |
891 | { | 891 | { |
892 | if( e->type() == QEvent::Show ) | 892 | if( e->type() == QEvent::Show ) |
893 | { | 893 | { |
894 | IconListItem *item = (IconListItem*)mIconList->item(0); | 894 | IconListItem *item = (IconListItem*)mIconList->item(0); |
895 | if( item != 0 ) | 895 | if( item != 0 ) |
896 | { | 896 | { |
897 | int lw = item->width( mIconList ); | 897 | int lw = item->width( mIconList ); |
898 | int sw = mIconList->verticalScrollBar()->sizeHint().width(); | 898 | int sw = mIconList->verticalScrollBar()->sizeHint().width(); |
899 | mIconList->setFixedWidth( lw+sw+mIconList->frameWidth()*2 ); | 899 | mIconList->setFixedWidth( lw+sw+mIconList->frameWidth()*2 ); |
900 | } | 900 | } |
901 | } | 901 | } |
902 | else if( e->type() == QEvent::Hide ) | 902 | else if( e->type() == QEvent::Hide ) |
903 | { | 903 | { |
904 | IconListItem *item = (IconListItem*)mIconList->item(0); | 904 | IconListItem *item = (IconListItem*)mIconList->item(0); |
905 | if( item != 0 ) | 905 | if( item != 0 ) |
906 | { | 906 | { |
907 | int lw = item->width( mIconList ); | 907 | int lw = item->width( mIconList ); |
908 | mIconList->setFixedWidth( lw+mIconList->frameWidth()*2 ); | 908 | mIconList->setFixedWidth( lw+mIconList->frameWidth()*2 ); |
909 | } | 909 | } |
910 | } | 910 | } |
911 | return QWidget::eventFilter( o, e ); | 911 | return QWidget::eventFilter( o, e ); |
912 | } | 912 | } |
913 | 913 | ||
914 | 914 | ||
915 | 915 | ||
916 | // | 916 | // |
917 | // Code for the icon list box | 917 | // Code for the icon list box |
918 | // | 918 | // |
919 | 919 | ||
920 | 920 | ||
921 | OJanusWidget::IconListBox::IconListBox( QWidget *parent, const char *name, | 921 | OJanusWidget::IconListBox::IconListBox( QWidget *parent, const char *name, |
922 | WFlags f ) | 922 | WFlags f ) |
923 | :QListBox( parent, name, f ), mShowAll(false), mHeightValid(false), | 923 | :QListBox( parent, name, f ), mShowAll(false), mHeightValid(false), |
924 | mWidthValid(false) | 924 | mWidthValid(false) |
925 | { | 925 | { |
926 | } | 926 | } |
927 | 927 | ||
928 | 928 | ||
929 | void OJanusWidget::IconListBox::updateMinimumHeight() | 929 | void OJanusWidget::IconListBox::updateMinimumHeight() |
930 | { | 930 | { |
931 | if( mShowAll == true && mHeightValid == false ) | 931 | if( mShowAll == true && mHeightValid == false ) |
932 | { | 932 | { |
933 | int h = frameWidth()*2; | 933 | int h = frameWidth()*2; |
934 | for( QListBoxItem *i = item(0); i != 0; i = i->next() ) | 934 | for( QListBoxItem *i = item(0); i != 0; i = i->next() ) |
935 | { | 935 | { |
936 | h += i->height( this ); | 936 | h += i->height( this ); |
937 | } | 937 | } |
938 | setMinimumHeight( h ); | 938 | setMinimumHeight( h ); |
939 | mHeightValid = true; | 939 | mHeightValid = true; |
940 | } | 940 | } |
941 | } | 941 | } |
942 | 942 | ||
943 | 943 | ||
944 | void OJanusWidget::IconListBox::updateWidth() | 944 | void OJanusWidget::IconListBox::updateWidth() |
945 | { | 945 | { |
946 | if( mWidthValid == false ) | 946 | if( mWidthValid == false ) |
947 | { | 947 | { |
948 | int maxWidth = 10; | 948 | int maxWidth = 10; |
949 | for( QListBoxItem *i = item(0); i != 0; i = i->next() ) | 949 | for( QListBoxItem *i = item(0); i != 0; i = i->next() ) |
950 | { | 950 | { |
951 | int w = ((IconListItem *)i)->width(this); | 951 | int w = ((IconListItem *)i)->width(this); |
952 | maxWidth = QMAX( w, maxWidth ); | 952 | maxWidth = QMAX( w, maxWidth ); |
953 | } | 953 | } |
954 | 954 | ||
955 | for( QListBoxItem *i = item(0); i != 0; i = i->next() ) | 955 | for( QListBoxItem *i = item(0); i != 0; i = i->next() ) |
956 | { | 956 | { |
957 | ((IconListItem *)i)->expandMinimumWidth( maxWidth ); | 957 | ((IconListItem *)i)->expandMinimumWidth( maxWidth ); |
958 | } | 958 | } |
959 | 959 | ||
960 | if( verticalScrollBar()->isVisible() ) | 960 | if( verticalScrollBar()->isVisible() ) |
961 | { | 961 | { |
962 | maxWidth += verticalScrollBar()->sizeHint().width(); | 962 | maxWidth += verticalScrollBar()->sizeHint().width(); |
963 | } | 963 | } |
964 | 964 | ||
965 | setFixedWidth( maxWidth + frameWidth()*2 ); | 965 | setFixedWidth( maxWidth + frameWidth()*2 ); |
966 | mWidthValid = true; | 966 | mWidthValid = true; |
967 | } | 967 | } |
968 | } | 968 | } |
969 | 969 | ||
970 | 970 | ||
971 | void OJanusWidget::IconListBox::invalidateHeight() | 971 | void OJanusWidget::IconListBox::invalidateHeight() |
972 | { | 972 | { |
973 | mHeightValid = false; | 973 | mHeightValid = false; |
974 | } | 974 | } |
975 | 975 | ||
976 | 976 | ||
977 | void OJanusWidget::IconListBox::invalidateWidth() | 977 | void OJanusWidget::IconListBox::invalidateWidth() |
978 | { | 978 | { |
979 | mWidthValid = false; | 979 | mWidthValid = false; |
980 | } | 980 | } |
981 | 981 | ||
982 | 982 | ||
983 | void OJanusWidget::IconListBox::setShowAll( bool showAll ) | 983 | void OJanusWidget::IconListBox::setShowAll( bool showAll ) |
984 | { | 984 | { |
985 | mShowAll = showAll; | 985 | mShowAll = showAll; |
986 | mHeightValid = false; | 986 | mHeightValid = false; |
987 | } | 987 | } |
988 | 988 | ||
989 | 989 | ||
990 | 990 | ||
991 | OJanusWidget::IconListItem::IconListItem( QListBox *listbox, const QPixmap &pixmap, | 991 | OJanusWidget::IconListItem::IconListItem( QListBox *listbox, const QPixmap &pixmap, |
992 | const QString &text ) | 992 | const QString &text ) |
993 | : QListBoxItem( listbox ) | 993 | : QListBoxItem( listbox ) |
994 | { | 994 | { |
995 | mPixmap = pixmap; | 995 | mPixmap = pixmap; |
996 | if( mPixmap.isNull() == true ) | 996 | if( mPixmap.isNull() == true ) |
997 | { | 997 | { |
998 | mPixmap = defaultPixmap(); | 998 | mPixmap = defaultPixmap(); |
999 | } | 999 | } |
1000 | setText( text ); | 1000 | setText( text ); |
1001 | mMinimumWidth = 0; | 1001 | mMinimumWidth = 0; |
1002 | } | 1002 | } |
1003 | 1003 | ||
1004 | 1004 | ||
1005 | int OJanusWidget::IconListItem::expandMinimumWidth( int width ) | 1005 | int OJanusWidget::IconListItem::expandMinimumWidth( int width ) |
1006 | { | 1006 | { |
1007 | mMinimumWidth = QMAX( mMinimumWidth, width ); | 1007 | mMinimumWidth = QMAX( mMinimumWidth, width ); |
1008 | return( mMinimumWidth ); | 1008 | return( mMinimumWidth ); |
1009 | } | 1009 | } |
1010 | 1010 | ||
1011 | 1011 | ||
1012 | const QPixmap &OJanusWidget::IconListItem::defaultPixmap() | 1012 | const QPixmap &OJanusWidget::IconListItem::defaultPixmap() |
1013 | { | 1013 | { |
1014 | static QPixmap *pix=0; | 1014 | static QPixmap *pix=0; |
1015 | if( pix == 0 ) | 1015 | if( pix == 0 ) |
1016 | { | 1016 | { |
1017 | pix = new QPixmap( 32, 32 ); | 1017 | pix = new QPixmap( 32, 32 ); |
1018 | QPainter p( pix ); | 1018 | QPainter p( pix ); |
1019 | p.eraseRect( 0, 0, pix->width(), pix->height() ); | 1019 | p.eraseRect( 0, 0, pix->width(), pix->height() ); |
1020 | p.setPen( Qt::red ); | 1020 | p.setPen( Qt::red ); |
1021 | p.drawRect ( 0, 0, pix->width(), pix->height() ); | 1021 | p.drawRect ( 0, 0, pix->width(), pix->height() ); |
1022 | p.end(); | 1022 | p.end(); |
1023 | 1023 | ||
1024 | QBitmap mask( pix->width(), pix->height(), true ); | 1024 | QBitmap mask( pix->width(), pix->height(), true ); |
1025 | mask.fill( Qt::black ); | 1025 | mask.fill( Qt::black ); |
1026 | p.begin( &mask ); | 1026 | p.begin( &mask ); |
1027 | p.setPen( Qt::white ); | 1027 | p.setPen( Qt::white ); |
1028 | p.drawRect ( 0, 0, pix->width(), pix->height() ); | 1028 | p.drawRect ( 0, 0, pix->width(), pix->height() ); |
1029 | p.end(); | 1029 | p.end(); |
1030 | 1030 | ||
1031 | pix->setMask( mask ); | 1031 | pix->setMask( mask ); |
1032 | } | 1032 | } |
1033 | return( *pix ); | 1033 | return( *pix ); |
1034 | } | 1034 | } |
1035 | 1035 | ||
1036 | 1036 | ||
1037 | void OJanusWidget::IconListItem::paint( QPainter *painter ) | 1037 | void OJanusWidget::IconListItem::paint( QPainter *painter ) |
1038 | { | 1038 | { |
1039 | QFontMetrics fm = painter->fontMetrics(); | 1039 | QFontMetrics fm = painter->fontMetrics(); |
1040 | //int wt = fm.boundingRect(text()).width(); | 1040 | //int wt = fm.boundingRect(text()).width(); |
1041 | int wp = mPixmap.width(); | 1041 | int wp = mPixmap.width(); |
1042 | int ht = fm.lineSpacing(); | 1042 | int ht = fm.lineSpacing(); |
1043 | int hp = mPixmap.height(); | 1043 | int hp = mPixmap.height(); |
1044 | 1044 | ||
1045 | painter->drawPixmap( (mMinimumWidth-wp)/2, 5, mPixmap ); | 1045 | painter->drawPixmap( (mMinimumWidth-wp)/2, 5, mPixmap ); |
1046 | if( text().isEmpty() == false ) | 1046 | if( text().isEmpty() == false ) |
1047 | { | 1047 | { |
1048 | painter->drawText( 0, hp+7, mMinimumWidth, ht, Qt::AlignCenter, text() ); | 1048 | painter->drawText( 0, hp+7, mMinimumWidth, ht, Qt::AlignCenter, text() ); |
1049 | } | 1049 | } |
1050 | } | 1050 | } |
1051 | 1051 | ||
1052 | int OJanusWidget::IconListItem::height( const QListBox *lb ) const | 1052 | int OJanusWidget::IconListItem::height( const QListBox *lb ) const |
1053 | { | 1053 | { |
1054 | if( text().isEmpty() == true ) | 1054 | if( text().isEmpty() == true ) |
1055 | { | 1055 | { |
1056 | return( mPixmap.height() ); | 1056 | return( mPixmap.height() ); |
1057 | } | 1057 | } |
1058 | else | 1058 | else |
1059 | { | 1059 | { |
1060 | return( mPixmap.height() + lb->fontMetrics().lineSpacing()+10 ); | 1060 | return( mPixmap.height() + lb->fontMetrics().lineSpacing()+10 ); |
1061 | } | 1061 | } |
1062 | } | 1062 | } |
1063 | 1063 | ||
1064 | 1064 | ||
1065 | int OJanusWidget::IconListItem::width( const QListBox *lb ) const | 1065 | int OJanusWidget::IconListItem::width( const QListBox *lb ) const |
1066 | { | 1066 | { |
1067 | int wt = lb->fontMetrics().boundingRect(text()).width()+10; | 1067 | int wt = lb->fontMetrics().boundingRect(text()).width()+10; |
1068 | int wp = mPixmap.width() + 10; | 1068 | int wp = mPixmap.width() + 10; |
1069 | int w = QMAX( wt, wp ); | 1069 | int w = QMAX( wt, wp ); |
1070 | return( QMAX( w, mMinimumWidth ) ); | 1070 | return( QMAX( w, mMinimumWidth ) ); |
1071 | } | 1071 | } |
1072 | 1072 | ||
1073 | // Just remove the page from our stack of widgets. Do not modify the given widget in | 1073 | // Just remove the page from our stack of widgets. Do not modify the given widget in |
1074 | // any way. No memory leak occurs as parent is not changed. | 1074 | // any way. No memory leak occurs as parent is not changed. |
1075 | // Make this virtual in KDE 4.0. | 1075 | // Make this virtual in KDE 4.0. |
1076 | // Ravikiran Rajagopal <ravi@ee.eng.ohio-state.edu> | 1076 | // Ravikiran Rajagopal <ravi@ee.eng.ohio-state.edu> |
1077 | void OJanusWidget::removePage( QWidget *page ) | 1077 | void OJanusWidget::removePage( QWidget *page ) |
1078 | { | 1078 | { |
1079 | if (!mPageList || !mPageList->containsRef(page)) | 1079 | if (!mPageList || !mPageList->containsRef(page)) |
1080 | return; | 1080 | return; |
1081 | 1081 | ||
1082 | int index = mPageList->findRef( page ); | 1082 | int index = mPageList->findRef( page ); |
1083 | if ( mTitleList ) | 1083 | if ( mTitleList ) |
1084 | mTitleList->remove(mTitleList->at(index)); | 1084 | mTitleList->remove(mTitleList->at(index)); |
1085 | 1085 | ||
1086 | mPageList->removeRef(page); | 1086 | mPageList->removeRef(page); |
1087 | 1087 | ||
1088 | if ( mFace == TreeList ) | 1088 | if ( mFace == TreeList ) |
1089 | { | 1089 | { |
1090 | QMap<QListViewItem*, QWidget *>::Iterator i; | 1090 | QMap<QListViewItem*, QWidget *>::Iterator i; |
1091 | for( i = mTreeListToPageStack.begin(); i != mTreeListToPageStack.end(); ++i ) | 1091 | for( i = mTreeListToPageStack.begin(); i != mTreeListToPageStack.end(); ++i ) |
1092 | if (i.data()==page) | 1092 | if (i.data()==page) |
1093 | { | 1093 | { |
1094 | delete i.key(); | 1094 | delete i.key(); |
1095 | mPageStack->removeWidget(page); | 1095 | mPageStack->removeWidget(page); |
1096 | mTreeListToPageStack.remove(i); | 1096 | mTreeListToPageStack.remove(i); |
1097 | break; | 1097 | break; |
1098 | } | 1098 | } |
1099 | } | 1099 | } |
1100 | else if ( mFace == IconList ) | 1100 | else if ( mFace == IconList ) |
1101 | { | 1101 | { |
1102 | QMap<QListBoxItem*, QWidget *>::Iterator i; | 1102 | QMap<QListBoxItem*, QWidget *>::Iterator i; |
1103 | for( i = mIconListToPageStack.begin(); i != mIconListToPageStack.end(); ++i ) | 1103 | for( i = mIconListToPageStack.begin(); i != mIconListToPageStack.end(); ++i ) |
1104 | if (i.data()==page) | 1104 | if (i.data()==page) |
1105 | { | 1105 | { |
1106 | delete i.key(); | 1106 | delete i.key(); |
1107 | mPageStack->removeWidget(page); | 1107 | mPageStack->removeWidget(page); |
1108 | mIconListToPageStack.remove(i); | 1108 | mIconListToPageStack.remove(i); |
1109 | break; | 1109 | break; |
1110 | } | 1110 | } |
1111 | } | 1111 | } |
1112 | else // Tabbed | 1112 | else // Tabbed |
1113 | { | 1113 | { |
1114 | mTabControl->removePage(page); | 1114 | mTabControl->removePage(page); |
1115 | } | 1115 | } |
1116 | } | 1116 | } |