-rw-r--r-- | noncore/settings/appearance2/appearance.cpp | 162 | ||||
-rw-r--r-- | noncore/settings/appearance2/stylelistitem.h | 8 | ||||
-rw-r--r-- | noncore/settings/aqpkg/categoryfilterimpl.cpp | 20 | ||||
-rw-r--r-- | noncore/settings/aqpkg/instoptionsimpl.cpp | 16 | ||||
-rw-r--r-- | noncore/settings/aqpkg/mainwin.cpp | 38 | ||||
-rw-r--r-- | noncore/settings/aqpkg/settingsimpl.cpp | 35 | ||||
-rw-r--r-- | noncore/settings/backup/backuprestore.cpp | 17 | ||||
-rw-r--r-- | noncore/settings/networksettings/ppp/devices.cpp | 25 | ||||
-rw-r--r-- | noncore/settings/networksettings/ppp/edit.cpp | 233 | ||||
-rw-r--r-- | noncore/settings/sysinfo/modulesinfo.cpp | 16 | ||||
-rw-r--r-- | noncore/settings/sysinfo/processinfo.cpp | 14 | ||||
-rw-r--r-- | noncore/settings/usermanager/userdialog.cpp | 149 |
12 files changed, 462 insertions, 271 deletions
diff --git a/noncore/settings/appearance2/appearance.cpp b/noncore/settings/appearance2/appearance.cpp index 9e5eede..ba12e55 100644 --- a/noncore/settings/appearance2/appearance.cpp +++ b/noncore/settings/appearance2/appearance.cpp | |||
@@ -6,213 +6,220 @@ | |||
6 | .>+-= | 6 | .>+-= |
7 | _;:, .> :=|. This file is free software; you can | 7 | _;:, .> :=|. This file 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 General Public | 9 | :`=1 )Y*s>-.-- : the terms of the GNU 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 file is distributed in the hope that | 14 | .i_,=:_. -<s. This file 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 General | 18 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU General |
19 | ..}^=.= = ; Public License for more details. | 19 | ..}^=.= = ; Public License for more details. |
20 | ++= -. .` .: | 20 | ++= -. .` .: |
21 | : = ...= . :.=- You should have received a copy of the GNU | 21 | : = ...= . :.=- You should have received a copy of the GNU |
22 | -. .:....=;==+<; General Public License along with this file; | 22 | -. .:....=;==+<; General Public License along with this file; |
23 | -_. . . )=. = see the file COPYING. If not, write to the | 23 | -_. . . )=. = see the file COPYING. If not, write to the |
24 | -- :-=` Free Software Foundation, Inc., | 24 | -- :-=` Free Software Foundation, Inc., |
25 | 59 Temple Place - Suite 330, | 25 | 59 Temple Place - Suite 330, |
26 | Boston, MA 02111-1307, USA. | 26 | Boston, MA 02111-1307, USA. |
27 | 27 | ||
28 | */ | 28 | */ |
29 | 29 | ||
30 | #include "appearance.h" | ||
31 | #include "editScheme.h" | ||
32 | #include "stylelistitem.h" | ||
33 | #include "decolistitem.h" | ||
34 | #include "colorlistitem.h" | ||
35 | #include "exceptlistitem.h" | ||
36 | #include "sample.h" | ||
37 | |||
38 | /* OPIE */ | ||
39 | #include <opie/ofontselector.h> | ||
40 | #include <opie/odevice.h> | ||
41 | #include <opie/ofiledialog.h> | ||
42 | #include <opie/otabwidget.h> | ||
43 | |||
44 | #include <qpe/config.h> | ||
45 | #include <qpe/global.h> | ||
46 | #include <qpe/qpeapplication.h> | ||
47 | #include <qpe/qpemessagebox.h> | ||
48 | #include <qpe/qcopenvelope_qws.h> | ||
49 | #include <qpe/qpestyle.h> | ||
50 | #include <qpe/lightstyle.h> | ||
51 | #include <qpe/styleinterface.h> | ||
52 | |||
53 | /* QT */ | ||
30 | #include <qbuttongroup.h> | 54 | #include <qbuttongroup.h> |
31 | #include <qcheckbox.h> | 55 | #include <qcheckbox.h> |
32 | #include <qcombobox.h> | 56 | #include <qcombobox.h> |
33 | #include <qdialog.h> | 57 | #include <qdialog.h> |
34 | #include <qdir.h> | 58 | #include <qdir.h> |
35 | #include <qlabel.h> | 59 | #include <qlabel.h> |
36 | #include <qlayout.h> | 60 | #include <qlayout.h> |
37 | #include <qlineedit.h> | 61 | #include <qlineedit.h> |
38 | #include <qlistbox.h> | 62 | #include <qlistbox.h> |
39 | #include <qmessagebox.h> | 63 | #include <qmessagebox.h> |
40 | #include <qpushbutton.h> | 64 | #include <qpushbutton.h> |
41 | #include <qradiobutton.h> | 65 | #include <qradiobutton.h> |
42 | #if QT_VERSION >= 300 | 66 | #if QT_VERSION >= 300 |
43 | #include <qstylefactory.h> | 67 | #include <qstylefactory.h> |
44 | #endif | 68 | #endif |
45 | #include <qtoolbutton.h> | 69 | #include <qtoolbutton.h> |
46 | #include <qwindowsstyle.h> | 70 | #include <qwindowsstyle.h> |
47 | #include <qlistview.h> | 71 | #include <qlistview.h> |
48 | #include <qheader.h> | 72 | #include <qheader.h> |
49 | #include <qvbox.h> | 73 | #include <qvbox.h> |
50 | #include <qwhatsthis.h> | 74 | #include <qwhatsthis.h> |
51 | 75 | ||
52 | #include <qpe/config.h> | ||
53 | #include <qpe/global.h> | ||
54 | #include <qpe/resource.h> | ||
55 | #include <qpe/qpeapplication.h> | ||
56 | #include <qpe/qpemessagebox.h> | ||
57 | #include <qpe/qcopenvelope_qws.h> | ||
58 | #include <qpe/qpestyle.h> | ||
59 | #include <qpe/lightstyle.h> | ||
60 | #include <qpe/qlibrary.h> | ||
61 | #include <qpe/styleinterface.h> | ||
62 | |||
63 | #include <opie/ofontselector.h> | ||
64 | #include <opie/odevice.h> | ||
65 | #include <opie/ofiledialog.h> | ||
66 | #include <opie/otabwidget.h> | ||
67 | |||
68 | #include "appearance.h" | ||
69 | #include "editScheme.h" | ||
70 | #include "stylelistitem.h" | ||
71 | #include "decolistitem.h" | ||
72 | #include "colorlistitem.h" | ||
73 | #include "exceptlistitem.h" | ||
74 | #include "sample.h" | ||
75 | |||
76 | |||
77 | using namespace Opie; | 76 | using namespace Opie; |
78 | 77 | ||
79 | 78 | ||
80 | class DefaultWindowDecoration : public WindowDecorationInterface | 79 | class DefaultWindowDecoration : public WindowDecorationInterface |
81 | { | 80 | { |
82 | public: | 81 | public: |
83 | DefaultWindowDecoration() : ref(0) {} | 82 | DefaultWindowDecoration() : ref(0) {} |
84 | QString name() const { | 83 | QString name() const |
84 | { | ||
85 | return "Default"; | 85 | return "Default"; |
86 | } | 86 | } |
87 | QPixmap icon() const { | 87 | QPixmap icon() const |
88 | { | ||
88 | return QPixmap(); | 89 | return QPixmap(); |
89 | } | 90 | } |
90 | QRESULT queryInterface( const QUuid &uuid, QUnknownInterface **iface ) { | 91 | QRESULT queryInterface( const QUuid &uuid, QUnknownInterface **iface ) |
92 | { | ||
91 | *iface = 0; | 93 | *iface = 0; |
92 | if ( uuid == IID_QUnknown ) | 94 | if ( uuid == IID_QUnknown ) |
93 | *iface = this; | 95 | *iface = this; |
94 | else if ( uuid == IID_WindowDecoration ) | 96 | else if ( uuid == IID_WindowDecoration ) |
95 | *iface = this; | 97 | *iface = this; |
96 | 98 | ||
97 | if ( *iface ) | 99 | if ( *iface ) |
98 | (*iface)->addRef(); | 100 | (*iface)->addRef(); |
99 | return QS_OK; | 101 | return QS_OK; |
100 | } | 102 | } |
101 | Q_REFCOUNT | 103 | Q_REFCOUNT |
102 | 104 | ||
103 | private: | 105 | private: |
104 | ulong ref; | 106 | ulong ref; |
105 | }; | 107 | }; |
106 | 108 | ||
107 | 109 | ||
108 | 110 | ||
109 | 111 | ||
110 | 112 | ||
111 | 113 | ||
112 | 114 | ||
113 | QWidget *Appearance::createStyleTab ( QWidget *parent, Config &cfg ) | 115 | QWidget *Appearance::createStyleTab ( QWidget *parent, Config &cfg ) |
114 | { | 116 | { |
115 | QWidget* tab = new QWidget( parent, "StyleTab" ); | 117 | QWidget* tab = new QWidget( parent, "StyleTab" ); |
116 | QVBoxLayout* vertLayout = new QVBoxLayout( tab, 3, 3 ); | 118 | QVBoxLayout* vertLayout = new QVBoxLayout( tab, 3, 3 ); |
117 | 119 | ||
118 | m_style_list = new QListBox( tab, "m_style_list" ); | 120 | m_style_list = new QListBox( tab, "m_style_list" ); |
119 | vertLayout->addWidget( m_style_list ); | 121 | vertLayout->addWidget( m_style_list ); |
120 | QWhatsThis::add( m_style_list, tr( "Styles control the way items such as buttons and scroll bars appear in all applications.\n\nClick here to select an available style." ) ); | 122 | QWhatsThis::add( m_style_list, tr( "Styles control the way items such as buttons and scroll bars appear in all applications.\n\nClick here to select an available style." ) ); |
121 | 123 | ||
122 | m_style_settings = new QPushButton ( tr( "Settings..." ), tab ); | 124 | m_style_settings = new QPushButton ( tr( "Settings..." ), tab ); |
123 | connect ( m_style_settings, SIGNAL( clicked ( )), this, SLOT( styleSettingsClicked ( ))); | 125 | connect ( m_style_settings, SIGNAL( clicked ( )), this, SLOT( styleSettingsClicked ( ))); |
124 | vertLayout-> addWidget ( m_style_settings ); | 126 | vertLayout-> addWidget ( m_style_settings ); |
125 | QWhatsThis::add( m_style_settings, tr( "Click here to configure the currently selected style.\n\nNote: This option is not available for all styles." ) ); | 127 | QWhatsThis::add( m_style_settings, tr( "Click here to configure the currently selected style.\n\nNote: This option is not available for all styles." ) ); |
126 | 128 | ||
127 | QString s = cfg. readEntry ( "Style", "Light" ); | 129 | QString s = cfg. readEntry ( "Style", "Light" ); |
128 | 130 | ||
129 | 131 | ||
130 | #if QT_VERSION >= 300 | 132 | #if QT_VERSION >= 300 |
131 | m_style_list->insertStringList(QStyleFactory::styles()); | 133 | m_style_list->insertStringList(QStyleFactory::styles()); |
132 | #else | 134 | #else |
133 | m_style_list-> insertItem ( new StyleListItem ( "Windows", new QWindowsStyle ( ))); | 135 | m_style_list-> insertItem ( new StyleListItem ( "Windows", new QWindowsStyle ( ))); |
134 | m_style_list-> insertItem ( new StyleListItem ( "Light", new LightStyle ( ))); | 136 | m_style_list-> insertItem ( new StyleListItem ( "Light", new LightStyle ( ))); |
135 | m_style_list-> insertItem ( new StyleListItem ( "QPE", new QPEStyle ( ))); | 137 | m_style_list-> insertItem ( new StyleListItem ( "QPE", new QPEStyle ( ))); |
136 | #endif | 138 | #endif |
139 | |||
137 | { | 140 | { |
138 | QString path = QPEApplication::qpeDir ( ); | 141 | QString path = QPEApplication::qpeDir ( ); |
139 | path.append( "/plugins/styles/" ); | 142 | path.append( "/plugins/styles/" ); |
140 | QStringList sl = QDir ( path, "lib*.so" ). entryList ( ); | 143 | QStringList sl = QDir ( path, "lib*.so" ). entryList ( ); |
141 | 144 | ||
142 | for ( QStringList::Iterator it = sl. begin ( ); it != sl. end ( ); ++it ) { | 145 | for ( QStringList::Iterator it = sl. begin ( ); it != sl. end ( ); ++it ) |
146 | { | ||
143 | QString libstr = path; | 147 | QString libstr = path; |
144 | libstr.append( "/" ); | 148 | libstr.append( "/" ); |
145 | libstr.append( *it ); | 149 | libstr.append( *it ); |
146 | QLibrary *lib = new QLibrary ( libstr ); | 150 | QLibrary *lib = new QLibrary ( libstr ); |
147 | StyleInterface *iface; | 151 | StyleInterface *iface; |
148 | 152 | ||
149 | if (( lib-> queryInterface ( IID_Style, (QUnknownInterface **) &iface ) == QS_OK ) && iface ) { | 153 | if (( lib-> queryInterface ( IID_Style, (QUnknownInterface **) &iface ) == QS_OK ) && iface ) |
154 | { | ||
150 | StyleListItem *slit = new StyleListItem ( lib, iface ); | 155 | StyleListItem *slit = new StyleListItem ( lib, iface ); |
151 | m_style_list-> insertItem ( slit ); | 156 | m_style_list-> insertItem ( slit ); |
152 | 157 | ||
153 | if ( slit-> key ( ) == s ) | 158 | if ( slit-> key ( ) == s ) |
154 | m_style_list-> setCurrentItem ( slit ); | 159 | m_style_list-> setCurrentItem ( slit ); |
155 | } | 160 | } |
156 | else | 161 | else |
157 | delete lib; | 162 | delete lib; |
158 | } | 163 | } |
159 | } | 164 | } |
160 | 165 | ||
161 | m_original_style = m_style_list-> currentItem ( ); | 166 | m_original_style = m_style_list-> currentItem ( ); |
162 | styleClicked ( m_original_style ); | 167 | styleClicked ( m_original_style ); |
163 | 168 | ||
164 | connect( m_style_list, SIGNAL( highlighted( int ) ), this, SLOT( styleClicked( int ) ) ); | 169 | connect( m_style_list, SIGNAL( highlighted( int ) ), this, SLOT( styleClicked( int ) ) ); |
165 | 170 | ||
166 | return tab; | 171 | return tab; |
167 | } | 172 | } |
168 | 173 | ||
169 | QWidget *Appearance::createDecoTab ( QWidget *parent, Config &cfg ) | 174 | QWidget *Appearance::createDecoTab ( QWidget *parent, Config &cfg ) |
170 | { | 175 | { |
171 | QWidget* tab = new QWidget( parent, "DecoTab" ); | 176 | QWidget* tab = new QWidget( parent, "DecoTab" ); |
172 | QVBoxLayout* vertLayout = new QVBoxLayout( tab, 3, 3 ); | 177 | QVBoxLayout* vertLayout = new QVBoxLayout( tab, 3, 3 ); |
173 | 178 | ||
174 | m_deco_list = new QListBox( tab, "m_deco_list" ); | 179 | m_deco_list = new QListBox( tab, "m_deco_list" ); |
175 | vertLayout->addWidget( m_deco_list ); | 180 | vertLayout->addWidget( m_deco_list ); |
176 | QWhatsThis::add( m_deco_list, tr( "Window decorations control the way the application title bar and its buttons appear.\n\nClick here to select an available decoration." ) ); | 181 | QWhatsThis::add( m_deco_list, tr( "Window decorations control the way the application title bar and its buttons appear.\n\nClick here to select an available decoration." ) ); |
177 | 182 | ||
178 | QString s = cfg. readEntry ( "Decoration", "libflat.so" ); | 183 | QString s = cfg. readEntry ( "Decoration", "libflat.so" ); |
179 | 184 | ||
180 | m_deco_list-> insertItem ( new DecoListItem ( "QPE" )); | 185 | m_deco_list-> insertItem ( new DecoListItem ( "QPE" )); |
181 | 186 | ||
182 | { | 187 | { |
183 | QString path = QPEApplication::qpeDir(); | 188 | QString path = QPEApplication::qpeDir(); |
184 | path.append( "/plugins/decorations/" ); | 189 | path.append( "/plugins/decorations/" ); |
185 | QStringList sl = QDir ( path, "lib*.so" ). entryList ( ); | 190 | QStringList sl = QDir ( path, "lib*.so" ). entryList ( ); |
186 | 191 | ||
187 | for ( QStringList::Iterator it = sl. begin ( ); it != sl. end ( ); ++it ) { | 192 | for ( QStringList::Iterator it = sl. begin ( ); it != sl. end ( ); ++it ) |
193 | { | ||
188 | QString libstr = path; | 194 | QString libstr = path; |
189 | libstr.append( "/" ); | 195 | libstr.append( "/" ); |
190 | libstr.append( *it ); | 196 | libstr.append( *it ); |
191 | QLibrary *lib = new QLibrary ( libstr ); | 197 | QLibrary *lib = new QLibrary ( libstr ); |
192 | WindowDecorationInterface *iface; | 198 | WindowDecorationInterface *iface; |
193 | 199 | ||
194 | if ( lib-> queryInterface ( IID_WindowDecoration, (QUnknownInterface **) &iface ) == QS_OK ) { | 200 | if ( lib-> queryInterface ( IID_WindowDecoration, (QUnknownInterface **) &iface ) == QS_OK ) |
201 | { | ||
195 | DecoListItem *dlit = new DecoListItem ( lib, iface ); | 202 | DecoListItem *dlit = new DecoListItem ( lib, iface ); |
196 | m_deco_list-> insertItem ( dlit ); | 203 | m_deco_list-> insertItem ( dlit ); |
197 | 204 | ||
198 | if ( dlit-> key ( ) == s ) | 205 | if ( dlit-> key ( ) == s ) |
199 | m_deco_list-> setCurrentItem ( dlit ); | 206 | m_deco_list-> setCurrentItem ( dlit ); |
200 | } | 207 | } |
201 | else | 208 | else |
202 | delete lib; | 209 | delete lib; |
203 | } | 210 | } |
204 | } | 211 | } |
205 | 212 | ||
206 | m_original_deco = m_deco_list-> currentItem ( ); | 213 | m_original_deco = m_deco_list-> currentItem ( ); |
207 | if ( m_deco_list-> currentItem ( ) < 0 ) | 214 | if ( m_deco_list-> currentItem ( ) < 0 ) |
208 | m_deco_list-> setCurrentItem ( 0 ); | 215 | m_deco_list-> setCurrentItem ( 0 ); |
209 | decoClicked ( m_original_deco ); | 216 | decoClicked ( m_original_deco ); |
210 | 217 | ||
211 | connect( m_deco_list, SIGNAL( highlighted( int ) ), this, SLOT( decoClicked( int ) ) ); | 218 | connect( m_deco_list, SIGNAL( highlighted( int ) ), this, SLOT( decoClicked( int ) ) ); |
212 | 219 | ||
213 | return tab; | 220 | return tab; |
214 | } | 221 | } |
215 | 222 | ||
216 | QWidget *Appearance::createFontTab ( QWidget *parent, Config &cfg ) | 223 | QWidget *Appearance::createFontTab ( QWidget *parent, Config &cfg ) |
217 | { | 224 | { |
218 | QString familyStr = cfg. readEntry ( "FontFamily", "Helvetica" ); | 225 | QString familyStr = cfg. readEntry ( "FontFamily", "Helvetica" ); |
@@ -225,49 +232,50 @@ QWidget *Appearance::createFontTab ( QWidget *parent, Config &cfg ) | |||
225 | 232 | ||
226 | connect( m_fontselect, SIGNAL( fontSelected ( const QFont & )), | 233 | connect( m_fontselect, SIGNAL( fontSelected ( const QFont & )), |
227 | this, SLOT( fontClicked ( const QFont & ))); | 234 | this, SLOT( fontClicked ( const QFont & ))); |
228 | 235 | ||
229 | return m_fontselect; | 236 | return m_fontselect; |
230 | } | 237 | } |
231 | 238 | ||
232 | QWidget *Appearance::createColorTab ( QWidget *parent, Config &cfg ) | 239 | QWidget *Appearance::createColorTab ( QWidget *parent, Config &cfg ) |
233 | { | 240 | { |
234 | QWidget *tab = new QWidget( parent, "ColorTab" ); | 241 | QWidget *tab = new QWidget( parent, "ColorTab" ); |
235 | QGridLayout *gridLayout = new QGridLayout( tab, 0, 0, 3, 3 ); | 242 | QGridLayout *gridLayout = new QGridLayout( tab, 0, 0, 3, 3 ); |
236 | gridLayout->setRowStretch ( 3, 10 ); | 243 | gridLayout->setRowStretch ( 3, 10 ); |
237 | 244 | ||
238 | m_color_list = new QListBox ( tab ); | 245 | m_color_list = new QListBox ( tab ); |
239 | gridLayout->addMultiCellWidget ( m_color_list, 0, 3, 0, 0 ); | 246 | gridLayout->addMultiCellWidget ( m_color_list, 0, 3, 0, 0 ); |
240 | connect( m_color_list, SIGNAL( highlighted( int ) ), this, SLOT( colorClicked( int ) ) ); | 247 | connect( m_color_list, SIGNAL( highlighted( int ) ), this, SLOT( colorClicked( int ) ) ); |
241 | QWhatsThis::add( m_color_list, tr( "Color schemes are a collection of colors which are used for various parts of the display.\n\nClick here to select an available scheme." ) ); | 248 | QWhatsThis::add( m_color_list, tr( "Color schemes are a collection of colors which are used for various parts of the display.\n\nClick here to select an available scheme." ) ); |
242 | 249 | ||
243 | m_color_list-> insertItem ( new ColorListItem ( tr( "Current scheme" ), cfg )); | 250 | m_color_list-> insertItem ( new ColorListItem ( tr( "Current scheme" ), cfg )); |
244 | 251 | ||
245 | QString path = QPEApplication::qpeDir ( ); | 252 | QString path = QPEApplication::qpeDir ( ); |
246 | path.append( "/etc/colors/" ); | 253 | path.append( "/etc/colors/" ); |
247 | QStringList sl = QDir ( path ). entryList ( "*.scheme" ); | 254 | QStringList sl = QDir ( path ). entryList ( "*.scheme" ); |
248 | 255 | ||
249 | for ( QStringList::Iterator it = sl. begin ( ); it != sl. end ( ); ++it ) { | 256 | for ( QStringList::Iterator it = sl. begin ( ); it != sl. end ( ); ++it ) |
257 | { | ||
250 | QString name = (*it). left ((*it). find ( ".scheme" )); | 258 | QString name = (*it). left ((*it). find ( ".scheme" )); |
251 | QString pathstr = path; | 259 | QString pathstr = path; |
252 | pathstr.append( *it ); | 260 | pathstr.append( *it ); |
253 | Config config ( pathstr, Config::File ); | 261 | Config config ( pathstr, Config::File ); |
254 | config. setGroup ( "Colors" ); | 262 | config. setGroup ( "Colors" ); |
255 | 263 | ||
256 | m_color_list-> insertItem ( new ColorListItem ( name, config )); | 264 | m_color_list-> insertItem ( new ColorListItem ( name, config )); |
257 | } | 265 | } |
258 | 266 | ||
259 | m_color_list-> setCurrentItem ( 0 ); | 267 | m_color_list-> setCurrentItem ( 0 ); |
260 | 268 | ||
261 | QPushButton* tempButton = new QPushButton( tab, "editSchemeButton" ); | 269 | QPushButton* tempButton = new QPushButton( tab, "editSchemeButton" ); |
262 | tempButton->setText( tr( "Edit..." ) ); | 270 | tempButton->setText( tr( "Edit..." ) ); |
263 | connect( tempButton, SIGNAL( clicked() ), this, SLOT( editSchemeClicked() ) ); | 271 | connect( tempButton, SIGNAL( clicked() ), this, SLOT( editSchemeClicked() ) ); |
264 | gridLayout->addWidget( tempButton, 0, 1 ); | 272 | gridLayout->addWidget( tempButton, 0, 1 ); |
265 | QWhatsThis::add( tempButton, tr( "Click here to change the colors in the current color scheme." ) ); | 273 | QWhatsThis::add( tempButton, tr( "Click here to change the colors in the current color scheme." ) ); |
266 | 274 | ||
267 | tempButton = new QPushButton( tab, "deleteSchemeButton" ); | 275 | tempButton = new QPushButton( tab, "deleteSchemeButton" ); |
268 | tempButton->setText( tr( "Delete" ) ); | 276 | tempButton->setText( tr( "Delete" ) ); |
269 | connect( tempButton, SIGNAL( clicked() ), this, SLOT( deleteSchemeClicked() ) ); | 277 | connect( tempButton, SIGNAL( clicked() ), this, SLOT( deleteSchemeClicked() ) ); |
270 | gridLayout->addWidget( tempButton, 1, 1 ); | 278 | gridLayout->addWidget( tempButton, 1, 1 ); |
271 | QWhatsThis::add( tempButton, tr( "Click here to delete the color scheme selected in the list to the left." ) ); | 279 | QWhatsThis::add( tempButton, tr( "Click here to delete the color scheme selected in the list to the left." ) ); |
272 | 280 | ||
273 | tempButton = new QPushButton( tab, "saveSchemeButton" ); | 281 | tempButton = new QPushButton( tab, "saveSchemeButton" ); |
@@ -327,49 +335,50 @@ QWidget *Appearance::createAdvancedTab ( QWidget *parent, Config &cfg ) | |||
327 | tb-> setFocusPolicy ( QWidget::StrongFocus ); | 335 | tb-> setFocusPolicy ( QWidget::StrongFocus ); |
328 | lay-> addWidget ( tb, 3, 1 ); | 336 | lay-> addWidget ( tb, 3, 1 ); |
329 | connect ( tb, SIGNAL( clicked ( )), this, SLOT( delExcept ( ))); | 337 | connect ( tb, SIGNAL( clicked ( )), this, SLOT( delExcept ( ))); |
330 | QWhatsThis::add( tb, tr( "Click here to delete the currently selected application." ) ); | 338 | QWhatsThis::add( tb, tr( "Click here to delete the currently selected application." ) ); |
331 | 339 | ||
332 | tb = new QToolButton ( tab ); | 340 | tb = new QToolButton ( tab ); |
333 | tb-> setIconSet ( Resource::loadIconSet ( "up" )); | 341 | tb-> setIconSet ( Resource::loadIconSet ( "up" )); |
334 | tb-> setFocusPolicy ( QWidget::StrongFocus ); | 342 | tb-> setFocusPolicy ( QWidget::StrongFocus ); |
335 | lay-> addWidget ( tb, 4, 1 ); | 343 | lay-> addWidget ( tb, 4, 1 ); |
336 | connect ( tb, SIGNAL( clicked ( )), this, SLOT( upExcept ( ))); | 344 | connect ( tb, SIGNAL( clicked ( )), this, SLOT( upExcept ( ))); |
337 | QWhatsThis::add( tb, tr( "Click here to move the currently selected application up in the list." ) ); | 345 | QWhatsThis::add( tb, tr( "Click here to move the currently selected application up in the list." ) ); |
338 | 346 | ||
339 | tb = new QToolButton ( tab ); | 347 | tb = new QToolButton ( tab ); |
340 | tb-> setIconSet ( Resource::loadIconSet ( "down" )); | 348 | tb-> setIconSet ( Resource::loadIconSet ( "down" )); |
341 | tb-> setFocusPolicy ( QWidget::StrongFocus ); | 349 | tb-> setFocusPolicy ( QWidget::StrongFocus ); |
342 | lay-> addWidget ( tb, 5, 1 ); | 350 | lay-> addWidget ( tb, 5, 1 ); |
343 | connect ( tb, SIGNAL( clicked ( )), this, SLOT( downExcept ( ))); | 351 | connect ( tb, SIGNAL( clicked ( )), this, SLOT( downExcept ( ))); |
344 | QWhatsThis::add( tb, tr( "Click here to move the currently selected application down in the list." ) ); | 352 | QWhatsThis::add( tb, tr( "Click here to move the currently selected application down in the list." ) ); |
345 | 353 | ||
346 | lay-> setRowStretch ( 6, 10 ); | 354 | lay-> setRowStretch ( 6, 10 ); |
347 | lay-> setColStretch ( 0, 10 ); | 355 | lay-> setColStretch ( 0, 10 ); |
348 | 356 | ||
349 | QStringList sl = cfg. readListEntry ( "NoStyle", ';' ); | 357 | QStringList sl = cfg. readListEntry ( "NoStyle", ';' ); |
350 | QListViewItem *lvit = 0; | 358 | QListViewItem *lvit = 0; |
351 | for ( QStringList::Iterator it = sl. begin ( ); it != sl. end ( ); ++it ) { | 359 | for ( QStringList::Iterator it = sl. begin ( ); it != sl. end ( ); ++it ) |
360 | { | ||
352 | int fl = ( *it ). left ( 1 ). toInt ( 0, 32 ); | 361 | int fl = ( *it ). left ( 1 ). toInt ( 0, 32 ); |
353 | 362 | ||
354 | lvit = new ExceptListItem ( m_except, lvit, ( *it ). mid ( 1 ), fl & 0x01, fl & 0x02, fl & 0x04 ); | 363 | lvit = new ExceptListItem ( m_except, lvit, ( *it ). mid ( 1 ), fl & 0x01, fl & 0x02, fl & 0x04 ); |
355 | } | 364 | } |
356 | 365 | ||
357 | 366 | ||
358 | vertLayout-> addSpacing ( 3 ); | 367 | vertLayout-> addSpacing ( 3 ); |
359 | QFrame *f = new QFrame ( tab ); | 368 | QFrame *f = new QFrame ( tab ); |
360 | f-> setFrameStyle ( QFrame::HLine | QFrame::Sunken ); | 369 | f-> setFrameStyle ( QFrame::HLine | QFrame::Sunken ); |
361 | vertLayout-> addWidget ( f ); | 370 | vertLayout-> addWidget ( f ); |
362 | vertLayout-> addSpacing ( 3 ); | 371 | vertLayout-> addSpacing ( 3 ); |
363 | 372 | ||
364 | 373 | ||
365 | QGridLayout* gridLayout = new QGridLayout ( vertLayout, 0, 0, 3, 0 ); | 374 | QGridLayout* gridLayout = new QGridLayout ( vertLayout, 0, 0, 3, 0 ); |
366 | 375 | ||
367 | int style = cfg. readNumEntry ( "TabStyle", 2 ) - 1; | 376 | int style = cfg. readNumEntry ( "TabStyle", 2 ) - 1; |
368 | bool tabtop = ( cfg. readEntry ( "TabPosition", "Top" ) == "Top" ); | 377 | bool tabtop = ( cfg. readEntry ( "TabPosition", "Top" ) == "Top" ); |
369 | 378 | ||
370 | QLabel* label = new QLabel( tr( "Tab style:" ), tab ); | 379 | QLabel* label = new QLabel( tr( "Tab style:" ), tab ); |
371 | gridLayout-> addWidget ( label, 0, 0 ); | 380 | gridLayout-> addWidget ( label, 0, 0 ); |
372 | QWhatsThis::add( label, tr( "Click here to select a desired style for tabbed dialogs (such as this application). The styles available are:\n\n1. Tabs - normal tabs with text labels only\n2. Tabs w/icons - tabs with icons for each tab, text label only appears on current tab\n3. Drop down list - a vertical listing of tabs\n4. Drop down list w/icons - a vertical listing of tabs with icons" ) ); | 381 | QWhatsThis::add( label, tr( "Click here to select a desired style for tabbed dialogs (such as this application). The styles available are:\n\n1. Tabs - normal tabs with text labels only\n2. Tabs w/icons - tabs with icons for each tab, text label only appears on current tab\n3. Drop down list - a vertical listing of tabs\n4. Drop down list w/icons - a vertical listing of tabs with icons" ) ); |
373 | 382 | ||
374 | QButtonGroup* btngrp = new QButtonGroup( tab, "buttongroup" ); | 383 | QButtonGroup* btngrp = new QButtonGroup( tab, "buttongroup" ); |
375 | btngrp-> hide ( ); | 384 | btngrp-> hide ( ); |
@@ -411,315 +420,336 @@ QWidget *Appearance::createAdvancedTab ( QWidget *parent, Config &cfg ) | |||
411 | QPixmap ccw1; | 420 | QPixmap ccw1; |
412 | m_rotdir_flip = new QRadioButton( tab, "rotdir_flip" ); | 421 | m_rotdir_flip = new QRadioButton( tab, "rotdir_flip" ); |
413 | QPixmap flip1 = Resource::loadIconSet("pass"). pixmap( ); | 422 | QPixmap flip1 = Resource::loadIconSet("pass"). pixmap( ); |
414 | QButtonGroup* rotbtngrp = new QButtonGroup( tab, "rotbuttongroup" ); | 423 | QButtonGroup* rotbtngrp = new QButtonGroup( tab, "rotbuttongroup" ); |
415 | 424 | ||
416 | rotbtngrp-> hide ( ); | 425 | rotbtngrp-> hide ( ); |
417 | rotbtngrp-> setExclusive ( true ); | 426 | rotbtngrp-> setExclusive ( true ); |
418 | rotbtngrp-> insert ( m_rotdir_cw ); | 427 | rotbtngrp-> insert ( m_rotdir_cw ); |
419 | rotbtngrp-> insert ( m_rotdir_ccw ); | 428 | rotbtngrp-> insert ( m_rotdir_ccw ); |
420 | rotbtngrp-> insert ( m_rotdir_flip ); | 429 | rotbtngrp-> insert ( m_rotdir_flip ); |
421 | 430 | ||
422 | ccw1. convertFromImage( ccwImage ); | 431 | ccw1. convertFromImage( ccwImage ); |
423 | m_rotdir_cw-> setPixmap( cw1 ); | 432 | m_rotdir_cw-> setPixmap( cw1 ); |
424 | m_rotdir_ccw-> setPixmap( ccw1 ); | 433 | m_rotdir_ccw-> setPixmap( ccw1 ); |
425 | m_rotdir_flip-> setPixmap( flip1 ); | 434 | m_rotdir_flip-> setPixmap( flip1 ); |
426 | 435 | ||
427 | rotLay-> addWidget ( rotlabel, 0 ); | 436 | rotLay-> addWidget ( rotlabel, 0 ); |
428 | rotLay-> addWidget ( m_rotdir_cw, 0 ); | 437 | rotLay-> addWidget ( m_rotdir_cw, 0 ); |
429 | rotLay-> addWidget ( m_rotdir_ccw, 0 ); | 438 | rotLay-> addWidget ( m_rotdir_ccw, 0 ); |
430 | rotLay-> addWidget ( m_rotdir_flip, 0 ); | 439 | rotLay-> addWidget ( m_rotdir_flip, 0 ); |
431 | 440 | ||
432 | int rotDirection = cfg.readNumEntry( "rotatedir" ); | 441 | int rotDirection = cfg.readNumEntry( "rotatedir" ); |
433 | ODirection rot = CW; | 442 | ODirection rot = CW; |
434 | 443 | ||
435 | if (rotDirection == -1) { | 444 | if (rotDirection == -1) |
445 | { | ||
436 | rot = ODevice::inst ( )-> direction ( ); | 446 | rot = ODevice::inst ( )-> direction ( ); |
437 | } else { | 447 | } |
448 | else | ||
449 | { | ||
438 | rot = (ODirection)rotDirection; | 450 | rot = (ODirection)rotDirection; |
439 | } | 451 | } |
440 | 452 | ||
441 | m_rotdir_cw-> setChecked ( rot == CW ); | 453 | m_rotdir_cw-> setChecked ( rot == CW ); |
442 | m_rotdir_ccw-> setChecked ( rot == CCW ); | 454 | m_rotdir_ccw-> setChecked ( rot == CCW ); |
443 | m_rotdir_flip-> setChecked ( rot == Flip ); | 455 | m_rotdir_flip-> setChecked ( rot == Flip ); |
444 | 456 | ||
445 | return tab; | 457 | return tab; |
446 | } | 458 | } |
447 | 459 | ||
448 | 460 | ||
449 | Appearance::Appearance( QWidget* parent, const char* name, WFlags ) | 461 | Appearance::Appearance( QWidget* parent, const char* name, WFlags ) |
450 | : QDialog ( parent, name, true, WStyle_ContextHelp ) | 462 | : QDialog ( parent, name, true, WStyle_ContextHelp ) |
451 | { | 463 | { |
452 | setCaption( tr( "Appearance Settings" ) ); | 464 | setCaption( tr( "Appearance Settings" ) ); |
453 | 465 | ||
454 | Config config( "qpe" ); | 466 | Config config( "qpe" ); |
455 | config.setGroup( "Appearance" ); | 467 | config.setGroup( "Appearance" ); |
456 | 468 | ||
457 | QVBoxLayout *top = new QVBoxLayout ( this, 3, 3 ); | 469 | QVBoxLayout *top = new QVBoxLayout ( this, 3, 3 ); |
458 | 470 | ||
459 | m_sample = new SampleWindow ( this ); | 471 | m_sample = new SampleWindow ( this ); |
460 | 472 | ||
461 | m_sample-> setDecoration ( new DefaultWindowDecoration ( ) ); | 473 | m_sample-> setDecoration ( new DefaultWindowDecoration ( ) ); |
462 | QWhatsThis::add( m_sample, tr( "This is a preview window. Look here to see your new appearance as options are changed." ) ); | 474 | QWhatsThis::add( m_sample, tr( "This is a preview window. Look here to see your new appearance as options are changed." ) ); |
463 | 475 | ||
464 | OTabWidget* tw = new OTabWidget ( this, "tabwidget", OTabWidget::Global, OTabWidget::Bottom ); | 476 | OTabWidget* tw = new OTabWidget ( this, "tabwidget", OTabWidget::Global, OTabWidget::Bottom ); |
465 | QWidget *styletab; | 477 | QWidget *styletab; |
466 | 478 | ||
467 | m_color_list = 0; | 479 | m_color_list = 0; |
468 | 480 | ||
469 | tw-> addTab ( styletab = createStyleTab ( tw, config ), "appearance", tr( "Style" )); | 481 | tw-> addTab ( styletab = createStyleTab ( tw, config ), "appearance", tr( "Style" )); |
470 | tw-> addTab ( createFontTab ( tw, config ), "font", tr( "Font" )); | 482 | tw-> addTab ( createFontTab ( tw, config ), "font", tr( "Font" )); |
471 | tw-> addTab ( createColorTab ( tw, config ), "appearance/color", tr( "Colors" ) ); | 483 | tw-> addTab ( createColorTab ( tw, config ), "appearance/color", tr( "Colors" ) ); |
472 | tw-> addTab ( createDecoTab ( tw, config ), "appearance/deco", tr( "Windows" ) ); | 484 | tw-> addTab ( createDecoTab ( tw, config ), "appearance/deco", tr( "Windows" ) ); |
473 | tw-> addTab ( m_advtab = createAdvancedTab ( tw, config ), "SettingsIcon", tr( "Advanced" ) ); | 485 | tw-> addTab ( m_advtab = createAdvancedTab ( tw, config ), "SettingsIcon", tr( "Advanced" ) ); |
474 | 486 | ||
475 | top-> addWidget ( tw, 10 ); | 487 | top-> addWidget ( tw, 10 ); |
476 | top-> addWidget ( m_sample, 1 ); | 488 | top-> addWidget ( m_sample, 1 ); |
477 | 489 | ||
478 | tw-> setCurrentTab ( styletab ); | 490 | tw-> setCurrentTab ( styletab ); |
479 | connect ( tw, SIGNAL( currentChanged ( QWidget * )), this, SLOT( tabChanged ( QWidget * ))); | 491 | connect ( tw, SIGNAL( currentChanged ( QWidget * )), this, SLOT( tabChanged ( QWidget * ))); |
480 | 492 | ||
481 | m_style_changed = m_font_changed = m_color_changed = m_deco_changed = false; | 493 | m_style_changed = m_font_changed = m_color_changed = m_deco_changed = false; |
482 | } | 494 | } |
483 | 495 | ||
484 | Appearance::~Appearance() | 496 | Appearance::~Appearance() |
485 | { | 497 | {} |
486 | } | ||
487 | 498 | ||
488 | void Appearance::tabChanged ( QWidget *w ) | 499 | void Appearance::tabChanged ( QWidget *w ) |
489 | { | 500 | { |
490 | if ( w == m_advtab ) { | 501 | if ( w == m_advtab ) |
502 | { | ||
491 | m_sample-> hide ( ); | 503 | m_sample-> hide ( ); |
492 | updateGeometry ( ); // shouldn't be necessary ... | 504 | updateGeometry ( ); // shouldn't be necessary ... |
493 | } | 505 | } |
494 | else | 506 | else |
495 | m_sample-> show ( ); | 507 | m_sample-> show ( ); |
496 | } | 508 | } |
497 | 509 | ||
498 | void Appearance::accept ( ) | 510 | void Appearance::accept ( ) |
499 | { | 511 | { |
500 | bool newtabpos = m_tabstyle_top-> isChecked ( ); | 512 | bool newtabpos = m_tabstyle_top-> isChecked ( ); |
501 | int newtabstyle = m_tabstyle_list-> currentItem ( ); | 513 | int newtabstyle = m_tabstyle_list-> currentItem ( ); |
502 | 514 | ||
503 | Config config ( "qpe" ); | 515 | Config config ( "qpe" ); |
504 | config. setGroup ( "Appearance" ); | 516 | config. setGroup ( "Appearance" ); |
505 | 517 | ||
506 | if ( m_style_changed ) { | 518 | if ( m_style_changed ) |
519 | { | ||
507 | StyleListItem *item = (StyleListItem *) m_style_list-> item ( m_style_list-> currentItem ( )); | 520 | StyleListItem *item = (StyleListItem *) m_style_list-> item ( m_style_list-> currentItem ( )); |
508 | if ( item ) | 521 | if ( item ) |
509 | config.writeEntry( "Style", item-> key ( )); | 522 | config.writeEntry( "Style", item-> key ( )); |
510 | } | 523 | } |
511 | 524 | ||
512 | if ( m_deco_changed ) { | 525 | if ( m_deco_changed ) |
526 | { | ||
513 | DecoListItem *item = (DecoListItem *) m_deco_list-> item ( m_deco_list-> currentItem ( )); | 527 | DecoListItem *item = (DecoListItem *) m_deco_list-> item ( m_deco_list-> currentItem ( )); |
514 | if ( item ) | 528 | if ( item ) |
515 | config.writeEntry( "Decoration", item-> key ( )); | 529 | config.writeEntry( "Decoration", item-> key ( )); |
516 | } | 530 | } |
517 | 531 | ||
518 | if (( newtabstyle != m_original_tabstyle ) || ( newtabpos != m_original_tabpos )) { | 532 | if (( newtabstyle != m_original_tabstyle ) || ( newtabpos != m_original_tabpos )) |
533 | { | ||
519 | config. writeEntry ( "TabStyle", newtabstyle + 1 ); | 534 | config. writeEntry ( "TabStyle", newtabstyle + 1 ); |
520 | config. writeEntry ( "TabPosition", newtabpos ? "Top" : "Bottom" ); | 535 | config. writeEntry ( "TabPosition", newtabpos ? "Top" : "Bottom" ); |
521 | } | 536 | } |
522 | 537 | ||
523 | if ( m_font_changed ) { | 538 | if ( m_font_changed ) |
539 | { | ||
524 | config. writeEntry ( "FontFamily", m_fontselect-> fontFamily ( )); | 540 | config. writeEntry ( "FontFamily", m_fontselect-> fontFamily ( )); |
525 | config. writeEntry ( "FontStyle", m_fontselect-> fontStyle ( )); | 541 | config. writeEntry ( "FontStyle", m_fontselect-> fontStyle ( )); |
526 | config. writeEntry ( "FontSize", m_fontselect-> fontSize ( )); | 542 | config. writeEntry ( "FontSize", m_fontselect-> fontSize ( )); |
527 | } | 543 | } |
528 | 544 | ||
529 | 545 | ||
530 | if ( m_color_changed ) | 546 | if ( m_color_changed ) |
531 | { | 547 | { |
532 | ColorListItem *item = (ColorListItem *) m_color_list-> item ( m_color_list-> currentItem ( )); | 548 | ColorListItem *item = (ColorListItem *) m_color_list-> item ( m_color_list-> currentItem ( )); |
533 | 549 | ||
534 | if ( item ) | 550 | if ( item ) |
535 | item-> save ( config ); | 551 | item-> save ( config ); |
536 | } | 552 | } |
537 | 553 | ||
538 | ODirection rot; | 554 | ODirection rot; |
539 | if (m_rotdir_ccw-> isChecked ( )) { | 555 | if (m_rotdir_ccw-> isChecked ( )) |
556 | { | ||
540 | rot = CCW; | 557 | rot = CCW; |
541 | } else if (m_rotdir_cw-> isChecked ( )) { | 558 | } |
559 | else if (m_rotdir_cw-> isChecked ( )) | ||
560 | { | ||
542 | rot = CW; | 561 | rot = CW; |
543 | } else { | 562 | } |
563 | else | ||
564 | { | ||
544 | rot = Flip; | 565 | rot = Flip; |
545 | } | 566 | } |
546 | config. writeEntry ( "rotatedir", (int)rot ); | 567 | config. writeEntry ( "rotatedir", (int)rot ); |
547 | 568 | ||
548 | m_except-> setFocus ( ); // if the focus was on the embedded line-edit, we have to move it away first, so the contents are updated | 569 | m_except-> setFocus ( ); // if the focus was on the embedded line-edit, we have to move it away first, so the contents are updated |
549 | 570 | ||
550 | QStringList sl; | 571 | QStringList sl; |
551 | QString exceptstr; | 572 | QString exceptstr; |
552 | for ( ExceptListItem *it = (ExceptListItem *) m_except-> firstChild ( ); it; it = (ExceptListItem *) it-> nextSibling ( )) { | 573 | for ( ExceptListItem *it = (ExceptListItem *) m_except-> firstChild ( ); it; it = (ExceptListItem *) it-> nextSibling ( )) |
574 | { | ||
553 | int fl = 0; | 575 | int fl = 0; |
554 | fl |= ( it-> noStyle ( ) ? 0x01 : 0 ); | 576 | fl |= ( it-> noStyle ( ) ? 0x01 : 0 ); |
555 | fl |= ( it-> noFont ( ) ? 0x02 : 0 ); | 577 | fl |= ( it-> noFont ( ) ? 0x02 : 0 ); |
556 | fl |= ( it-> noDeco ( ) ? 0x04 : 0 ); | 578 | fl |= ( it-> noDeco ( ) ? 0x04 : 0 ); |
557 | exceptstr = QString::number ( fl, 32 ); | 579 | exceptstr = QString::number ( fl, 32 ); |
558 | exceptstr.append( it-> pattern ( )); | 580 | exceptstr.append( it-> pattern ( )); |
559 | sl << exceptstr; | 581 | sl << exceptstr; |
560 | } | 582 | } |
561 | config. writeEntry ( "NoStyle", sl, ';' ); | 583 | config. writeEntry ( "NoStyle", sl, ';' ); |
562 | config. writeEntry ( "ForceStyle", m_force-> isChecked ( )); | 584 | config. writeEntry ( "ForceStyle", m_force-> isChecked ( )); |
563 | 585 | ||
564 | config. write ( ); // need to flush the config info first | 586 | config. write ( ); // need to flush the config info first |
565 | Global::applyStyle ( ); | 587 | Global::applyStyle ( ); |
566 | 588 | ||
567 | QDialog::accept ( ); | 589 | QDialog::accept ( ); |
568 | } | 590 | } |
569 | 591 | ||
570 | void Appearance::done ( int r ) | 592 | void Appearance::done ( int r ) |
571 | { | 593 | { |
572 | QDialog::done ( r ); | 594 | QDialog::done ( r ); |
573 | close ( ); | 595 | close ( ); |
574 | } | 596 | } |
575 | 597 | ||
576 | 598 | ||
577 | void Appearance::styleClicked ( int index ) | 599 | void Appearance::styleClicked ( int index ) |
578 | { | 600 | { |
579 | StyleListItem *sli = (StyleListItem *) m_style_list-> item ( index ); | 601 | StyleListItem *sli = (StyleListItem *) m_style_list-> item ( index ); |
580 | m_style_settings-> setEnabled ( sli ? sli-> hasSettings ( ) : false ); | 602 | m_style_settings-> setEnabled ( sli ? sli-> hasSettings ( ) : false ); |
581 | 603 | ||
582 | if ( m_sample && sli && sli-> style ( )) { | 604 | if ( m_sample && sli && sli-> style ( )) |
605 | { | ||
583 | int ci = m_color_list ? m_color_list-> currentItem ( ) : -1; | 606 | int ci = m_color_list ? m_color_list-> currentItem ( ) : -1; |
584 | 607 | ||
585 | m_sample-> setStyle2 ( sli-> style ( ), ci < 0 ? palette ( ) : ((ColorListItem *) m_color_list-> item ( ci ))-> palette ( )); | 608 | m_sample-> setStyle2 ( sli-> style ( ), ci < 0 ? palette ( ) : ((ColorListItem *) m_color_list-> item ( ci ))-> palette ( )); |
586 | } | 609 | } |
587 | 610 | ||
588 | m_style_changed |= ( index != m_original_style ); | 611 | m_style_changed |= ( index != m_original_style ); |
589 | } | 612 | } |
590 | 613 | ||
591 | void Appearance::styleSettingsClicked ( ) | 614 | void Appearance::styleSettingsClicked ( ) |
592 | { | 615 | { |
593 | StyleListItem *item = (StyleListItem *) m_style_list-> item ( m_style_list-> currentItem ( )); | 616 | StyleListItem *item = (StyleListItem *) m_style_list-> item ( m_style_list-> currentItem ( )); |
594 | 617 | ||
595 | if ( item && item-> hasSettings ( )) { | 618 | if ( item && item-> hasSettings ( )) |
619 | { | ||
596 | QDialog *d = new QDialog ( this, "SETTINGS-DLG", true ); | 620 | QDialog *d = new QDialog ( this, "SETTINGS-DLG", true ); |
597 | QVBoxLayout *vbox = new QVBoxLayout ( d, 3, 0 ); | 621 | QVBoxLayout *vbox = new QVBoxLayout ( d, 3, 0 ); |
598 | 622 | ||
599 | QWidget *w = item-> settings ( d ); | 623 | QWidget *w = item-> settings ( d ); |
600 | 624 | ||
601 | if ( w ) { | 625 | if ( w ) |
626 | { | ||
602 | vbox-> addWidget ( w ); | 627 | vbox-> addWidget ( w ); |
603 | 628 | ||
604 | d-> setCaption ( w-> caption ( )); | 629 | d-> setCaption ( w-> caption ( )); |
605 | 630 | ||
606 | d-> showMaximized ( ); | 631 | bool accepted = ( QPEApplication::execDialog ( d ) == QDialog::Accepted ); |
607 | bool accepted = ( d-> exec ( ) == QDialog::Accepted ); | ||
608 | 632 | ||
609 | if ( item-> setSettings ( accepted )) | 633 | if ( item-> setSettings ( accepted )) |
610 | m_style_changed = true; | 634 | m_style_changed = true; |
611 | } | 635 | } |
612 | delete d; | 636 | delete d; |
613 | } | 637 | } |
614 | } | 638 | } |
615 | 639 | ||
616 | void Appearance::decoClicked ( int index ) | 640 | void Appearance::decoClicked ( int index ) |
617 | { | 641 | { |
618 | DecoListItem *dli = (DecoListItem *) m_deco_list-> item ( index ); | 642 | DecoListItem *dli = (DecoListItem *) m_deco_list-> item ( index ); |
619 | 643 | ||
620 | if ( m_sample ) { | 644 | if ( m_sample ) |
645 | { | ||
621 | if ( dli && dli-> interface ( )) | 646 | if ( dli && dli-> interface ( )) |
622 | m_sample-> setDecoration ( dli-> interface ( )); | 647 | m_sample-> setDecoration ( dli-> interface ( )); |
623 | else | 648 | else |
624 | m_sample-> setDecoration ( new DefaultWindowDecoration ( )); | 649 | m_sample-> setDecoration ( new DefaultWindowDecoration ( )); |
625 | m_sample-> repaint ( ); | 650 | m_sample-> repaint ( ); |
626 | } | 651 | } |
627 | m_deco_changed |= ( index != m_original_deco ); | 652 | m_deco_changed |= ( index != m_original_deco ); |
628 | } | 653 | } |
629 | 654 | ||
630 | void Appearance::fontClicked ( const QFont &f ) | 655 | void Appearance::fontClicked ( const QFont &f ) |
631 | { | 656 | { |
632 | m_font_changed |= ( f != m_sample-> font ( )); | 657 | m_font_changed |= ( f != m_sample-> font ( )); |
633 | m_sample-> setFont ( f ); | 658 | m_sample-> setFont ( f ); |
634 | } | 659 | } |
635 | 660 | ||
636 | void Appearance::colorClicked ( int index ) | 661 | void Appearance::colorClicked ( int index ) |
637 | { | 662 | { |
638 | ColorListItem *item = (ColorListItem *) m_color_list-> item ( index ); | 663 | ColorListItem *item = (ColorListItem *) m_color_list-> item ( index ); |
639 | 664 | ||
640 | if ( item ) | 665 | if ( item ) |
641 | m_sample-> setPalette ( item-> palette ( )); | 666 | m_sample-> setPalette ( item-> palette ( )); |
642 | 667 | ||
643 | m_color_changed |= ( item-> palette ( ) != qApp-> palette ( )); | 668 | m_color_changed |= ( item-> palette ( ) != qApp-> palette ( )); |
644 | } | 669 | } |
645 | 670 | ||
646 | 671 | ||
647 | void Appearance::editSchemeClicked ( ) | 672 | void Appearance::editSchemeClicked ( ) |
648 | { | 673 | { |
649 | ColorListItem *item = (ColorListItem *) m_color_list-> item ( m_color_list-> currentItem ( )); | 674 | ColorListItem *item = (ColorListItem *) m_color_list-> item ( m_color_list-> currentItem ( )); |
650 | 675 | ||
651 | int cnt = 0; | 676 | int cnt = 0; |
652 | QString labels [QColorGroup::NColorRoles]; | 677 | QString labels [QColorGroup::NColorRoles]; |
653 | QColor colors [QColorGroup::NColorRoles]; | 678 | QColor colors [QColorGroup::NColorRoles]; |
654 | 679 | ||
655 | for ( QColorGroup::ColorRole role = (QColorGroup::ColorRole) 0; role != QColorGroup::NColorRoles; ((int) role )++ ) { | 680 | for ( QColorGroup::ColorRole role = (QColorGroup::ColorRole) 0; role != QColorGroup::NColorRoles; ((int) role )++ ) |
681 | { | ||
656 | QColor col = item-> color ( role ); | 682 | QColor col = item-> color ( role ); |
657 | 683 | ||
658 | if ( col. isValid ( )) { | 684 | if ( col. isValid ( )) |
685 | { | ||
659 | labels [cnt] = item-> label ( role ); | 686 | labels [cnt] = item-> label ( role ); |
660 | colors [cnt] = col; | 687 | colors [cnt] = col; |
661 | 688 | ||
662 | cnt++; | 689 | cnt++; |
663 | } | 690 | } |
664 | } | 691 | } |
665 | 692 | ||
666 | EditScheme* editdlg = new EditScheme( cnt, labels, colors, this, "editScheme", true ); | 693 | EditScheme* editdlg = new EditScheme( cnt, labels, colors, this, "editScheme", true ); |
667 | editdlg-> showMaximized ( ); | 694 | if ( QPEApplication::execDialog( editdlg ) == QDialog::Accepted ) |
668 | if ( editdlg-> exec ( ) == QDialog::Accepted ) { | 695 | { |
669 | ColorListItem *citem = (ColorListItem *) m_color_list-> item ( 0 ); | 696 | ColorListItem *citem = (ColorListItem *) m_color_list-> item ( 0 ); |
670 | cnt = 0; | 697 | cnt = 0; |
671 | 698 | ||
672 | for ( QColorGroup::ColorRole role = (QColorGroup::ColorRole) 0; role != QColorGroup::NColorRoles; ((int) role )++ ) { | 699 | for ( QColorGroup::ColorRole role = (QColorGroup::ColorRole) 0; role != QColorGroup::NColorRoles; ((int) role )++ ) |
673 | if ( item-> color ( role ). isValid ( )) { | 700 | { |
701 | if ( item-> color ( role ). isValid ( )) | ||
702 | { | ||
674 | citem-> setColor ( role, colors [cnt] ); | 703 | citem-> setColor ( role, colors [cnt] ); |
675 | cnt++; | 704 | cnt++; |
676 | } | 705 | } |
677 | } | 706 | } |
678 | 707 | ||
679 | m_color_list-> setCurrentItem ( 0 ); | 708 | m_color_list-> setCurrentItem ( 0 ); |
680 | colorClicked ( 0 ); | 709 | colorClicked ( 0 ); |
681 | 710 | ||
682 | m_color_changed = true; | 711 | m_color_changed = true; |
683 | } | 712 | } |
684 | delete editdlg; | 713 | delete editdlg; |
685 | } | 714 | } |
686 | 715 | ||
687 | 716 | ||
688 | void Appearance::saveSchemeClicked() | 717 | void Appearance::saveSchemeClicked() |
689 | { | 718 | { |
690 | ColorListItem *item = (ColorListItem *) m_color_list-> item ( m_color_list-> currentItem ( )); | 719 | ColorListItem *item = (ColorListItem *) m_color_list-> item ( m_color_list-> currentItem ( )); |
691 | 720 | ||
692 | if ( !item ) | 721 | if ( !item ) |
693 | return; | 722 | return; |
694 | 723 | ||
695 | QDialog *d = new QDialog ( this, 0, true ); | 724 | QDialog *d = new QDialog ( this, 0, true ); |
696 | d-> setCaption ( tr( "Save Scheme" )); | 725 | d-> setCaption ( tr( "Save Scheme" )); |
697 | QLineEdit *ed = new QLineEdit ( d ); | 726 | QLineEdit *ed = new QLineEdit ( d ); |
698 | ( new QVBoxLayout ( d, 3, 3 ))-> addWidget ( ed ); | 727 | ( new QVBoxLayout ( d, 3, 3 ))-> addWidget ( ed ); |
699 | ed-> setFocus ( ); | 728 | ed-> setFocus ( ); |
700 | 729 | ||
701 | if ( d-> exec ( ) == QDialog::Accepted ) { | 730 | if ( d-> exec ( ) == QDialog::Accepted ) |
731 | { | ||
702 | QString schemename = ed-> text ( ); | 732 | QString schemename = ed-> text ( ); |
703 | QString filestr = QPEApplication::qpeDir(); | 733 | QString filestr = QPEApplication::qpeDir(); |
704 | filestr.append( "/etc/colors/" ); | 734 | filestr.append( "/etc/colors/" ); |
705 | filestr.append( schemename ); | 735 | filestr.append( schemename ); |
706 | filestr.append( ".scheme" ); | 736 | filestr.append( ".scheme" ); |
707 | QFile file ( filestr ); | 737 | QFile file ( filestr ); |
708 | if ( !file. exists ( )) | 738 | if ( !file. exists ( )) |
709 | { | 739 | { |
710 | QPalette p = item-> palette ( ); | 740 | QPalette p = item-> palette ( ); |
711 | 741 | ||
712 | Config config ( file.name(), Config::File ); | 742 | Config config ( file.name(), Config::File ); |
713 | config. setGroup( "Colors" ); | 743 | config. setGroup( "Colors" ); |
714 | 744 | ||
715 | item-> save ( config ); | 745 | item-> save ( config ); |
716 | 746 | ||
717 | config. write ( ); // need to flush the config info first | 747 | config. write ( ); // need to flush the config info first |
718 | 748 | ||
719 | m_color_list-> insertItem ( new ColorListItem ( schemename, config )); | 749 | m_color_list-> insertItem ( new ColorListItem ( schemename, config )); |
720 | } | 750 | } |
721 | else | 751 | else |
722 | { | 752 | { |
723 | QMessageBox::information ( this, tr( "Save scheme" ), tr( "Scheme does already exist." )); | 753 | QMessageBox::information ( this, tr( "Save scheme" ), tr( "Scheme does already exist." )); |
724 | } | 754 | } |
725 | } | 755 | } |
@@ -740,117 +770,121 @@ void Appearance::deleteSchemeClicked() | |||
740 | QString filestr = QPEApplication::qpeDir ( ); | 770 | QString filestr = QPEApplication::qpeDir ( ); |
741 | filestr.append( "/etc/colors/" ); | 771 | filestr.append( "/etc/colors/" ); |
742 | filestr.append( item-> text ( ) ); | 772 | filestr.append( item-> text ( ) ); |
743 | filestr.append( ".scheme" ); | 773 | filestr.append( ".scheme" ); |
744 | QFile::remove ( filestr ); | 774 | QFile::remove ( filestr ); |
745 | delete item; | 775 | delete item; |
746 | } | 776 | } |
747 | } | 777 | } |
748 | else | 778 | else |
749 | { | 779 | { |
750 | QMessageBox::information( this, tr( "Delete scheme" ), tr( "Unable to delete current scheme." )); | 780 | QMessageBox::information( this, tr( "Delete scheme" ), tr( "Unable to delete current scheme." )); |
751 | } | 781 | } |
752 | } | 782 | } |
753 | 783 | ||
754 | 784 | ||
755 | void Appearance::addExcept ( ) | 785 | void Appearance::addExcept ( ) |
756 | { | 786 | { |
757 | ExceptListItem *it = new ExceptListItem ( m_except, 0, tr( "<new>" ), true, true, true ); | 787 | ExceptListItem *it = new ExceptListItem ( m_except, 0, tr( "<new>" ), true, true, true ); |
758 | m_except-> ensureItemVisible ( it ); | 788 | m_except-> ensureItemVisible ( it ); |
759 | m_except-> setSelected ( it, true ); | 789 | m_except-> setSelected ( it, true ); |
760 | } | 790 | } |
761 | 791 | ||
762 | void Appearance::delExcept ( ) | 792 | void Appearance::delExcept ( ) |
763 | { | 793 | { |
764 | if ( m_except-> selectedItem ( )) { | 794 | if ( m_except-> selectedItem ( )) |
795 | { | ||
765 | m_except-> setFocus ( ); | 796 | m_except-> setFocus ( ); |
766 | delete m_except-> selectedItem ( ); | 797 | delete m_except-> selectedItem ( ); |
767 | } | 798 | } |
768 | } | 799 | } |
769 | 800 | ||
770 | void Appearance::upExcept ( ) | 801 | void Appearance::upExcept ( ) |
771 | { | 802 | { |
772 | ExceptListItem *it = (ExceptListItem *) m_except-> selectedItem ( ); | 803 | ExceptListItem *it = (ExceptListItem *) m_except-> selectedItem ( ); |
773 | 804 | ||
774 | if ( it && it-> itemAbove ( )) | 805 | if ( it && it-> itemAbove ( )) |
775 | it-> itemAbove ( )-> moveItem ( it ); | 806 | it-> itemAbove ( )-> moveItem ( it ); |
776 | } | 807 | } |
777 | 808 | ||
778 | void Appearance::downExcept ( ) | 809 | void Appearance::downExcept ( ) |
779 | { | 810 | { |
780 | ExceptListItem *it = (ExceptListItem *) m_except-> selectedItem ( ); | 811 | ExceptListItem *it = (ExceptListItem *) m_except-> selectedItem ( ); |
781 | 812 | ||
782 | if ( it && it-> itemBelow ( )) | 813 | if ( it && it-> itemBelow ( )) |
783 | it-> moveItem ( it-> itemBelow ( )); | 814 | it-> moveItem ( it-> itemBelow ( )); |
784 | } | 815 | } |
785 | 816 | ||
786 | class ExEdit : public QLineEdit { | 817 | class ExEdit : public QLineEdit |
818 | { | ||
787 | public: | 819 | public: |
788 | ExEdit ( ExceptListItem *item ) | 820 | ExEdit ( ExceptListItem *item ) |
789 | : QLineEdit ( item-> listView ( )-> viewport ( ), "exedit" ), it ( item ) | 821 | : QLineEdit ( item-> listView ( )-> viewport ( ), "exedit" ), it ( item ) |
790 | { | 822 | { |
791 | setFrame ( false ); | 823 | setFrame ( false ); |
792 | 824 | ||
793 | QRect r = it-> listView ( )-> itemRect ( it ); | 825 | QRect r = it-> listView ( )-> itemRect ( it ); |
794 | 826 | ||
795 | int x = it-> listView ( )-> header ( )-> cellPos ( 3 ) - 1; | 827 | int x = it-> listView ( )-> header ( )-> cellPos ( 3 ) - 1; |
796 | int y = r. y ( ); | 828 | int y = r. y ( ); |
797 | int w = it-> listView ( )-> viewport ( )-> width ( ) - x; | 829 | int w = it-> listView ( )-> viewport ( )-> width ( ) - x; |
798 | int h = r. height ( ); // + 2; | 830 | int h = r. height ( ); // + 2; |
799 | 831 | ||
800 | setText ( it-> pattern ( )); | 832 | setText ( it-> pattern ( )); |
801 | setGeometry ( x, y, w, h ); | 833 | setGeometry ( x, y, w, h ); |
802 | 834 | ||
803 | qDebug ( "ExEdit: [%s] at %d,%d %d,%d", it->text(2).latin1(),x,y,w,h); | 835 | qDebug ( "ExEdit: [%s] at %d,%d %d,%d", it->text(2).latin1(),x,y,w,h); |
804 | 836 | ||
805 | m_out = true; | 837 | m_out = true; |
806 | 838 | ||
807 | show ( ); | 839 | show ( ); |
808 | setFocus ( ); | 840 | setFocus ( ); |
809 | selectAll ( ); | 841 | selectAll ( ); |
810 | end ( true ); | 842 | end ( true ); |
811 | } | 843 | } |
812 | 844 | ||
813 | virtual void focusOutEvent ( QFocusEvent * ) | 845 | virtual void focusOutEvent ( QFocusEvent * ) |
814 | { | 846 | { |
815 | hide ( ); | 847 | hide ( ); |
816 | if ( m_out ) | 848 | if ( m_out ) |
817 | it-> setPattern ( text ( )); | 849 | it-> setPattern ( text ( )); |
818 | delete this; | 850 | delete this; |
819 | } | 851 | } |
820 | 852 | ||
821 | virtual void keyPressEvent ( QKeyEvent *e ) | 853 | virtual void keyPressEvent ( QKeyEvent *e ) |
822 | { | 854 | { |
823 | if ( e-> key ( ) == Key_Return ) | 855 | if ( e-> key ( ) == Key_Return ) |
824 | it-> listView ( )-> setFocus ( ); | 856 | it-> listView ( )-> setFocus ( ); |
825 | else if ( e-> key ( ) == Key_Escape ) { | 857 | else if ( e-> key ( ) == Key_Escape ) |
858 | { | ||
826 | m_out = false; | 859 | m_out = false; |
827 | it-> listView ( )-> setFocus ( ); | 860 | it-> listView ( )-> setFocus ( ); |
828 | } | 861 | } |
829 | else | 862 | else |
830 | QLineEdit::keyPressEvent ( e ); | 863 | QLineEdit::keyPressEvent ( e ); |
831 | } | 864 | } |
832 | 865 | ||
833 | private: | 866 | private: |
834 | ExceptListItem *it; | 867 | ExceptListItem *it; |
835 | bool m_out; | 868 | bool m_out; |
836 | }; | 869 | }; |
837 | 870 | ||
838 | void Appearance::clickedExcept ( QListViewItem *item, const QPoint &, int c ) | 871 | void Appearance::clickedExcept ( QListViewItem *item, const QPoint &, int c ) |
839 | { | 872 | { |
840 | if ( !item || c < 0 || c > 3 ) | 873 | if ( !item || c < 0 || c > 3 ) |
841 | return; | 874 | return; |
842 | 875 | ||
843 | ExceptListItem *it = (ExceptListItem *) item; | 876 | ExceptListItem *it = (ExceptListItem *) item; |
844 | 877 | ||
845 | if ( c == 0 ) | 878 | if ( c == 0 ) |
846 | it-> setNoStyle ( !it-> noStyle ( )); | 879 | it-> setNoStyle ( !it-> noStyle ( )); |
847 | else if ( c == 1 ) | 880 | else if ( c == 1 ) |
848 | it-> setNoFont ( !it-> noFont ( )); | 881 | it-> setNoFont ( !it-> noFont ( )); |
849 | else if ( c == 2 ) | 882 | else if ( c == 2 ) |
850 | it-> setNoDeco ( !it-> noDeco ( )); | 883 | it-> setNoDeco ( !it-> noDeco ( )); |
851 | else if ( c == 3 ) { | 884 | else if ( c == 3 ) |
885 | { | ||
852 | m_except-> ensureItemVisible ( it ); | 886 | m_except-> ensureItemVisible ( it ); |
853 | new ExEdit ( it ); | 887 | new ExEdit ( it ); |
854 | } | 888 | } |
855 | } | 889 | } |
856 | 890 | ||
diff --git a/noncore/settings/appearance2/stylelistitem.h b/noncore/settings/appearance2/stylelistitem.h index caefad8..b6c72c3 100644 --- a/noncore/settings/appearance2/stylelistitem.h +++ b/noncore/settings/appearance2/stylelistitem.h | |||
@@ -7,50 +7,56 @@ | |||
7 | :`=1 )Y*s>-.-- : the terms of the GNU General Public | 7 | :`=1 )Y*s>-.-- : the terms of the GNU General Public |
8 | .="- .-=="i, .._ License as published by the Free Software | 8 | .="- .-=="i, .._ License as published by the Free Software |
9 | - . .-<_> .<> Foundation; either version 2 of the License, | 9 | - . .-<_> .<> Foundation; either version 2 of the License, |
10 | ._= =} : or (at your option) any later version. | 10 | ._= =} : or (at your option) any later version. |
11 | .%`+i> _;_. | 11 | .%`+i> _;_. |
12 | .i_,=:_. -<s. This file is distributed in the hope that | 12 | .i_,=:_. -<s. This file is distributed in the hope that |
13 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 13 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
14 | : .. .:, . . . without even the implied warranty of | 14 | : .. .:, . . . without even the implied warranty of |
15 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 15 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
16 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU General | 16 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU General |
17 | ..}^=.= = ; Public License for more details. | 17 | ..}^=.= = ; Public License for more details. |
18 | ++= -. .` .: | 18 | ++= -. .` .: |
19 | : = ...= . :.=- You should have received a copy of the GNU | 19 | : = ...= . :.=- You should have received a copy of the GNU |
20 | -. .:....=;==+<; General Public License along with this file; | 20 | -. .:....=;==+<; General Public License along with this file; |
21 | -_. . . )=. = see the file COPYING. If not, write to the | 21 | -_. . . )=. = see the file COPYING. If not, write to the |
22 | -- :-=` Free Software Foundation, Inc., | 22 | -- :-=` Free Software Foundation, Inc., |
23 | 59 Temple Place - Suite 330, | 23 | 59 Temple Place - Suite 330, |
24 | Boston, MA 02111-1307, USA. | 24 | Boston, MA 02111-1307, USA. |
25 | 25 | ||
26 | */ | 26 | */ |
27 | 27 | ||
28 | #ifndef STYLELISTITEM_H | 28 | #ifndef STYLELISTITEM_H |
29 | #define STYLELISTITEM_H | 29 | #define STYLELISTITEM_H |
30 | 30 | ||
31 | #include <qlistbox.h> | 31 | /* OPIE */ |
32 | #include <qpe/styleinterface.h> | 32 | #include <qpe/styleinterface.h> |
33 | #include <qpe/qlibrary.h> | ||
34 | #include <qpe/resource.h> | ||
35 | |||
36 | /* QT */ | ||
37 | #include <qlistbox.h> | ||
38 | #include <qfileinfo.h> | ||
33 | 39 | ||
34 | #include <stdio.h> | 40 | #include <stdio.h> |
35 | 41 | ||
36 | class StyleListItem : public QListBoxText { | 42 | class StyleListItem : public QListBoxText { |
37 | public: | 43 | public: |
38 | StyleListItem ( const QString &t, QStyle *sty ) : QListBoxText ( t ) | 44 | StyleListItem ( const QString &t, QStyle *sty ) : QListBoxText ( t ) |
39 | { | 45 | { |
40 | m_lib = 0; | 46 | m_lib = 0; |
41 | m_style_if = 0; | 47 | m_style_if = 0; |
42 | m_settings_if = 0; | 48 | m_settings_if = 0; |
43 | m_style = sty; | 49 | m_style = sty; |
44 | } | 50 | } |
45 | 51 | ||
46 | StyleListItem ( QLibrary *lib, StyleInterface *iface ) : QListBoxText ( iface-> name ( )) | 52 | StyleListItem ( QLibrary *lib, StyleInterface *iface ) : QListBoxText ( iface-> name ( )) |
47 | { | 53 | { |
48 | m_lib = lib; | 54 | m_lib = lib; |
49 | m_style_if = iface; | 55 | m_style_if = iface; |
50 | m_settings_if = 0; | 56 | m_settings_if = 0; |
51 | m_style = iface-> style ( ); | 57 | m_style = iface-> style ( ); |
52 | 58 | ||
53 | iface-> queryInterface ( IID_StyleExtended, (QUnknownInterface **) &m_settings_if ); | 59 | iface-> queryInterface ( IID_StyleExtended, (QUnknownInterface **) &m_settings_if ); |
54 | } | 60 | } |
55 | 61 | ||
56 | virtual ~StyleListItem ( ) | 62 | virtual ~StyleListItem ( ) |
diff --git a/noncore/settings/aqpkg/categoryfilterimpl.cpp b/noncore/settings/aqpkg/categoryfilterimpl.cpp index 61e1f93..217d2c9 100644 --- a/noncore/settings/aqpkg/categoryfilterimpl.cpp +++ b/noncore/settings/aqpkg/categoryfilterimpl.cpp | |||
@@ -6,102 +6,108 @@ | |||
6 | .>+-= | 6 | .>+-= |
7 | _;:, .> :=|. This file is free software; you can | 7 | _;:, .> :=|. This file 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 General Public | 9 | :`=1 )Y*s>-.-- : the terms of the GNU 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 file is distributed in the hope that | 14 | .i_,=:_. -<s. This file 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 General | 18 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU General |
19 | ..}^=.= = ; Public License for more details. | 19 | ..}^=.= = ; Public License for more details. |
20 | ++= -. .` .: | 20 | ++= -. .` .: |
21 | : = ...= . :.=- You should have received a copy of the GNU | 21 | : = ...= . :.=- You should have received a copy of the GNU |
22 | -. .:....=;==+<; General Public License along with this file; | 22 | -. .:....=;==+<; General Public License along with this file; |
23 | -_. . . )=. = see the file COPYING. If not, write to the | 23 | -_. . . )=. = see the file COPYING. If not, write to the |
24 | -- :-=` Free Software Foundation, Inc., | 24 | -- :-=` Free Software Foundation, Inc., |
25 | 59 Temple Place - Suite 330, | 25 | 59 Temple Place - Suite 330, |
26 | Boston, MA 02111-1307, USA. | 26 | Boston, MA 02111-1307, USA. |
27 | 27 | ||
28 | */ | 28 | */ |
29 | 29 | ||
30 | #include <iostream> | 30 | #include "categoryfilterimpl.h" |
31 | using namespace std; | ||
32 | 31 | ||
32 | /* OPIE */ | ||
33 | #include <qpe/qpeapplication.h> | ||
34 | |||
35 | /* QT */ | ||
33 | #include <qgroupbox.h> | 36 | #include <qgroupbox.h> |
34 | #include <qlayout.h> | 37 | #include <qlayout.h> |
35 | #include <qlistbox.h> | 38 | #include <qlistbox.h> |
36 | #include <qstring.h> | 39 | #include <qstring.h> |
37 | 40 | ||
38 | #include "categoryfilterimpl.h" | 41 | /* STD */ |
42 | #include <iostream> | ||
43 | using namespace std; | ||
44 | |||
39 | 45 | ||
40 | CategoryFilterImpl :: CategoryFilterImpl(const QString &categories, const QString &selectedCategories, QWidget *parent, const char *name ) | 46 | CategoryFilterImpl :: CategoryFilterImpl(const QString &categories, const QString &selectedCategories, QWidget *parent, const char *name ) |
41 | : QDialog( parent, name, true ) | 47 | : QDialog( parent, name, true ) |
42 | { | 48 | { |
43 | setCaption( tr( "Category Filter" ) ); | 49 | setCaption( tr( "Category Filter" ) ); |
44 | 50 | ||
45 | QVBoxLayout *layout = new QVBoxLayout( this ); | 51 | QVBoxLayout *layout = new QVBoxLayout( this ); |
46 | layout->setMargin( 2 ); | 52 | layout->setMargin( 2 ); |
47 | layout->setSpacing( 4 ); | 53 | layout->setSpacing( 4 ); |
48 | 54 | ||
49 | QGroupBox *grpbox = new QGroupBox( 0, Qt::Vertical, tr( "Select one or more groups" ), this ); | 55 | QGroupBox *grpbox = new QGroupBox( 0, Qt::Vertical, tr( "Select one or more groups" ), this ); |
50 | grpbox->layout()->setSpacing( 2 ); | 56 | grpbox->layout()->setSpacing( 2 ); |
51 | grpbox->layout()->setMargin( 4 ); | 57 | grpbox->layout()->setMargin( 4 ); |
52 | layout->addWidget( grpbox ); | 58 | layout->addWidget( grpbox ); |
53 | 59 | ||
54 | QVBoxLayout *grplayout = new QVBoxLayout( grpbox->layout() ); | 60 | QVBoxLayout *grplayout = new QVBoxLayout( grpbox->layout() ); |
55 | 61 | ||
56 | lstCategories = new QListBox( grpbox ); | 62 | lstCategories = new QListBox( grpbox ); |
57 | lstCategories->setSelectionMode( QListBox::Multi ); | 63 | lstCategories->setSelectionMode( QListBox::Multi ); |
58 | grplayout->addWidget( lstCategories ); | 64 | grplayout->addWidget( lstCategories ); |
59 | 65 | ||
60 | // Split up categories and add them to the listbox | 66 | // Split up categories and add them to the listbox |
61 | int start = 1; | 67 | int start = 1; |
62 | 68 | ||
63 | QString item; | 69 | QString item; |
64 | int end; | 70 | int end; |
65 | QString finditem; | 71 | QString finditem; |
66 | do | 72 | do |
67 | { | 73 | { |
68 | end = categories.find( "#", start ); | 74 | end = categories.find( "#", start ); |
69 | item = categories.mid( start, end - start ); | 75 | item = categories.mid( start, end - start ); |
70 | if ( item != "" ) | 76 | if ( item != "" ) |
71 | { | 77 | { |
72 | lstCategories->insertItem( item ); | 78 | lstCategories->insertItem( item ); |
73 | finditem = QString( "#%1#" ).arg( item ); | 79 | finditem = QString( "#%1#" ).arg( item ); |
74 | if ( selectedCategories.find( finditem ) != -1 ) | 80 | if ( selectedCategories.find( finditem ) != -1 ) |
75 | lstCategories->setSelected( lstCategories->count()-1, true ); | 81 | lstCategories->setSelected( lstCategories->count()-1, true ); |
76 | } | 82 | } |
77 | 83 | ||
78 | start = end + 1; | 84 | start = end + 1; |
79 | } while ( start < (int)categories.length() ); | 85 | } |
86 | while ( start < (int)categories.length() ); | ||
80 | 87 | ||
81 | lstCategories->sort( true ); | 88 | lstCategories->sort( true ); |
82 | 89 | ||
83 | showMaximized(); | 90 | QPEApplication::showDialog( this ); |
84 | } | 91 | } |
85 | 92 | ||
86 | CategoryFilterImpl :: ~CategoryFilterImpl() | 93 | CategoryFilterImpl :: ~CategoryFilterImpl() |
87 | { | 94 | {} |
88 | } | ||
89 | 95 | ||
90 | QString CategoryFilterImpl :: getSelectedFilter() | 96 | QString CategoryFilterImpl :: getSelectedFilter() |
91 | { | 97 | { |
92 | // Grab cetegories from listbox | 98 | // Grab cetegories from listbox |
93 | QString ret = "#"; | 99 | QString ret = "#"; |
94 | 100 | ||
95 | for ( int i = 0 ; i < (int)lstCategories->count() ; ++i ) | 101 | for ( int i = 0 ; i < (int)lstCategories->count() ; ++i ) |
96 | { | 102 | { |
97 | if ( lstCategories->isSelected( i ) ) | 103 | if ( lstCategories->isSelected( i ) ) |
98 | { | 104 | { |
99 | ret.append( lstCategories->text( i ) ); | 105 | ret.append( lstCategories->text( i ) ); |
100 | ret.append( "#" ); | 106 | ret.append( "#" ); |
101 | } | 107 | } |
102 | } | 108 | } |
103 | 109 | ||
104 | if ( ret == "#" ) | 110 | if ( ret == "#" ) |
105 | ret = ""; | 111 | ret = ""; |
106 | return ret; | 112 | return ret; |
107 | } | 113 | } |
diff --git a/noncore/settings/aqpkg/instoptionsimpl.cpp b/noncore/settings/aqpkg/instoptionsimpl.cpp index 9d52013..126e3b9 100644 --- a/noncore/settings/aqpkg/instoptionsimpl.cpp +++ b/noncore/settings/aqpkg/instoptionsimpl.cpp | |||
@@ -6,62 +6,65 @@ | |||
6 | .>+-= | 6 | .>+-= |
7 | _;:, .> :=|. This file is free software; you can | 7 | _;:, .> :=|. This file 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 General Public | 9 | :`=1 )Y*s>-.-- : the terms of the GNU 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 file is distributed in the hope that | 14 | .i_,=:_. -<s. This file 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 General | 18 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU General |
19 | ..}^=.= = ; Public License for more details. | 19 | ..}^=.= = ; Public License for more details. |
20 | ++= -. .` .: | 20 | ++= -. .` .: |
21 | : = ...= . :.=- You should have received a copy of the GNU | 21 | : = ...= . :.=- You should have received a copy of the GNU |
22 | -. .:....=;==+<; General Public License along with this file; | 22 | -. .:....=;==+<; General Public License along with this file; |
23 | -_. . . )=. = see the file COPYING. If not, write to the | 23 | -_. . . )=. = see the file COPYING. If not, write to the |
24 | -- :-=` Free Software Foundation, Inc., | 24 | -- :-=` Free Software Foundation, Inc., |
25 | 59 Temple Place - Suite 330, | 25 | 59 Temple Place - Suite 330, |
26 | Boston, MA 02111-1307, USA. | 26 | Boston, MA 02111-1307, USA. |
27 | 27 | ||
28 | */ | 28 | */ |
29 | 29 | ||
30 | #include "global.h" | ||
31 | #include "instoptionsimpl.h" | ||
32 | #include "ipkg.h" | ||
33 | |||
34 | /* OPIE */ | ||
30 | #ifdef QWS | 35 | #ifdef QWS |
31 | #include <qpe/config.h> | 36 | #include <qpe/config.h> |
32 | #endif | 37 | #endif |
38 | #include <qpe/qpeapplication.h> | ||
33 | 39 | ||
40 | /* QT */ | ||
34 | #include <qcheckbox.h> | 41 | #include <qcheckbox.h> |
35 | #include <qcombobox.h> | 42 | #include <qcombobox.h> |
36 | #include <qgroupbox.h> | 43 | #include <qgroupbox.h> |
37 | #include <qlabel.h> | 44 | #include <qlabel.h> |
38 | #include <qlayout.h> | 45 | #include <qlayout.h> |
39 | 46 | ||
40 | #include "global.h" | ||
41 | #include "instoptionsimpl.h" | ||
42 | #include "ipkg.h" | ||
43 | |||
44 | InstallOptionsDlgImpl::InstallOptionsDlgImpl( int flags, int verb, QWidget * parent, const char* name, bool modal, WFlags fl ) | 47 | InstallOptionsDlgImpl::InstallOptionsDlgImpl( int flags, int verb, QWidget * parent, const char* name, bool modal, WFlags fl ) |
45 | : QDialog( parent, name, modal, fl ) | 48 | : QDialog( parent, name, modal, fl ) |
46 | { | 49 | { |
47 | setCaption( tr( "Options" ) ); | 50 | setCaption( tr( "Options" ) ); |
48 | 51 | ||
49 | QVBoxLayout *layout = new QVBoxLayout( this ); | 52 | QVBoxLayout *layout = new QVBoxLayout( this ); |
50 | layout->setMargin( 2 ); | 53 | layout->setMargin( 2 ); |
51 | layout->setSpacing( 4 ); | 54 | layout->setSpacing( 4 ); |
52 | 55 | ||
53 | QGroupBox *grpbox = new QGroupBox( 0, Qt::Vertical, tr( "Options" ), this ); | 56 | QGroupBox *grpbox = new QGroupBox( 0, Qt::Vertical, tr( "Options" ), this ); |
54 | grpbox->layout()->setSpacing( 2 ); | 57 | grpbox->layout()->setSpacing( 2 ); |
55 | grpbox->layout()->setMargin( 4 ); | 58 | grpbox->layout()->setMargin( 4 ); |
56 | layout->addWidget( grpbox ); | 59 | layout->addWidget( grpbox ); |
57 | 60 | ||
58 | QVBoxLayout *grplayout = new QVBoxLayout( grpbox->layout() ); | 61 | QVBoxLayout *grplayout = new QVBoxLayout( grpbox->layout() ); |
59 | 62 | ||
60 | forceDepends = new QCheckBox( tr( "Force Depends" ), grpbox ); | 63 | forceDepends = new QCheckBox( tr( "Force Depends" ), grpbox ); |
61 | grplayout->addWidget( forceDepends ); | 64 | grplayout->addWidget( forceDepends ); |
62 | 65 | ||
63 | forceReinstall = new QCheckBox( tr( "Force Reinstall" ), grpbox ); | 66 | forceReinstall = new QCheckBox( tr( "Force Reinstall" ), grpbox ); |
64 | grplayout->addWidget( forceReinstall ); | 67 | grplayout->addWidget( forceReinstall ); |
65 | 68 | ||
66 | forceRemove = new QCheckBox( tr( "Force Remove" ), grpbox ); | 69 | forceRemove = new QCheckBox( tr( "Force Remove" ), grpbox ); |
67 | grplayout->addWidget( forceRemove ); | 70 | grplayout->addWidget( forceRemove ); |
@@ -74,55 +77,54 @@ InstallOptionsDlgImpl::InstallOptionsDlgImpl( int flags, int verb, QWidget * par | |||
74 | 77 | ||
75 | verboseIpkg = new QComboBox( grpbox ); | 78 | verboseIpkg = new QComboBox( grpbox ); |
76 | verboseIpkg->insertItem( tr( "Errors only" ) ); | 79 | verboseIpkg->insertItem( tr( "Errors only" ) ); |
77 | verboseIpkg->insertItem( tr( "Normal messages" ) ); | 80 | verboseIpkg->insertItem( tr( "Normal messages" ) ); |
78 | verboseIpkg->insertItem( tr( "Informative messages" ) ); | 81 | verboseIpkg->insertItem( tr( "Informative messages" ) ); |
79 | verboseIpkg->insertItem( tr( "Troubleshooting output" ) ); | 82 | verboseIpkg->insertItem( tr( "Troubleshooting output" ) ); |
80 | verboseIpkg->setCurrentItem( verb ); | 83 | verboseIpkg->setCurrentItem( verb ); |
81 | grplayout->addWidget( verboseIpkg ); | 84 | grplayout->addWidget( verboseIpkg ); |
82 | 85 | ||
83 | grplayout->addItem( new QSpacerItem( 1, 1, QSizePolicy::Minimum, QSizePolicy::Expanding ) ); | 86 | grplayout->addItem( new QSpacerItem( 1, 1, QSizePolicy::Minimum, QSizePolicy::Expanding ) ); |
84 | 87 | ||
85 | if ( flags & FORCE_DEPENDS ) | 88 | if ( flags & FORCE_DEPENDS ) |
86 | forceDepends->setChecked( true ); | 89 | forceDepends->setChecked( true ); |
87 | if ( flags & FORCE_REINSTALL ) | 90 | if ( flags & FORCE_REINSTALL ) |
88 | forceReinstall->setChecked( true ); | 91 | forceReinstall->setChecked( true ); |
89 | if ( flags & FORCE_REMOVE ) | 92 | if ( flags & FORCE_REMOVE ) |
90 | forceRemove->setChecked( true ); | 93 | forceRemove->setChecked( true ); |
91 | if ( flags & FORCE_OVERWRITE ) | 94 | if ( flags & FORCE_OVERWRITE ) |
92 | forceOverwrite->setChecked( true ); | 95 | forceOverwrite->setChecked( true ); |
93 | // if ( flags & VERBOSE_WGET ) | 96 | // if ( flags & VERBOSE_WGET ) |
94 | // verboseWget->setChecked( true ); | 97 | // verboseWget->setChecked( true ); |
95 | // if ( flags & MAKE_LINKS ) | 98 | // if ( flags & MAKE_LINKS ) |
96 | // makeLinks->setChecked( true ); | 99 | // makeLinks->setChecked( true ); |
97 | 100 | ||
98 | showMaximized(); | 101 | QPEApplication::showDialog( this ); |
99 | 102 | ||
100 | } | 103 | } |
101 | 104 | ||
102 | InstallOptionsDlgImpl::~InstallOptionsDlgImpl() | 105 | InstallOptionsDlgImpl::~InstallOptionsDlgImpl() |
103 | { | 106 | {} |
104 | } | ||
105 | 107 | ||
106 | 108 | ||
107 | int InstallOptionsDlgImpl :: getFlags() | 109 | int InstallOptionsDlgImpl :: getFlags() |
108 | { | 110 | { |
109 | int flags = 0; | 111 | int flags = 0; |
110 | 112 | ||
111 | if ( forceDepends->isChecked() ) | 113 | if ( forceDepends->isChecked() ) |
112 | flags |= FORCE_DEPENDS; | 114 | flags |= FORCE_DEPENDS; |
113 | if ( forceReinstall->isChecked() ) | 115 | if ( forceReinstall->isChecked() ) |
114 | flags |= FORCE_REINSTALL; | 116 | flags |= FORCE_REINSTALL; |
115 | if ( forceRemove->isChecked() ) | 117 | if ( forceRemove->isChecked() ) |
116 | flags |= FORCE_REMOVE; | 118 | flags |= FORCE_REMOVE; |
117 | if ( forceOverwrite->isChecked() ) | 119 | if ( forceOverwrite->isChecked() ) |
118 | flags |= FORCE_OVERWRITE; | 120 | flags |= FORCE_OVERWRITE; |
119 | if ( verboseWget->isChecked() ) | 121 | if ( verboseWget->isChecked() ) |
120 | flags |= VERBOSE_WGET; | 122 | flags |= VERBOSE_WGET; |
121 | 123 | ||
122 | return flags; | 124 | return flags; |
123 | } | 125 | } |
124 | 126 | ||
125 | int InstallOptionsDlgImpl :: getInfoLevel() | 127 | int InstallOptionsDlgImpl :: getInfoLevel() |
126 | { | 128 | { |
127 | return verboseIpkg->currentItem(); | 129 | return verboseIpkg->currentItem(); |
128 | } | 130 | } |
diff --git a/noncore/settings/aqpkg/mainwin.cpp b/noncore/settings/aqpkg/mainwin.cpp index dbe694e..6f5c712 100644 --- a/noncore/settings/aqpkg/mainwin.cpp +++ b/noncore/settings/aqpkg/mainwin.cpp | |||
@@ -6,84 +6,87 @@ | |||
6 | .>+-= | 6 | .>+-= |
7 | _;:, .> :=|. This file is free software; you can | 7 | _;:, .> :=|. This file 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 General Public | 9 | :`=1 )Y*s>-.-- : the terms of the GNU 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 file is distributed in the hope that | 14 | .i_,=:_. -<s. This file 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 General | 18 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU General |
19 | ..}^=.= = ; Public License for more details. | 19 | ..}^=.= = ; Public License for more details. |
20 | ++= -. .` .: | 20 | ++= -. .` .: |
21 | : = ...= . :.=- You should have received a copy of the GNU | 21 | : = ...= . :.=- You should have received a copy of the GNU |
22 | -. .:....=;==+<; General Public License along with this file; | 22 | -. .:....=;==+<; General Public License along with this file; |
23 | -_. . . )=. = see the file COPYING. If not, write to the | 23 | -_. . . )=. = see the file COPYING. If not, write to the |
24 | -- :-=` Free Software Foundation, Inc., | 24 | -- :-=` Free Software Foundation, Inc., |
25 | 59 Temple Place - Suite 330, | 25 | 59 Temple Place - Suite 330, |
26 | Boston, MA 02111-1307, USA. | 26 | Boston, MA 02111-1307, USA. |
27 | 27 | ||
28 | */ | 28 | */ |
29 | 29 | ||
30 | #include <linux/limits.h> | 30 | #include "categoryfilterimpl.h" |
31 | #include <unistd.h> | 31 | #include "datamgr.h" |
32 | #include "global.h" | ||
33 | #include "inputdlg.h" | ||
34 | #include "ipkg.h" | ||
35 | #include "installdlgimpl.h" | ||
36 | #include "letterpushbutton.h" | ||
37 | #include "mainwin.h" | ||
38 | #include "packagewin.h" | ||
39 | #include "settingsimpl.h" | ||
40 | #include "utils.h" | ||
32 | 41 | ||
42 | /* OPIE */ | ||
33 | #include <qpe/qcopenvelope_qws.h> | 43 | #include <qpe/qcopenvelope_qws.h> |
34 | #include <qmenubar.h> | ||
35 | #include <qpe/qpeapplication.h> | 44 | #include <qpe/qpeapplication.h> |
36 | #include <qtoolbar.h> | ||
37 | #include <qpe/config.h> | 45 | #include <qpe/config.h> |
38 | #include <qpe/resource.h> | 46 | #include <qpe/resource.h> |
39 | 47 | ||
48 | /* QT */ | ||
49 | #include <qmenubar.h> | ||
50 | #include <qtoolbar.h> | ||
40 | #include <qaction.h> | 51 | #include <qaction.h> |
41 | #include <qcombobox.h> | 52 | #include <qcombobox.h> |
42 | #include <qfile.h> | 53 | #include <qfile.h> |
43 | #include <qlabel.h> | 54 | #include <qlabel.h> |
44 | #include <qlayout.h> | 55 | #include <qlayout.h> |
45 | #include <qlineedit.h> | 56 | #include <qlineedit.h> |
46 | #include <qlistview.h> | 57 | #include <qlistview.h> |
47 | #include <qmenubar.h> | 58 | #include <qmenubar.h> |
48 | #include <qmessagebox.h> | 59 | #include <qmessagebox.h> |
49 | #include <qpopupmenu.h> | 60 | #include <qpopupmenu.h> |
50 | #include <qprogressbar.h> | 61 | #include <qprogressbar.h> |
51 | #include <qtimer.h> | 62 | #include <qtimer.h> |
52 | #include <qwhatsthis.h> | 63 | #include <qwhatsthis.h> |
53 | #include <qwidgetstack.h> | 64 | #include <qwidgetstack.h> |
54 | 65 | ||
55 | #include "categoryfilterimpl.h" | 66 | /* STD */ |
56 | #include "datamgr.h" | 67 | #include <linux/limits.h> |
57 | #include "global.h" | 68 | #include <unistd.h> |
58 | #include "inputdlg.h" | ||
59 | #include "ipkg.h" | ||
60 | #include "installdlgimpl.h" | ||
61 | #include "letterpushbutton.h" | ||
62 | #include "mainwin.h" | ||
63 | #include "packagewin.h" | ||
64 | #include "settingsimpl.h" | ||
65 | #include "utils.h" | ||
66 | 69 | ||
67 | extern int compareVersions( const char *v1, const char *v2 ); | 70 | extern int compareVersions( const char *v1, const char *v2 ); |
68 | 71 | ||
69 | MainWindow :: MainWindow( QWidget* parent, const char* name, WFlags fl ) | 72 | MainWindow :: MainWindow( QWidget* parent, const char* name, WFlags fl ) |
70 | :QMainWindow( parent, name, fl || WStyle_ContextHelp ) | 73 | :QMainWindow( parent, name, fl || WStyle_ContextHelp ) |
71 | { | 74 | { |
72 | // Disable suspend mode | 75 | // Disable suspend mode |
73 | QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::DisableSuspend; | 76 | QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::DisableSuspend; |
74 | 77 | ||
75 | LOCAL_SERVER = QObject::tr( "Installed packages" ); | 78 | LOCAL_SERVER = QObject::tr( "Installed packages" ); |
76 | LOCAL_IPKGS = QObject::tr( "Local packages" ); | 79 | LOCAL_IPKGS = QObject::tr( "Local packages" ); |
77 | 80 | ||
78 | setCaption( tr( "AQPkg - Package Manager" ) ); | 81 | setCaption( tr( "AQPkg - Package Manager" ) ); |
79 | 82 | ||
80 | // Create UI widgets | 83 | // Create UI widgets |
81 | initMainWidget(); | 84 | initMainWidget(); |
82 | initProgressWidget(); | 85 | initProgressWidget(); |
83 | 86 | ||
84 | // Build menu and tool bars | 87 | // Build menu and tool bars |
85 | setToolBarsMovable( FALSE ); | 88 | setToolBarsMovable( FALSE ); |
86 | 89 | ||
87 | QToolBar *bar = new QToolBar( this ); | 90 | QToolBar *bar = new QToolBar( this ); |
88 | bar->setHorizontalStretchable( TRUE ); | 91 | bar->setHorizontalStretchable( TRUE ); |
89 | QMenuBar *mb = new QMenuBar( bar ); | 92 | QMenuBar *mb = new QMenuBar( bar ); |
@@ -1160,56 +1163,57 @@ void MainWindow :: letterPushed( QString t ) | |||
1160 | 1163 | ||
1161 | QCheckListItem *item; | 1164 | QCheckListItem *item; |
1162 | if ( start == 0 ) | 1165 | if ( start == 0 ) |
1163 | { | 1166 | { |
1164 | item = (QCheckListItem *)packagesList->firstChild(); | 1167 | item = (QCheckListItem *)packagesList->firstChild(); |
1165 | start = top; | 1168 | start = top; |
1166 | } | 1169 | } |
1167 | else | 1170 | else |
1168 | item = (QCheckListItem *)start->nextSibling(); | 1171 | item = (QCheckListItem *)start->nextSibling(); |
1169 | 1172 | ||
1170 | if ( item == 0 ) | 1173 | if ( item == 0 ) |
1171 | item = (QCheckListItem *)packagesList->firstChild(); | 1174 | item = (QCheckListItem *)packagesList->firstChild(); |
1172 | do | 1175 | do |
1173 | { | 1176 | { |
1174 | if ( item->text().lower().startsWith( t.lower() ) ) | 1177 | if ( item->text().lower().startsWith( t.lower() ) ) |
1175 | { | 1178 | { |
1176 | packagesList->setSelected( item, true ); | 1179 | packagesList->setSelected( item, true ); |
1177 | packagesList->ensureItemVisible( item ); | 1180 | packagesList->ensureItemVisible( item ); |
1178 | break; | 1181 | break; |
1179 | } | 1182 | } |
1180 | 1183 | ||
1181 | item = (QCheckListItem *)item->nextSibling(); | 1184 | item = (QCheckListItem *)item->nextSibling(); |
1182 | if ( !item ) | 1185 | if ( !item ) |
1183 | item = (QCheckListItem *)packagesList->firstChild(); | 1186 | item = (QCheckListItem *)packagesList->firstChild(); |
1184 | } while ( item != start); | 1187 | } |
1188 | while ( item != start); | ||
1185 | } | 1189 | } |
1186 | 1190 | ||
1187 | void MainWindow :: slotDisplayPackage( QListViewItem *item ) | 1191 | void MainWindow :: slotDisplayPackage( QListViewItem *item ) |
1188 | { | 1192 | { |
1189 | QString itemstr( ((QCheckListItem*)item)->text() ); | 1193 | QString itemstr( ((QCheckListItem*)item)->text() ); |
1190 | PackageWindow *p = new PackageWindow( mgr->getServer( serversList->currentText() )->getPackage( itemstr ) ); | 1194 | PackageWindow *p = new PackageWindow( mgr->getServer( serversList->currentText() )->getPackage( itemstr ) ); |
1191 | p->showMaximized(); | 1195 | QPEApplication::showWidget( p ); |
1192 | } | 1196 | } |
1193 | 1197 | ||
1194 | QuestionDlg::QuestionDlg( const QString &caption, const QString &text, const QString &secondbtn ) | 1198 | QuestionDlg::QuestionDlg( const QString &caption, const QString &text, const QString &secondbtn ) |
1195 | : QWidget( 0x0, 0x0, WType_Modal | WType_TopLevel | WStyle_Dialog ) | 1199 | : QWidget( 0x0, 0x0, WType_Modal | WType_TopLevel | WStyle_Dialog ) |
1196 | { | 1200 | { |
1197 | setCaption( caption ); | 1201 | setCaption( caption ); |
1198 | resize( 175, 100 ); | 1202 | resize( 175, 100 ); |
1199 | 1203 | ||
1200 | QGridLayout *layout = new QGridLayout( this ); | 1204 | QGridLayout *layout = new QGridLayout( this ); |
1201 | 1205 | ||
1202 | QLabel *l = new QLabel( text, this ); | 1206 | QLabel *l = new QLabel( text, this ); |
1203 | l->setAlignment( AlignCenter | WordBreak ); | 1207 | l->setAlignment( AlignCenter | WordBreak ); |
1204 | layout->addMultiCellWidget( l, 0, 0, 0, 1 ); | 1208 | layout->addMultiCellWidget( l, 0, 0, 0, 1 ); |
1205 | 1209 | ||
1206 | btn1 = new QPushButton( tr( "Remove" ), this ); | 1210 | btn1 = new QPushButton( tr( "Remove" ), this ); |
1207 | connect( btn1, SIGNAL(clicked()), this, SLOT(slotButtonPressed()) ); | 1211 | connect( btn1, SIGNAL(clicked()), this, SLOT(slotButtonPressed()) ); |
1208 | layout->addWidget( btn1, 1, 0 ); | 1212 | layout->addWidget( btn1, 1, 0 ); |
1209 | 1213 | ||
1210 | btn2 = new QPushButton( secondbtn, this ); | 1214 | btn2 = new QPushButton( secondbtn, this ); |
1211 | connect( btn2, SIGNAL(clicked()), this, SLOT(slotButtonPressed()) ); | 1215 | connect( btn2, SIGNAL(clicked()), this, SLOT(slotButtonPressed()) ); |
1212 | layout->addWidget( btn2, 1, 1 ); | 1216 | layout->addWidget( btn2, 1, 1 ); |
1213 | 1217 | ||
1214 | executing = FALSE; | 1218 | executing = FALSE; |
1215 | } | 1219 | } |
diff --git a/noncore/settings/aqpkg/settingsimpl.cpp b/noncore/settings/aqpkg/settingsimpl.cpp index 4887ceb..9fdf31e 100644 --- a/noncore/settings/aqpkg/settingsimpl.cpp +++ b/noncore/settings/aqpkg/settingsimpl.cpp | |||
@@ -6,107 +6,106 @@ | |||
6 | .>+-= | 6 | .>+-= |
7 | _;:, .> :=|. This file is free software; you can | 7 | _;:, .> :=|. This file 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 General Public | 9 | :`=1 )Y*s>-.-- : the terms of the GNU 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 file is distributed in the hope that | 14 | .i_,=:_. -<s. This file 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 General | 18 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU General |
19 | ..}^=.= = ; Public License for more details. | 19 | ..}^=.= = ; Public License for more details. |
20 | ++= -. .` .: | 20 | ++= -. .` .: |
21 | : = ...= . :.=- You should have received a copy of the GNU | 21 | : = ...= . :.=- You should have received a copy of the GNU |
22 | -. .:....=;==+<; General Public License along with this file; | 22 | -. .:....=;==+<; General Public License along with this file; |
23 | -_. . . )=. = see the file COPYING. If not, write to the | 23 | -_. . . )=. = see the file COPYING. If not, write to the |
24 | -- :-=` Free Software Foundation, Inc., | 24 | -- :-=` Free Software Foundation, Inc., |
25 | 59 Temple Place - Suite 330, | 25 | 59 Temple Place - Suite 330, |
26 | Boston, MA 02111-1307, USA. | 26 | Boston, MA 02111-1307, USA. |
27 | 27 | ||
28 | */ | 28 | */ |
29 | 29 | ||
30 | #include <fstream> | 30 | #include "settingsimpl.h" |
31 | #include <algorithm> | 31 | #include "global.h" |
32 | using namespace std; | 32 | |
33 | /* OPIE */ | ||
34 | #include <opie/otabwidget.h> | ||
35 | #ifdef QWS | ||
36 | #include <qpe/config.h> | ||
37 | #include <qpe/resource.h> | ||
38 | #endif | ||
39 | #include <qpe/qpeapplication.h> | ||
33 | 40 | ||
41 | /* QT */ | ||
34 | #include <qcheckbox.h> | 42 | #include <qcheckbox.h> |
35 | #include <qgroupbox.h> | 43 | #include <qgroupbox.h> |
36 | #include <qlabel.h> | 44 | #include <qlabel.h> |
37 | #include <qlayout.h> | 45 | #include <qlayout.h> |
38 | #include <qlineedit.h> | 46 | #include <qlineedit.h> |
39 | #include <qlistbox.h> | 47 | #include <qlistbox.h> |
40 | #include <qpushbutton.h> | 48 | #include <qpushbutton.h> |
41 | 49 | ||
42 | #include <opie/otabwidget.h> | 50 | /* STD */ |
43 | 51 | #include <fstream> | |
44 | #ifdef QWS | 52 | #include <algorithm> |
45 | #include <qpe/config.h> | 53 | using namespace std; |
46 | #include <qpe/resource.h> | ||
47 | #endif | ||
48 | |||
49 | #include "settingsimpl.h" | ||
50 | |||
51 | #include "global.h" | ||
52 | 54 | ||
53 | SettingsImpl :: SettingsImpl( DataManager *dataManager, QWidget * parent, const char* name, bool modal, WFlags fl ) | 55 | SettingsImpl :: SettingsImpl( DataManager *dataManager, QWidget * parent, const char* name, bool modal, WFlags fl ) |
54 | : QDialog( parent, name, modal, fl ) | 56 | : QDialog( parent, name, modal, fl ) |
55 | { | 57 | { |
56 | setCaption( tr( "Configuration" ) ); | 58 | setCaption( tr( "Configuration" ) ); |
57 | 59 | ||
58 | // Setup layout to make everything pretty | 60 | // Setup layout to make everything pretty |
59 | QVBoxLayout *layout = new QVBoxLayout( this ); | 61 | QVBoxLayout *layout = new QVBoxLayout( this ); |
60 | layout->setMargin( 2 ); | 62 | layout->setMargin( 2 ); |
61 | layout->setSpacing( 4 ); | 63 | layout->setSpacing( 4 ); |
62 | 64 | ||
63 | // Setup tabs for all info | 65 | // Setup tabs for all info |
64 | OTabWidget *tabwidget = new OTabWidget( this ); | 66 | OTabWidget *tabwidget = new OTabWidget( this ); |
65 | layout->addWidget( tabwidget ); | 67 | layout->addWidget( tabwidget ); |
66 | 68 | ||
67 | tabwidget->addTab( initServerTab(), "aqpkg/servertab", tr( "Servers" ) ); | 69 | tabwidget->addTab( initServerTab(), "aqpkg/servertab", tr( "Servers" ) ); |
68 | tabwidget->addTab( initDestinationTab(), "aqpkg/desttab", tr( "Destinations" ) ); | 70 | tabwidget->addTab( initDestinationTab(), "aqpkg/desttab", tr( "Destinations" ) ); |
69 | tabwidget->addTab( initProxyTab(), "aqpkg/proxytab", tr( "Proxies" ) ); | 71 | tabwidget->addTab( initProxyTab(), "aqpkg/proxytab", tr( "Proxies" ) ); |
70 | tabwidget->setCurrentTab( tr( "Servers" ) ); | 72 | tabwidget->setCurrentTab( tr( "Servers" ) ); |
71 | 73 | ||
72 | dataMgr = dataManager; | 74 | dataMgr = dataManager; |
73 | setupData(); | 75 | setupData(); |
74 | changed = false; | 76 | changed = false; |
75 | newserver = false; | 77 | newserver = false; |
76 | newdestination = false; | 78 | newdestination = false; |
77 | } | 79 | } |
78 | 80 | ||
79 | SettingsImpl :: ~SettingsImpl() | 81 | SettingsImpl :: ~SettingsImpl() |
80 | { | 82 | { |
81 | |||
82 | } | 83 | } |
83 | 84 | ||
84 | bool SettingsImpl :: showDlg() | 85 | bool SettingsImpl :: showDlg() |
85 | { | 86 | { |
86 | showMaximized(); | 87 | QPEApplication::execDialog( this ); |
87 | exec(); | ||
88 | |||
89 | if ( changed ) | 88 | if ( changed ) |
90 | dataMgr->writeOutIpkgConf(); | 89 | dataMgr->writeOutIpkgConf(); |
91 | 90 | ||
92 | return changed; | 91 | return changed; |
93 | } | 92 | } |
94 | 93 | ||
95 | QWidget *SettingsImpl :: initServerTab() | 94 | QWidget *SettingsImpl :: initServerTab() |
96 | { | 95 | { |
97 | QWidget *control = new QWidget( this ); | 96 | QWidget *control = new QWidget( this ); |
98 | 97 | ||
99 | QVBoxLayout *vb = new QVBoxLayout( control ); | 98 | QVBoxLayout *vb = new QVBoxLayout( control ); |
100 | 99 | ||
101 | QScrollView *sv = new QScrollView( control ); | 100 | QScrollView *sv = new QScrollView( control ); |
102 | vb->addWidget( sv, 0, 0 ); | 101 | vb->addWidget( sv, 0, 0 ); |
103 | sv->setResizePolicy( QScrollView::AutoOneFit ); | 102 | sv->setResizePolicy( QScrollView::AutoOneFit ); |
104 | sv->setFrameStyle( QFrame::NoFrame ); | 103 | sv->setFrameStyle( QFrame::NoFrame ); |
105 | 104 | ||
106 | QWidget *container = new QWidget( sv->viewport() ); | 105 | QWidget *container = new QWidget( sv->viewport() ); |
107 | sv->addChild( container ); | 106 | sv->addChild( container ); |
108 | 107 | ||
109 | QGridLayout *layout = new QGridLayout( container ); | 108 | QGridLayout *layout = new QGridLayout( container ); |
110 | layout->setSpacing( 2 ); | 109 | layout->setSpacing( 2 ); |
111 | layout->setMargin( 4 ); | 110 | layout->setMargin( 4 ); |
112 | 111 | ||
@@ -441,53 +440,55 @@ void SettingsImpl :: changeDestinationDetails() | |||
441 | { | 440 | { |
442 | Destination *d = dataMgr->getDestination( destinations->currentText() ); | 441 | Destination *d = dataMgr->getDestination( destinations->currentText() ); |
443 | if ( d ) | 442 | if ( d ) |
444 | { | 443 | { |
445 | // Update url | 444 | // Update url |
446 | d->setDestinationPath( destinationurl->text() ); | 445 | d->setDestinationPath( destinationurl->text() ); |
447 | d->linkToRoot( linkToRoot->isChecked() ); | 446 | d->linkToRoot( linkToRoot->isChecked() ); |
448 | 447 | ||
449 | // Check if server name has changed, if it has then we need to replace the key in the map | 448 | // Check if server name has changed, if it has then we need to replace the key in the map |
450 | if ( destinationName != newName ) | 449 | if ( destinationName != newName ) |
451 | { | 450 | { |
452 | // Update server name | 451 | // Update server name |
453 | d->setDestinationName( newName ); | 452 | d->setDestinationName( newName ); |
454 | 453 | ||
455 | // Update list box | 454 | // Update list box |
456 | destinations->changeItem( newName, currentSelectedDestination ); | 455 | destinations->changeItem( newName, currentSelectedDestination ); |
457 | } | 456 | } |
458 | 457 | ||
459 | #ifdef QWS | 458 | #ifdef QWS |
460 | QString key = newName; | 459 | QString key = newName; |
461 | key += "_linkToRoot"; | 460 | key += "_linkToRoot"; |
462 | int val = d->linkToRoot(); | 461 | int val = d->linkToRoot(); |
463 | cfg.writeEntry( key, val ); | 462 | cfg.writeEntry( key, val ); |
464 | #endif | 463 | #endif |
464 | |||
465 | } | 465 | } |
466 | } | 466 | } |
467 | else | 467 | else |
468 | { | 468 | { |
469 | dataMgr->getDestinationList().append( new Destination( newName, destinationurl->text() ) ); | 469 | dataMgr->getDestinationList().append( new Destination( newName, destinationurl->text() ) ); |
470 | destinations->insertItem( newName ); | 470 | destinations->insertItem( newName ); |
471 | destinations->setCurrentItem( destinations->count() ); | 471 | destinations->setCurrentItem( destinations->count() ); |
472 | newdestination = false; | 472 | newdestination = false; |
473 | 473 | ||
474 | #ifdef QWS | 474 | #ifdef QWS |
475 | QString key = newName; | 475 | QString key = newName; |
476 | key += "_linkToRoot"; | 476 | key += "_linkToRoot"; |
477 | cfg.writeEntry( key, true ); | 477 | cfg.writeEntry( key, true ); |
478 | #endif | 478 | #endif |
479 | |||
479 | } | 480 | } |
480 | } | 481 | } |
481 | 482 | ||
482 | //------------------ Proxy tab ---------------------- | 483 | //------------------ Proxy tab ---------------------- |
483 | void SettingsImpl :: proxyApplyChanges() | 484 | void SettingsImpl :: proxyApplyChanges() |
484 | { | 485 | { |
485 | changed = true; | 486 | changed = true; |
486 | dataMgr->setHttpProxy( txtHttpProxy->text() ); | 487 | dataMgr->setHttpProxy( txtHttpProxy->text() ); |
487 | dataMgr->setFtpProxy( txtFtpProxy->text() ); | 488 | dataMgr->setFtpProxy( txtFtpProxy->text() ); |
488 | dataMgr->setProxyUsername( txtUsername->text() ); | 489 | dataMgr->setProxyUsername( txtUsername->text() ); |
489 | dataMgr->setProxyPassword( txtPassword->text() ); | 490 | dataMgr->setProxyPassword( txtPassword->text() ); |
490 | 491 | ||
491 | dataMgr->setHttpProxyEnabled( chkHttpProxyEnabled->isChecked() ); | 492 | dataMgr->setHttpProxyEnabled( chkHttpProxyEnabled->isChecked() ); |
492 | dataMgr->setFtpProxyEnabled( chkFtpProxyEnabled->isChecked() ); | 493 | dataMgr->setFtpProxyEnabled( chkFtpProxyEnabled->isChecked() ); |
493 | } | 494 | } |
diff --git a/noncore/settings/backup/backuprestore.cpp b/noncore/settings/backup/backuprestore.cpp index a00193d..977c283 100644 --- a/noncore/settings/backup/backuprestore.cpp +++ b/noncore/settings/backup/backuprestore.cpp | |||
@@ -1,68 +1,70 @@ | |||
1 | 1 | ||
2 | #include "backuprestore.h" | 2 | #include "backuprestore.h" |
3 | //#include "output.h" | ||
4 | #include "errordialog.h" | 3 | #include "errordialog.h" |
5 | 4 | ||
5 | /* OPIE */ | ||
6 | #include <opie2/ostorageinfo.h> | ||
7 | #include <qpe/qpeapplication.h> | ||
8 | |||
9 | /* QT */ | ||
6 | #include <qapplication.h> | 10 | #include <qapplication.h> |
7 | #include <qmultilineedit.h> | 11 | #include <qmultilineedit.h> |
8 | |||
9 | #include <qdir.h> | 12 | #include <qdir.h> |
10 | #include <qfile.h> | 13 | #include <qfile.h> |
11 | #include <qfileinfo.h> | 14 | #include <qfileinfo.h> |
12 | #include <qlistview.h> | 15 | #include <qlistview.h> |
13 | #include <qpushbutton.h> | 16 | #include <qpushbutton.h> |
14 | #include <qheader.h> | 17 | #include <qheader.h> |
15 | #include <qpe/resource.h> | 18 | #include <qpe/resource.h> |
16 | #include <qpe/config.h> | 19 | #include <qpe/config.h> |
17 | #include <qmessagebox.h> | 20 | #include <qmessagebox.h> |
18 | #include <qcombobox.h> | 21 | #include <qcombobox.h> |
19 | #include <qlist.h> | 22 | #include <qlist.h> |
20 | #include <stdlib.h> | 23 | #include <stdlib.h> |
21 | #include <qregexp.h> | 24 | #include <qregexp.h> |
22 | #include <qtextstream.h> | 25 | #include <qtextstream.h> |
23 | #include <qtextview.h> | 26 | #include <qtextview.h> |
24 | #include <opie2/ostorageinfo.h> | ||
25 | 27 | ||
28 | /* STD */ | ||
26 | #include <errno.h> | 29 | #include <errno.h> |
27 | #include <stdlib.h> | 30 | #include <stdlib.h> |
28 | #include <unistd.h> | 31 | #include <unistd.h> |
29 | #include <sys/stat.h> | 32 | #include <sys/stat.h> |
30 | #include <dirent.h> | 33 | #include <dirent.h> |
31 | 34 | ||
32 | #define HEADER_NAME 0 | 35 | #define HEADER_NAME 0 |
33 | #define HEADER_BACKUP 1 | 36 | #define HEADER_BACKUP 1 |
34 | #define BACKUP_LOCATION 2 | 37 | #define BACKUP_LOCATION 2 |
35 | 38 | ||
36 | #define EXTENSION ".bck" | 39 | #define EXTENSION ".bck" |
37 | 40 | ||
38 | const QString tempFileName = "/tmp/backup.err"; | 41 | const QString tempFileName = "/tmp/backup.err"; |
39 | 42 | ||
40 | 43 | ||
41 | BackupAndRestore::BackupAndRestore( QWidget* parent, const char* name, WFlags fl) | 44 | BackupAndRestore::BackupAndRestore( QWidget* parent, const char* name, WFlags fl) |
42 | : BackupAndRestoreBase(parent, name, fl) | 45 | : BackupAndRestoreBase(parent, name, fl) |
43 | { | 46 | { |
44 | this->showMaximized(); | ||
45 | backupList->header()->hide(); | 47 | backupList->header()->hide(); |
46 | restoreList->header()->hide(); | 48 | restoreList->header()->hide(); |
47 | connect(backupButton, SIGNAL(clicked()), | 49 | connect(backupButton, SIGNAL(clicked()), |
48 | this, SLOT(backup())); | 50 | this, SLOT(backup())); |
49 | connect(restoreButton, SIGNAL(clicked()), | 51 | connect(restoreButton, SIGNAL(clicked()), |
50 | this, SLOT(restore())); | 52 | this, SLOT(restore())); |
51 | connect(backupList, SIGNAL(clicked( QListViewItem * )), | 53 | connect(backupList, SIGNAL(clicked( QListViewItem * )), |
52 | this, SLOT(selectItem(QListViewItem*))); | 54 | this, SLOT(selectItem(QListViewItem*))); |
53 | connect(restoreSource, SIGNAL(activated( int )), | 55 | connect(restoreSource, SIGNAL(activated( int )), |
54 | this, SLOT(sourceDirChanged(int))); | 56 | this, SLOT(sourceDirChanged(int))); |
55 | connect(updateList, SIGNAL(clicked()), | 57 | connect(updateList, SIGNAL(clicked()), |
56 | this, SLOT( fileListUpdate())); | 58 | this, SLOT( fileListUpdate())); |
57 | 59 | ||
58 | //add directorys for backing up | 60 | //add directorys for backing up |
59 | applicationSettings = new QListViewItem(backupList, "Application Settings", "", "Settings/"); | 61 | applicationSettings = new QListViewItem(backupList, "Application Settings", "", "Settings/"); |
60 | selectItem(applicationSettings); | 62 | selectItem(applicationSettings); |
61 | applicationSettings = new QListViewItem(backupList, "Application Data", "", "Applications/"); | 63 | applicationSettings = new QListViewItem(backupList, "Application Data", "", "Applications/"); |
62 | selectItem(applicationSettings); | 64 | selectItem(applicationSettings); |
63 | documents= new QListViewItem(backupList, "Documents", "", "Documents/"); | 65 | documents= new QListViewItem(backupList, "Documents", "", "Documents/"); |
64 | selectItem(documents); | 66 | selectItem(documents); |
65 | 67 | ||
66 | scanForApplicationSettings(); | 68 | scanForApplicationSettings(); |
67 | 69 | ||
68 | OStorageInfo storage; | 70 | OStorageInfo storage; |
@@ -109,48 +111,49 @@ BackupAndRestore::BackupAndRestore( QWidget* parent, const char* name, WFlags f | |||
109 | QList<QString> dontBackupList; | 111 | QList<QString> dontBackupList; |
110 | dontBackupList.setAutoDelete(true); | 112 | dontBackupList.setAutoDelete(true); |
111 | config.setGroup("DontBackup"); | 113 | config.setGroup("DontBackup"); |
112 | int total = config.readNumEntry("Total", 0); | 114 | int total = config.readNumEntry("Total", 0); |
113 | for(int i = 0; i < total; i++) | 115 | for(int i = 0; i < total; i++) |
114 | { | 116 | { |
115 | dontBackupList.append(new QString(config.readEntry(QString("%1").arg(i), ""))); | 117 | dontBackupList.append(new QString(config.readEntry(QString("%1").arg(i), ""))); |
116 | } | 118 | } |
117 | 119 | ||
118 | QList<QListViewItem> list; | 120 | QList<QListViewItem> list; |
119 | getAllItems(backupList->firstChild(), list); | 121 | getAllItems(backupList->firstChild(), list); |
120 | 122 | ||
121 | for(uint i = 0; i < list.count(); i++) | 123 | for(uint i = 0; i < list.count(); i++) |
122 | { | 124 | { |
123 | QString text = list.at(i)->text(HEADER_NAME); | 125 | QString text = list.at(i)->text(HEADER_NAME); |
124 | for(uint i2 = 0; i2 < dontBackupList.count(); i2++) | 126 | for(uint i2 = 0; i2 < dontBackupList.count(); i2++) |
125 | { | 127 | { |
126 | if(*dontBackupList.at(i2) == text) | 128 | if(*dontBackupList.at(i2) == text) |
127 | { | 129 | { |
128 | selectItem(list.at(i)); | 130 | selectItem(list.at(i)); |
129 | break; | 131 | break; |
130 | } | 132 | } |
131 | } | 133 | } |
132 | } | 134 | } |
135 | QPEApplication::showWidget( this ); | ||
133 | } | 136 | } |
134 | 137 | ||
135 | BackupAndRestore::~BackupAndRestore() | 138 | BackupAndRestore::~BackupAndRestore() |
136 | { | 139 | { |
137 | QList<QListViewItem> list; | 140 | QList<QListViewItem> list; |
138 | getAllItems(backupList->firstChild(), list); | 141 | getAllItems(backupList->firstChild(), list); |
139 | 142 | ||
140 | Config config("BackupAndRestore"); | 143 | Config config("BackupAndRestore"); |
141 | config.setGroup("DontBackup"); | 144 | config.setGroup("DontBackup"); |
142 | config.clearGroup(); | 145 | config.clearGroup(); |
143 | 146 | ||
144 | int count = 0; | 147 | int count = 0; |
145 | for(uint i = 0; i < list.count(); i++) | 148 | for(uint i = 0; i < list.count(); i++) |
146 | { | 149 | { |
147 | if(list.at(i)->text(HEADER_BACKUP) == "") | 150 | if(list.at(i)->text(HEADER_BACKUP) == "") |
148 | { | 151 | { |
149 | config.writeEntry(QString("%1").arg(count), list.at(i)->text(HEADER_NAME)); | 152 | config.writeEntry(QString("%1").arg(count), list.at(i)->text(HEADER_NAME)); |
150 | count++; | 153 | count++; |
151 | } | 154 | } |
152 | } | 155 | } |
153 | config.writeEntry("Total", count); | 156 | config.writeEntry("Total", count); |
154 | 157 | ||
155 | // Remove Temp File | 158 | // Remove Temp File |
156 | if ( QFile::exists( tempFileName ) ) | 159 | if ( QFile::exists( tempFileName ) ) |
@@ -266,50 +269,49 @@ void BackupAndRestore::backup() | |||
266 | switch( QMessageBox::critical(this, tr( "Message" ), tr( "Backup Failed!" ) + "\n" | 269 | switch( QMessageBox::critical(this, tr( "Message" ), tr( "Backup Failed!" ) + "\n" |
267 | + errorMsg, QString( tr( "Ok" ) ), QString( tr( "Details" ) ) ) ) | 270 | + errorMsg, QString( tr( "Ok" ) ), QString( tr( "Details" ) ) ) ) |
268 | { | 271 | { |
269 | 272 | ||
270 | case 1: | 273 | case 1: |
271 | qWarning("Details pressed !"); | 274 | qWarning("Details pressed !"); |
272 | ErrorDialog* pErrDialog = new ErrorDialog( this, NULL, true ); | 275 | ErrorDialog* pErrDialog = new ErrorDialog( this, NULL, true ); |
273 | QFile errorFile( tempFileName ); | 276 | QFile errorFile( tempFileName ); |
274 | if ( errorFile.open(IO_ReadOnly) ) | 277 | if ( errorFile.open(IO_ReadOnly) ) |
275 | { | 278 | { |
276 | QTextStream t( &errorFile ); | 279 | QTextStream t( &errorFile ); |
277 | QString s; | 280 | QString s; |
278 | while ( !t.eof() ) | 281 | while ( !t.eof() ) |
279 | { // until end of file... | 282 | { // until end of file... |
280 | s += t.readLine(); // line of text excluding '\n' | 283 | s += t.readLine(); // line of text excluding '\n' |
281 | } | 284 | } |
282 | errorFile.close(); | 285 | errorFile.close(); |
283 | 286 | ||
284 | pErrDialog->m_textarea->setText( s ); | 287 | pErrDialog->m_textarea->setText( s ); |
285 | } | 288 | } |
286 | else | 289 | else |
287 | { | 290 | { |
288 | pErrDialog->m_textarea->setText( "Unable to open File: /tmp/backup.er" ); | 291 | pErrDialog->m_textarea->setText( "Unable to open File: /tmp/backup.er" ); |
289 | } | 292 | } |
290 | pErrDialog->showMaximized(); | 293 | QPEApplication::execDialog( pErrDialog ); |
291 | pErrDialog->exec(); | ||
292 | delete pErrDialog; | 294 | delete pErrDialog; |
293 | break; | 295 | break; |
294 | } | 296 | } |
295 | setCaption(tr("Backup and Restore.. Failed !!")); | 297 | setCaption(tr("Backup and Restore.. Failed !!")); |
296 | return; | 298 | return; |
297 | } | 299 | } |
298 | else | 300 | else |
299 | { | 301 | { |
300 | QMessageBox::information(this, tr( "Message" ), tr( "Backup Successful." ), QString(tr( "Ok" ) ) ); | 302 | QMessageBox::information(this, tr( "Message" ), tr( "Backup Successful." ), QString(tr( "Ok" ) ) ); |
301 | 303 | ||
302 | } | 304 | } |
303 | 305 | ||
304 | //write store-location | 306 | //write store-location |
305 | Config config( "BackupAndRestore" ); | 307 | Config config( "BackupAndRestore" ); |
306 | config.setGroup( "LastLocation" ); | 308 | config.setGroup( "LastLocation" ); |
307 | config.writeEntry( "LastStoreLocation", storeToLocation->currentText() ); | 309 | config.writeEntry( "LastStoreLocation", storeToLocation->currentText() ); |
308 | 310 | ||
309 | setCaption(tr("Backup and Restore")); | 311 | setCaption(tr("Backup and Restore")); |
310 | } | 312 | } |
311 | 313 | ||
312 | /*** | 314 | /*** |
313 | * Get a list of all of the files to backup. | 315 | * Get a list of all of the files to backup. |
314 | */ | 316 | */ |
315 | int BackupAndRestore::getBackupFiles(QString &backupFiles, QListViewItem *parent) | 317 | int BackupAndRestore::getBackupFiles(QString &backupFiles, QListViewItem *parent) |
@@ -431,50 +433,49 @@ void BackupAndRestore::restore() | |||
431 | QString errorMsg= tr( "Error from System:\n" ) + (QString)strerror( errno ); | 433 | QString errorMsg= tr( "Error from System:\n" ) + (QString)strerror( errno ); |
432 | switch( QMessageBox::critical(this, tr( "Message" ), tr( "Restore Failed." ) + "\n" | 434 | switch( QMessageBox::critical(this, tr( "Message" ), tr( "Restore Failed." ) + "\n" |
433 | + errorMsg, QString( tr( "Ok") ), QString( tr( "Details" ) ) ) ) | 435 | + errorMsg, QString( tr( "Ok") ), QString( tr( "Details" ) ) ) ) |
434 | { | 436 | { |
435 | case 1: | 437 | case 1: |
436 | qWarning("Details pressed !"); | 438 | qWarning("Details pressed !"); |
437 | ErrorDialog* pErrDialog = new ErrorDialog( this, NULL, true ); | 439 | ErrorDialog* pErrDialog = new ErrorDialog( this, NULL, true ); |
438 | QFile errorFile( tempFileName ); | 440 | QFile errorFile( tempFileName ); |
439 | if ( errorFile.open(IO_ReadOnly) ) | 441 | if ( errorFile.open(IO_ReadOnly) ) |
440 | { | 442 | { |
441 | QTextStream t( &errorFile ); | 443 | QTextStream t( &errorFile ); |
442 | QString s; | 444 | QString s; |
443 | while ( !t.eof() ) | 445 | while ( !t.eof() ) |
444 | { // until end of file... | 446 | { // until end of file... |
445 | s += t.readLine(); // line of text excluding '\n' | 447 | s += t.readLine(); // line of text excluding '\n' |
446 | } | 448 | } |
447 | errorFile.close(); | 449 | errorFile.close(); |
448 | 450 | ||
449 | pErrDialog->m_textarea->setText( s ); | 451 | pErrDialog->m_textarea->setText( s ); |
450 | } | 452 | } |
451 | else | 453 | else |
452 | { | 454 | { |
453 | pErrDialog->m_textarea->setText( tr( "Unable to open File: %1" ).arg( "/tmp/backup.er" ) ); | 455 | pErrDialog->m_textarea->setText( tr( "Unable to open File: %1" ).arg( "/tmp/backup.er" ) ); |
454 | } | 456 | } |
455 | pErrDialog->showMaximized(); | 457 | QPEApplication::execDialog( pErrDialog ); |
456 | pErrDialog->exec(); | ||
457 | delete pErrDialog; | 458 | delete pErrDialog; |
458 | 459 | ||
459 | setCaption(tr("Backup and Restore.. Failed !!")); | 460 | setCaption(tr("Backup and Restore.. Failed !!")); |
460 | return; | 461 | return; |
461 | 462 | ||
462 | break; | 463 | break; |
463 | 464 | ||
464 | } | 465 | } |
465 | } | 466 | } |
466 | else | 467 | else |
467 | { | 468 | { |
468 | QMessageBox::information(this, tr( "Message" ), tr( "Restore Successful." ), QString( tr( "Ok") ) ); | 469 | QMessageBox::information(this, tr( "Message" ), tr( "Restore Successful." ), QString( tr( "Ok") ) ); |
469 | } | 470 | } |
470 | 471 | ||
471 | //write restore-location | 472 | //write restore-location |
472 | Config config( "BackupAndRestore" ); | 473 | Config config( "BackupAndRestore" ); |
473 | config.setGroup( "LastLocation" ); | 474 | config.setGroup( "LastLocation" ); |
474 | config.writeEntry( "LastRestoreLocation", restoreSource->currentText() ); | 475 | config.writeEntry( "LastRestoreLocation", restoreSource->currentText() ); |
475 | 476 | ||
476 | setCaption(tr("Backup and Restore")); | 477 | setCaption(tr("Backup and Restore")); |
477 | } | 478 | } |
478 | 479 | ||
479 | // backuprestore.cpp | 480 | // backuprestore.cpp |
480 | 481 | ||
diff --git a/noncore/settings/networksettings/ppp/devices.cpp b/noncore/settings/networksettings/ppp/devices.cpp index e94904b..9da090d 100644 --- a/noncore/settings/networksettings/ppp/devices.cpp +++ b/noncore/settings/networksettings/ppp/devices.cpp | |||
@@ -3,67 +3,73 @@ | |||
3 | * | 3 | * |
4 | * $Id$ | 4 | * $Id$ |
5 | * | 5 | * |
6 | * Copyright (C) 1997 Bernd Johannes Wuebben | 6 | * Copyright (C) 1997 Bernd Johannes Wuebben |
7 | * wuebben@math.cornell.edu | 7 | * wuebben@math.cornell.edu |
8 | * | 8 | * |
9 | * based on EzPPP: | 9 | * based on EzPPP: |
10 | * Copyright (C) 1997 Jay Painter | 10 | * Copyright (C) 1997 Jay Painter |
11 | * | 11 | * |
12 | * This program is free software; you can redistribute it and/or | 12 | * This program is free software; you can redistribute it and/or |
13 | * modify it under the terms of the GNU Library General Public | 13 | * modify it under the terms of the GNU Library General Public |
14 | * License as published by the Free Software Foundation; either | 14 | * License as published by the Free Software Foundation; either |
15 | * version 2 of the License, or (at your option) any later version. | 15 | * version 2 of the License, or (at your option) any later version. |
16 | * | 16 | * |
17 | * This program is distributed in the hope that it will be useful, | 17 | * This program is distributed in the hope that it will be useful, |
18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
20 | * Library General Public License for more details. | 20 | * Library General Public License for more details. |
21 | * | 21 | * |
22 | * You should have received a copy of the GNU Library General Public | 22 | * You should have received a copy of the GNU Library General Public |
23 | * License along with this program; if not, write to the Free | 23 | * License along with this program; if not, write to the Free |
24 | * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 24 | * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
25 | */ | 25 | */ |
26 | 26 | ||
27 | #include "interfaceppp.h" | ||
28 | #include "devices.h" | ||
29 | #include "authwidget.h" | ||
30 | #include "pppdata.h" | ||
31 | #include "edit.h" | ||
32 | #include "general.h" | ||
33 | |||
34 | /* OPIE */ | ||
35 | #include <qpe/qpeapplication.h> | ||
36 | |||
37 | /* QT */ | ||
27 | #include <qdir.h> | 38 | #include <qdir.h> |
28 | #include <stdlib.h> | ||
29 | #include <qlayout.h> | 39 | #include <qlayout.h> |
30 | #include <qtabwidget.h> | 40 | #include <qtabwidget.h> |
31 | #include <qtabdialog.h> | 41 | #include <qtabdialog.h> |
32 | #include <qwhatsthis.h> | 42 | #include <qwhatsthis.h> |
33 | #include <qmessagebox.h> | 43 | #include <qmessagebox.h> |
34 | |||
35 | #include <qapplication.h> | 44 | #include <qapplication.h> |
36 | #include <qbuttongroup.h> | 45 | #include <qbuttongroup.h> |
37 | #include <qmessagebox.h> | 46 | #include <qmessagebox.h> |
38 | #include <qvgroupbox.h> | 47 | #include <qvgroupbox.h> |
39 | 48 | ||
40 | #include "interfaceppp.h" | 49 | /* STD */ |
41 | #include "devices.h" | 50 | #include <stdlib.h> |
42 | #include "authwidget.h" | 51 | |
43 | #include "pppdata.h" | ||
44 | #include "edit.h" | ||
45 | #include "general.h" | ||
46 | 52 | ||
47 | void parseargs(char* buf, char** args); | 53 | void parseargs(char* buf, char** args); |
48 | 54 | ||
49 | DevicesWidget::DevicesWidget( InterfacePPP* ip, QWidget *parent, const char *name, WFlags f ) | 55 | DevicesWidget::DevicesWidget( InterfacePPP* ip, QWidget *parent, const char *name, WFlags f ) |
50 | : ChooserWidget(ip->data(), parent, name, f) | 56 | : ChooserWidget(ip->data(), parent, name, f) |
51 | { | 57 | { |
52 | _ifaceppp = ip; | 58 | _ifaceppp = ip; |
53 | QWhatsThis::add(edit_b, tr("Allows you to modify the selected device")); | 59 | QWhatsThis::add(edit_b, tr("Allows you to modify the selected device")); |
54 | QWhatsThis::add(new_b, tr("Create a new device") ); | 60 | QWhatsThis::add(new_b, tr("Create a new device") ); |
55 | 61 | ||
56 | QWhatsThis::add(copy_b, | 62 | QWhatsThis::add(copy_b, |
57 | tr("Makes a copy of the selected device. All\n" | 63 | tr("Makes a copy of the selected device. All\n" |
58 | "settings of the selected device are copied\n" | 64 | "settings of the selected device are copied\n" |
59 | "to a new device, that you can modify to fit your\n" | 65 | "to a new device, that you can modify to fit your\n" |
60 | "needs")); | 66 | "needs")); |
61 | QWhatsThis::add(delete_b, | 67 | QWhatsThis::add(delete_b, |
62 | tr("<p>Deletes the selected device\n\n" | 68 | tr("<p>Deletes the selected device\n\n" |
63 | "<font color=\"red\"><b>Use with care!</b></font>")); | 69 | "<font color=\"red\"><b>Use with care!</b></font>")); |
64 | 70 | ||
65 | copy_b->setEnabled( false ); //FIXME | 71 | copy_b->setEnabled( false ); //FIXME |
66 | // delete_b->setEnabled( false ); //FIXME | 72 | // delete_b->setEnabled( false ); //FIXME |
67 | 73 | ||
68 | QStringList tmp = _pppdata->getDevicesNamesList(); | 74 | QStringList tmp = _pppdata->getDevicesNamesList(); |
69 | qDebug("DevicesWidget::DevicesWidget got devices %s",tmp.join("--").latin1()); | 75 | qDebug("DevicesWidget::DevicesWidget got devices %s",tmp.join("--").latin1()); |
@@ -170,43 +176,42 @@ int DevicesWidget::doTab(){ | |||
170 | QTabWidget *tabWindow = new QTabWidget( dlg, "tabWindow" ); | 176 | QTabWidget *tabWindow = new QTabWidget( dlg, "tabWindow" ); |
171 | layout->addWidget( tabWindow ); | 177 | layout->addWidget( tabWindow ); |
172 | 178 | ||
173 | bool isnew; | 179 | bool isnew; |
174 | 180 | ||
175 | if(_pppdata->devname().isEmpty()) { | 181 | if(_pppdata->devname().isEmpty()) { |
176 | dlg->setCaption(tr("New Device")); | 182 | dlg->setCaption(tr("New Device")); |
177 | isnew = true; | 183 | isnew = true; |
178 | } else { | 184 | } else { |
179 | QString tit = tr("Edit Device: "); | 185 | QString tit = tr("Edit Device: "); |
180 | tit += _pppdata->devname(); | 186 | tit += _pppdata->devname(); |
181 | dlg->setCaption(tit); | 187 | dlg->setCaption(tit); |
182 | isnew = false; | 188 | isnew = false; |
183 | } | 189 | } |
184 | 190 | ||
185 | modem1 = new ModemWidget( _pppdata, tabWindow, "modem1" ); | 191 | modem1 = new ModemWidget( _pppdata, tabWindow, "modem1" ); |
186 | tabWindow->addTab( modem1, tr("&Device") ); | 192 | tabWindow->addTab( modem1, tr("&Device") ); |
187 | modem2 = new ModemWidget2( _pppdata, _ifaceppp, tabWindow, "modem2" ); | 193 | modem2 = new ModemWidget2( _pppdata, _ifaceppp, tabWindow, "modem2" ); |
188 | tabWindow->addTab( modem2, tr("&Modem") ); | 194 | tabWindow->addTab( modem2, tr("&Modem") ); |
189 | 195 | ||
190 | int result = 0; | 196 | int result = 0; |
191 | bool ok = false; | 197 | bool ok = false; |
192 | 198 | ||
193 | while (!ok){ | 199 | while (!ok){ |
194 | dlg->showMaximized(); | 200 | result = QPEApplication::execDialog( dlg ); |
195 | result = dlg->exec(); | ||
196 | ok = true; | 201 | ok = true; |
197 | 202 | ||
198 | if(result == QDialog::Accepted) { | 203 | if(result == QDialog::Accepted) { |
199 | if (!modem1->save()){ | 204 | if (!modem1->save()){ |
200 | QMessageBox::critical(this, "error", tr( "You must enter a unique device name")); | 205 | QMessageBox::critical(this, "error", tr( "You must enter a unique device name")); |
201 | ok = false; | 206 | ok = false; |
202 | }else{ | 207 | }else{ |
203 | modem2->save(); | 208 | modem2->save(); |
204 | } | 209 | } |
205 | } | 210 | } |
206 | } | 211 | } |
207 | 212 | ||
208 | delete dlg; | 213 | delete dlg; |
209 | 214 | ||
210 | return result; | 215 | return result; |
211 | } | 216 | } |
212 | 217 | ||
diff --git a/noncore/settings/networksettings/ppp/edit.cpp b/noncore/settings/networksettings/ppp/edit.cpp index ceac90c..7d21605 100644 --- a/noncore/settings/networksettings/ppp/edit.cpp +++ b/noncore/settings/networksettings/ppp/edit.cpp | |||
@@ -2,65 +2,72 @@ | |||
2 | * kPPP: A pppd Front End for the KDE project | 2 | * kPPP: A pppd Front End for the KDE project |
3 | * | 3 | * |
4 | * $Id$ | 4 | * $Id$ |
5 | * Copyright (C) 1997 Bernd Johannes Wuebben | 5 | * Copyright (C) 1997 Bernd Johannes Wuebben |
6 | * wuebben@math.cornell.edu | 6 | * wuebben@math.cornell.edu |
7 | * | 7 | * |
8 | * based on EzPPP: | 8 | * based on EzPPP: |
9 | * Copyright (C) 1997 Jay Painter | 9 | * Copyright (C) 1997 Jay Painter |
10 | * | 10 | * |
11 | * This program is free software; you can redistribute it and/or | 11 | * This program is free software; you can redistribute it and/or |
12 | * modify it under the terms of the GNU Library General Public | 12 | * modify it under the terms of the GNU Library General Public |
13 | * License as published by the Free Software Foundation; either | 13 | * License as published by the Free Software Foundation; either |
14 | * version 2 of the License, or (at your option) any later version. | 14 | * version 2 of the License, or (at your option) any later version. |
15 | * | 15 | * |
16 | * This program is distributed in the hope that it will be useful, | 16 | * This program is distributed in the hope that it will be useful, |
17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
19 | * Library General Public License for more details. | 19 | * Library General Public License for more details. |
20 | * | 20 | * |
21 | * You should have received a copy of the GNU Library General Public | 21 | * You should have received a copy of the GNU Library General Public |
22 | * License along with this program; if not, write to the Free | 22 | * License along with this program; if not, write to the Free |
23 | * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 23 | * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
24 | */ | 24 | */ |
25 | 25 | ||
26 | #include <string.h> | 26 | #include "edit.h" |
27 | #include <termios.h> | 27 | #include "pppdata.h" |
28 | #include "iplined.h" | ||
29 | #include "auth.h" | ||
30 | |||
31 | /* OPIE */ | ||
32 | #include <qpe/resource.h> | ||
33 | #include <qpe/qpeapplication.h> | ||
34 | |||
35 | /* QT */ | ||
28 | #include <qlayout.h> | 36 | #include <qlayout.h> |
29 | #include <qmessagebox.h> | 37 | #include <qmessagebox.h> |
30 | #include <qwhatsthis.h> | 38 | #include <qwhatsthis.h> |
31 | #include <qregexp.h> | 39 | #include <qregexp.h> |
32 | #include <qapplication.h> | 40 | #include <qapplication.h> |
33 | #include <qbuttongroup.h> | 41 | #include <qbuttongroup.h> |
34 | #include <qvgroupbox.h> | 42 | #include <qvgroupbox.h> |
35 | #include <qhbox.h> | 43 | #include <qhbox.h> |
36 | #include <qdialog.h> | 44 | #include <qdialog.h> |
37 | #include <qpe/resource.h> | ||
38 | 45 | ||
39 | #include "edit.h" | 46 | /* STD */ |
40 | #include "pppdata.h" | 47 | |
41 | #include "iplined.h" | 48 | #include <string.h> |
42 | #include "auth.h" | 49 | #include <termios.h> |
43 | 50 | ||
44 | DialWidget::DialWidget( PPPData *pd, QWidget *parent, bool isnewaccount | 51 | DialWidget::DialWidget( PPPData *pd, QWidget *parent, bool isnewaccount |
45 | , const char *name ) | 52 | , const char *name ) |
46 | : QWidget(parent, name), _pppdata(pd) | 53 | : QWidget(parent, name), _pppdata(pd) |
47 | { | 54 | { |
48 | const int GRIDROWS = 6; | 55 | const int GRIDROWS = 6; |
49 | 56 | ||
50 | QGridLayout *tl = new QGridLayout(this, GRIDROWS, 2, 0 ); | 57 | QGridLayout *tl = new QGridLayout(this, GRIDROWS, 2, 0 ); |
51 | 58 | ||
52 | connect_label = new QLabel(tr("Connection name:"), this); | 59 | connect_label = new QLabel(tr("Connection name:"), this); |
53 | tl->addWidget(connect_label, 0, 0); | 60 | tl->addWidget(connect_label, 0, 0); |
54 | 61 | ||
55 | connectname_l = new QLineEdit(this); | 62 | connectname_l = new QLineEdit(this); |
56 | // connectname_l->setMaxLength(ACCNAME_SIZE); | 63 | // connectname_l->setMaxLength(ACCNAME_SIZE); |
57 | tl->addWidget(connectname_l, 0, 1); | 64 | tl->addWidget(connectname_l, 0, 1); |
58 | QString tmp = tr("Type in a unique name for this connection"); | 65 | QString tmp = tr("Type in a unique name for this connection"); |
59 | 66 | ||
60 | QWhatsThis::add(connect_label,tmp); | 67 | QWhatsThis::add(connect_label,tmp); |
61 | QWhatsThis::add(connectname_l,tmp); | 68 | QWhatsThis::add(connectname_l,tmp); |
62 | 69 | ||
63 | 70 | ||
64 | number_label = new QLabel(tr("Phone number:"), this); | 71 | number_label = new QLabel(tr("Phone number:"), this); |
65 | number_label->setAlignment(AlignTop|AlignLeft); | 72 | number_label->setAlignment(AlignTop|AlignLeft); |
66 | tl->addWidget(number_label, 1, 0); | 73 | tl->addWidget(number_label, 1, 0); |
@@ -91,153 +98,172 @@ DialWidget::DialWidget( PPPData *pd, QWidget *parent, bool isnewaccount | |||
91 | connect(up, SIGNAL(clicked()), | 98 | connect(up, SIGNAL(clicked()), |
92 | this, SLOT(upNumber())); | 99 | this, SLOT(upNumber())); |
93 | connect(down, SIGNAL(clicked()), | 100 | connect(down, SIGNAL(clicked()), |
94 | this, SLOT(downNumber())); | 101 | this, SLOT(downNumber())); |
95 | connect(numbers, SIGNAL(highlighted(int)), | 102 | connect(numbers, SIGNAL(highlighted(int)), |
96 | this, SLOT(selectionChanged(int))); | 103 | this, SLOT(selectionChanged(int))); |
97 | numbersChanged(); | 104 | numbersChanged(); |
98 | 105 | ||
99 | tmp = tr("<p>Specifies the phone numbers to dial. You\n" | 106 | tmp = tr("<p>Specifies the phone numbers to dial. You\n" |
100 | "can supply multiple numbers here, simply\n" | 107 | "can supply multiple numbers here, simply\n" |
101 | "click on \"Add\". You can arrange the\n" | 108 | "click on \"Add\". You can arrange the\n" |
102 | "order the numbers are tried by using the\n" | 109 | "order the numbers are tried by using the\n" |
103 | "arrow buttons.\n\n" | 110 | "arrow buttons.\n\n" |
104 | "When a number is busy or fails, <i>kppp</i> will \n" | 111 | "When a number is busy or fails, <i>kppp</i> will \n" |
105 | "try the next number and so on"); | 112 | "try the next number and so on"); |
106 | 113 | ||
107 | QWhatsThis::add(number_label,tmp); | 114 | QWhatsThis::add(number_label,tmp); |
108 | QWhatsThis::add(numbers,tmp); | 115 | QWhatsThis::add(numbers,tmp); |
109 | 116 | ||
110 | pppdargs = new QPushButton(tr("Customize pppd Arguments..."), this); | 117 | pppdargs = new QPushButton(tr("Customize pppd Arguments..."), this); |
111 | connect(pppdargs, SIGNAL(clicked()), SLOT(pppdargsbutton())); | 118 | connect(pppdargs, SIGNAL(clicked()), SLOT(pppdargsbutton())); |
112 | tl->addMultiCellWidget(pppdargs, 5, 5, 0, 1, AlignCenter); | 119 | tl->addMultiCellWidget(pppdargs, 5, 5, 0, 1, AlignCenter); |
113 | 120 | ||
114 | // Set defaults if editing an existing connection | 121 | // Set defaults if editing an existing connection |
115 | if(!isnewaccount) { | 122 | if(!isnewaccount) |
123 | { | ||
116 | connectname_l->setText(_pppdata->accname()); | 124 | connectname_l->setText(_pppdata->accname()); |
117 | 125 | ||
118 | // insert the phone numbers into the listbox | 126 | // insert the phone numbers into the listbox |
119 | QString n = _pppdata->phonenumber(); | 127 | QString n = _pppdata->phonenumber(); |
120 | QString tmp = ""; | 128 | QString tmp = ""; |
121 | uint idx = 0; | 129 | uint idx = 0; |
122 | while(idx != n.length()) { | 130 | while(idx != n.length()) |
123 | if(n[idx] == ':') { | 131 | { |
132 | if(n[idx] == ':') | ||
133 | { | ||
124 | if(tmp.length() > 0) | 134 | if(tmp.length() > 0) |
125 | numbers->insertItem(tmp); | 135 | numbers->insertItem(tmp); |
126 | tmp = ""; | 136 | tmp = ""; |
127 | } else | 137 | } |
138 | else | ||
128 | tmp += n[idx]; | 139 | tmp += n[idx]; |
129 | idx++; | 140 | idx++; |
130 | } | 141 | } |
131 | if(tmp.length() > 0) | 142 | if(tmp.length() > 0) |
132 | numbers->insertItem(tmp); | 143 | numbers->insertItem(tmp); |
133 | 144 | ||
134 | } | 145 | } |
135 | 146 | ||
136 | numbersChanged(); | 147 | numbersChanged(); |
137 | tl->activate(); | 148 | tl->activate(); |
138 | } | 149 | } |
139 | 150 | ||
140 | bool DialWidget::save() { | 151 | bool DialWidget::save() |
152 | { | ||
141 | //first check to make sure that the account name is unique! | 153 | //first check to make sure that the account name is unique! |
142 | if(connectname_l->text().isEmpty() || | 154 | if(connectname_l->text().isEmpty() || |
143 | !_pppdata->isUniqueAccname(connectname_l->text())) { | 155 | !_pppdata->isUniqueAccname(connectname_l->text())) |
156 | { | ||
144 | return false; | 157 | return false; |
145 | } else { | 158 | } |
159 | else | ||
160 | { | ||
146 | _pppdata->setAccname(connectname_l->text()); | 161 | _pppdata->setAccname(connectname_l->text()); |
147 | 162 | ||
148 | QString number = ""; | 163 | QString number = ""; |
149 | for(uint i = 0; i < numbers->count(); i++) { | 164 | for(uint i = 0; i < numbers->count(); i++) |
165 | { | ||
150 | if(i != 0) | 166 | if(i != 0) |
151 | number += ":"; | 167 | number += ":"; |
152 | number += numbers->text(i); | 168 | number += numbers->text(i); |
153 | } | 169 | } |
154 | 170 | ||
155 | _pppdata->setPhonenumber(number); | 171 | _pppdata->setPhonenumber(number); |
156 | return true; | 172 | return true; |
157 | } | 173 | } |
158 | } | 174 | } |
159 | 175 | ||
160 | 176 | ||
161 | void DialWidget::numbersChanged() { | 177 | void DialWidget::numbersChanged() |
178 | { | ||
162 | int sel = numbers->currentItem(); | 179 | int sel = numbers->currentItem(); |
163 | 180 | ||
164 | del->setEnabled(sel != -1); | 181 | del->setEnabled(sel != -1); |
165 | up->setEnabled(sel != -1 && sel != 0); | 182 | up->setEnabled(sel != -1 && sel != 0); |
166 | down->setEnabled(sel != -1 && sel != (int)numbers->count()-1); | 183 | down->setEnabled(sel != -1 && sel != (int)numbers->count()-1); |
167 | } | 184 | } |
168 | 185 | ||
169 | 186 | ||
170 | void DialWidget::selectionChanged(int) { | 187 | void DialWidget::selectionChanged(int) |
188 | { | ||
171 | numbersChanged(); | 189 | numbersChanged(); |
172 | } | 190 | } |
173 | 191 | ||
174 | 192 | ||
175 | void DialWidget::addNumber() { | 193 | void DialWidget::addNumber() |
194 | { | ||
176 | PhoneNumberDialog dlg(this); | 195 | PhoneNumberDialog dlg(this); |
177 | if(dlg.exec()) { | 196 | if(dlg.exec()) |
197 | { | ||
178 | numbers->insertItem(dlg.phoneNumber()); | 198 | numbers->insertItem(dlg.phoneNumber()); |
179 | numbersChanged(); | 199 | numbersChanged(); |
180 | } | 200 | } |
181 | } | 201 | } |
182 | 202 | ||
183 | 203 | ||
184 | void DialWidget::delNumber() { | 204 | void DialWidget::delNumber() |
185 | if(numbers->currentItem() != -1) { | 205 | { |
206 | if(numbers->currentItem() != -1) | ||
207 | { | ||
186 | numbers->removeItem(numbers->currentItem()); | 208 | numbers->removeItem(numbers->currentItem()); |
187 | numbersChanged(); | 209 | numbersChanged(); |
188 | } | 210 | } |
189 | } | 211 | } |
190 | 212 | ||
191 | 213 | ||
192 | void DialWidget::upNumber() { | 214 | void DialWidget::upNumber() |
215 | { | ||
193 | int idx = numbers->currentItem(); | 216 | int idx = numbers->currentItem(); |
194 | if(idx != -1) { | 217 | if(idx != -1) |
218 | { | ||
195 | QString item = numbers->text(idx); | 219 | QString item = numbers->text(idx); |
196 | numbers->removeItem(idx); | 220 | numbers->removeItem(idx); |
197 | numbers->insertItem(item, idx-1); | 221 | numbers->insertItem(item, idx-1); |
198 | numbers->setCurrentItem(idx-1); | 222 | numbers->setCurrentItem(idx-1); |
199 | numbersChanged(); | 223 | numbersChanged(); |
200 | } | 224 | } |
201 | } | 225 | } |
202 | 226 | ||
203 | 227 | ||
204 | void DialWidget::downNumber() { | 228 | void DialWidget::downNumber() |
229 | { | ||
205 | int idx = numbers->currentItem(); | 230 | int idx = numbers->currentItem(); |
206 | if(idx != -1) { | 231 | if(idx != -1) |
232 | { | ||
207 | QString item = numbers->text(idx); | 233 | QString item = numbers->text(idx); |
208 | numbers->removeItem(idx); | 234 | numbers->removeItem(idx); |
209 | numbers->insertItem(item, idx+1); | 235 | numbers->insertItem(item, idx+1); |
210 | numbers->setCurrentItem(idx+1); | 236 | numbers->setCurrentItem(idx+1); |
211 | numbersChanged(); | 237 | numbersChanged(); |
212 | } | 238 | } |
213 | } | 239 | } |
214 | 240 | ||
215 | 241 | ||
216 | void DialWidget::pppdargsbutton() { | 242 | void DialWidget::pppdargsbutton() |
243 | { | ||
217 | PPPdArguments pa(_pppdata, this); | 244 | PPPdArguments pa(_pppdata, this); |
218 | pa.showMaximized(); | 245 | QPEApplication::execDialog( &pa ); |
219 | pa.exec(); | ||
220 | } | 246 | } |
221 | 247 | ||
222 | 248 | ||
223 | 249 | ||
224 | ///////////////////////////////////////////////////////////////////////////// | 250 | ///////////////////////////////////////////////////////////////////////////// |
225 | // ExecWidget | 251 | // ExecWidget |
226 | ///////////////////////////////////////////////////////////////////////////// | 252 | ///////////////////////////////////////////////////////////////////////////// |
227 | ExecWidget::ExecWidget(PPPData *pd, QWidget *parent, bool isnewaccount, const char *name) : | 253 | ExecWidget::ExecWidget(PPPData *pd, QWidget *parent, bool isnewaccount, const char *name) : |
228 | QWidget(parent, name), _pppdata(pd) | 254 | QWidget(parent, name), _pppdata(pd) |
229 | { | 255 | { |
230 | QVBoxLayout *tl = new QVBoxLayout(this, 0 );//, KDialog::spacingHint()); | 256 | QVBoxLayout *tl = new QVBoxLayout(this, 0 );//, KDialog::spacingHint()); |
231 | 257 | ||
232 | QLabel *l = new QLabel( tr("Here you can select commands to run at certain stages of the connection. The commands are run with your real user id, so you cannot run any commands here requiring root permissions (unless, of course, you are root).<br><br>Be sure to supply the whole path to the program otherwise we might be unable to find it."), this); | 258 | QLabel *l = new QLabel( tr("Here you can select commands to run at certain stages of the connection. The commands are run with your real user id, so you cannot run any commands here requiring root permissions (unless, of course, you are root).<br><br>Be sure to supply the whole path to the program otherwise we might be unable to find it."), this); |
233 | 259 | ||
234 | tl->addWidget(l); | 260 | tl->addWidget(l); |
235 | tl->addStretch(1); | 261 | tl->addStretch(1); |
236 | 262 | ||
237 | QGridLayout *l1 = new QGridLayout(4, 2, 10); | 263 | QGridLayout *l1 = new QGridLayout(4, 2, 10); |
238 | tl->addLayout(l1); | 264 | tl->addLayout(l1); |
239 | l1->setColStretch(0, 0); | 265 | l1->setColStretch(0, 0); |
240 | l1->setColStretch(1, 1); | 266 | l1->setColStretch(1, 1); |
241 | 267 | ||
242 | before_connect_l = new QLabel(tr("Before connect:"), this); | 268 | before_connect_l = new QLabel(tr("Before connect:"), this); |
243 | before_connect_l->setAlignment(AlignVCenter); | 269 | before_connect_l->setAlignment(AlignVCenter); |
@@ -284,58 +310,60 @@ ExecWidget::ExecWidget(PPPData *pd, QWidget *parent, bool isnewaccount, const ch | |||
284 | QWhatsThis::add(predisconnect,tmp); | 310 | QWhatsThis::add(predisconnect,tmp); |
285 | 311 | ||
286 | discommand_label = new QLabel(tr("Upon disconnect:"), | 312 | discommand_label = new QLabel(tr("Upon disconnect:"), |
287 | this); | 313 | this); |
288 | discommand_label->setAlignment(AlignVCenter); | 314 | discommand_label->setAlignment(AlignVCenter); |
289 | l1->addWidget(discommand_label, 3, 0); | 315 | l1->addWidget(discommand_label, 3, 0); |
290 | 316 | ||
291 | discommand = new QLineEdit(this); | 317 | discommand = new QLineEdit(this); |
292 | // discommand->setMaxLength(COMMAND_SIZE); | 318 | // discommand->setMaxLength(COMMAND_SIZE); |
293 | l1->addWidget(discommand, 3, 1); | 319 | l1->addWidget(discommand, 3, 1); |
294 | tmp = tr("Allows you to run a program <b>after</b> a connection\n" | 320 | tmp = tr("Allows you to run a program <b>after</b> a connection\n" |
295 | "has been closed."); | 321 | "has been closed."); |
296 | 322 | ||
297 | QWhatsThis::add(discommand_label,tmp); | 323 | QWhatsThis::add(discommand_label,tmp); |
298 | QWhatsThis::add(discommand,tmp); | 324 | QWhatsThis::add(discommand,tmp); |
299 | 325 | ||
300 | // extra space between entries | 326 | // extra space between entries |
301 | l1->addRowSpacing(1, 5); | 327 | l1->addRowSpacing(1, 5); |
302 | l1->addRowSpacing(3, 5); | 328 | l1->addRowSpacing(3, 5); |
303 | 329 | ||
304 | tl->addStretch(1); | 330 | tl->addStretch(1); |
305 | tl->activate(); | 331 | tl->activate(); |
306 | 332 | ||
307 | // Set defaults if editing an existing connection | 333 | // Set defaults if editing an existing connection |
308 | if(!isnewaccount) { | 334 | if(!isnewaccount) |
335 | { | ||
309 | before_connect->setText(_pppdata->command_before_connect()); | 336 | before_connect->setText(_pppdata->command_before_connect()); |
310 | command->setText(_pppdata->command_on_connect()); | 337 | command->setText(_pppdata->command_on_connect()); |
311 | discommand->setText(_pppdata->command_on_disconnect()); | 338 | discommand->setText(_pppdata->command_on_disconnect()); |
312 | predisconnect->setText(_pppdata->command_before_disconnect()); | 339 | predisconnect->setText(_pppdata->command_before_disconnect()); |
313 | } | 340 | } |
314 | } | 341 | } |
315 | 342 | ||
316 | 343 | ||
317 | bool ExecWidget::save() { | 344 | bool ExecWidget::save() |
345 | { | ||
318 | _pppdata->setCommand_before_connect(before_connect->text()); | 346 | _pppdata->setCommand_before_connect(before_connect->text()); |
319 | _pppdata->setCommand_on_connect(command->text()); | 347 | _pppdata->setCommand_on_connect(command->text()); |
320 | _pppdata->setCommand_before_disconnect(predisconnect->text()); | 348 | _pppdata->setCommand_before_disconnect(predisconnect->text()); |
321 | _pppdata->setCommand_on_disconnect(discommand->text()); | 349 | _pppdata->setCommand_on_disconnect(discommand->text()); |
322 | return true; | 350 | return true; |
323 | } | 351 | } |
324 | 352 | ||
325 | 353 | ||
326 | 354 | ||
327 | ///////////////////////////////////////////////////////////////////////////// | 355 | ///////////////////////////////////////////////////////////////////////////// |
328 | // | 356 | // |
329 | // IPWidget | 357 | // IPWidget |
330 | // | 358 | // |
331 | ///////////////////////////////////////////////////////////////////////////// | 359 | ///////////////////////////////////////////////////////////////////////////// |
332 | IPWidget::IPWidget( PPPData *pd, QWidget *parent, bool isnewaccount, const char *name ) | 360 | IPWidget::IPWidget( PPPData *pd, QWidget *parent, bool isnewaccount, const char *name ) |
333 | : QWidget(parent, name), _pppdata(pd) | 361 | : QWidget(parent, name), _pppdata(pd) |
334 | { | 362 | { |
335 | QVBoxLayout *topLayout = new QVBoxLayout(this); | 363 | QVBoxLayout *topLayout = new QVBoxLayout(this); |
336 | topLayout->setSpacing( 3 );//KDialog::spacingHint()); | 364 | topLayout->setSpacing( 3 );//KDialog::spacingHint()); |
337 | 365 | ||
338 | box = new QVGroupBox(tr("Configuration"), this); | 366 | box = new QVGroupBox(tr("Configuration"), this); |
339 | // box->setInsideSpacing( 1 );//KDialog::spacingHint()); | 367 | // box->setInsideSpacing( 1 );//KDialog::spacingHint()); |
340 | 368 | ||
341 | rb = new QButtonGroup(this); | 369 | rb = new QButtonGroup(this); |
@@ -393,108 +421,121 @@ IPWidget::IPWidget( PPPData *pd, QWidget *parent, bool isnewaccount, const char | |||
393 | 421 | ||
394 | QWhatsThis::add(sub_label,tmp); | 422 | QWhatsThis::add(sub_label,tmp); |
395 | QWhatsThis::add(subnetmask_l,tmp); | 423 | QWhatsThis::add(subnetmask_l,tmp); |
396 | 424 | ||
397 | autoname = new QCheckBox(tr("Auto-configure hostname from this IP"), this); | 425 | autoname = new QCheckBox(tr("Auto-configure hostname from this IP"), this); |
398 | autoname->setChecked(_pppdata->autoname()); | 426 | autoname->setChecked(_pppdata->autoname()); |
399 | connect(autoname,SIGNAL(toggled(bool)), | 427 | connect(autoname,SIGNAL(toggled(bool)), |
400 | this,SLOT(autoname_t(bool))); | 428 | this,SLOT(autoname_t(bool))); |
401 | 429 | ||
402 | QWhatsThis::add(autoname, | 430 | QWhatsThis::add(autoname, |
403 | tr("<p>Whenever you connect, this reconfigures\n" | 431 | tr("<p>Whenever you connect, this reconfigures\n" |
404 | "your hostname to match the IP address you\n" | 432 | "your hostname to match the IP address you\n" |
405 | "got from the PPP server. This may be useful\n" | 433 | "got from the PPP server. This may be useful\n" |
406 | "if you need to use a protocol which depends\n" | 434 | "if you need to use a protocol which depends\n" |
407 | "on this information, but it can also cause several\n" | 435 | "on this information, but it can also cause several\n" |
408 | "<a href=\"kppp-7.html#autohostname\">problems</a>.\n" | 436 | "<a href=\"kppp-7.html#autohostname\">problems</a>.\n" |
409 | "\n" | 437 | "\n" |
410 | "Don't enable this unless you really need it.")); | 438 | "Don't enable this unless you really need it.")); |
411 | 439 | ||
412 | topLayout->addWidget(box); | 440 | topLayout->addWidget(box); |
413 | topLayout->addWidget(autoname); | 441 | topLayout->addWidget(autoname); |
414 | topLayout->addStretch(); | 442 | topLayout->addStretch(); |
415 | 443 | ||
416 | //load info from gpppdata | 444 | //load info from gpppdata |
417 | if(!isnewaccount) { | 445 | if(!isnewaccount) |
446 | { | ||
418 | if(_pppdata->ipaddr() == "0.0.0.0" && | 447 | if(_pppdata->ipaddr() == "0.0.0.0" && |
419 | _pppdata->subnetmask() == "0.0.0.0") { | 448 | _pppdata->subnetmask() == "0.0.0.0") |
449 | { | ||
420 | dynamicadd_rb->setChecked(true); | 450 | dynamicadd_rb->setChecked(true); |
421 | hitIPSelect(0); | 451 | hitIPSelect(0); |
422 | autoname->setChecked(_pppdata->autoname()); | 452 | autoname->setChecked(_pppdata->autoname()); |
423 | } | 453 | } |
424 | else { | 454 | else |
455 | { | ||
425 | ipaddress_l->setText(_pppdata->ipaddr()); | 456 | ipaddress_l->setText(_pppdata->ipaddr()); |
426 | subnetmask_l->setText(_pppdata->subnetmask()); | 457 | subnetmask_l->setText(_pppdata->subnetmask()); |
427 | staticadd_rb->setChecked(true); | 458 | staticadd_rb->setChecked(true); |
428 | autoname->setChecked(false); | 459 | autoname->setChecked(false); |
429 | } | 460 | } |
430 | } | 461 | } |
431 | else { | 462 | else |
463 | { | ||
432 | dynamicadd_rb->setChecked(true); | 464 | dynamicadd_rb->setChecked(true); |
433 | hitIPSelect(0); | 465 | hitIPSelect(0); |
434 | } | 466 | } |
435 | 467 | ||
436 | } | 468 | } |
437 | 469 | ||
438 | void IPWidget::autoname_t(bool on) { | 470 | void IPWidget::autoname_t(bool on) |
471 | { | ||
439 | static bool was_warned = false; | 472 | static bool was_warned = false; |
440 | 473 | ||
441 | // big-fat warning when selecting the auto configure hostname option | 474 | // big-fat warning when selecting the auto configure hostname option |
442 | if(on && !was_warned) { | 475 | if(on && !was_warned) |
476 | { | ||
443 | QMessageBox::information(this, | 477 | QMessageBox::information(this, |
444 | tr("Selecting this option might cause some weird " | 478 | tr("Selecting this option might cause some weird " |
445 | "problems with the X-server and applications " | 479 | "problems with the X-server and applications " |
446 | "while kppp is connected. Don't use it until " | 480 | "while kppp is connected. Don't use it until " |
447 | "you know what you are doing!\n" | 481 | "you know what you are doing!\n" |
448 | "For more information take a look at the " | 482 | "For more information take a look at the " |
449 | "handbook (or help) in the section \"Frequently " | 483 | "handbook (or help) in the section \"Frequently " |
450 | "asked questions\"."), | 484 | "asked questions\"."), |
451 | tr("Warning")); | 485 | tr("Warning")); |
452 | was_warned = true; | 486 | was_warned = true; |
453 | } | 487 | } |
454 | } | 488 | } |
455 | 489 | ||
456 | 490 | ||
457 | void IPWidget::save() { | 491 | void IPWidget::save() |
458 | if(dynamicadd_rb->isChecked()) { | 492 | { |
493 | if(dynamicadd_rb->isChecked()) | ||
494 | { | ||
459 | _pppdata->setIpaddr("0.0.0.0"); | 495 | _pppdata->setIpaddr("0.0.0.0"); |
460 | _pppdata->setSubnetmask("0.0.0.0"); | 496 | _pppdata->setSubnetmask("0.0.0.0"); |
461 | } else { | 497 | } |
498 | else | ||
499 | { | ||
462 | _pppdata->setIpaddr(ipaddress_l->text()); | 500 | _pppdata->setIpaddr(ipaddress_l->text()); |
463 | _pppdata->setSubnetmask(subnetmask_l->text()); | 501 | _pppdata->setSubnetmask(subnetmask_l->text()); |
464 | } | 502 | } |
465 | _pppdata->setAutoname(autoname->isChecked()); | 503 | _pppdata->setAutoname(autoname->isChecked()); |
466 | } | 504 | } |
467 | 505 | ||
468 | 506 | ||
469 | void IPWidget::hitIPSelect( int i ) { | 507 | void IPWidget::hitIPSelect( int i ) |
470 | if(i == 0) { | 508 | { |
509 | if(i == 0) | ||
510 | { | ||
471 | ipaddress_label->setEnabled(false); | 511 | ipaddress_label->setEnabled(false); |
472 | sub_label->setEnabled(false); | 512 | sub_label->setEnabled(false); |
473 | ipaddress_l->setEnabled(false); | 513 | ipaddress_l->setEnabled(false); |
474 | subnetmask_l->setEnabled(false); | 514 | subnetmask_l->setEnabled(false); |
475 | } | 515 | } |
476 | else { | 516 | else |
517 | { | ||
477 | ipaddress_label->setEnabled(true); | 518 | ipaddress_label->setEnabled(true); |
478 | sub_label->setEnabled(true); | 519 | sub_label->setEnabled(true); |
479 | ipaddress_l->setEnabled(true); | 520 | ipaddress_l->setEnabled(true); |
480 | subnetmask_l->setEnabled(true); | 521 | subnetmask_l->setEnabled(true); |
481 | } | 522 | } |
482 | } | 523 | } |
483 | 524 | ||
484 | 525 | ||
485 | 526 | ||
486 | DNSWidget::DNSWidget( PPPData *pd, QWidget *parent, bool isnewaccount, const char *name ) | 527 | DNSWidget::DNSWidget( PPPData *pd, QWidget *parent, bool isnewaccount, const char *name ) |
487 | : QWidget(parent, name), _pppdata(pd) | 528 | : QWidget(parent, name), _pppdata(pd) |
488 | { | 529 | { |
489 | QGridLayout *tl = new QGridLayout(this, 7, 2, 0 ); | 530 | QGridLayout *tl = new QGridLayout(this, 7, 2, 0 ); |
490 | 531 | ||
491 | dnsdomain_label = new QLabel(tr("Domain name:"), this); | 532 | dnsdomain_label = new QLabel(tr("Domain name:"), this); |
492 | tl->addWidget(dnsdomain_label, 0, 0); | 533 | tl->addWidget(dnsdomain_label, 0, 0); |
493 | 534 | ||
494 | dnsdomain = new QLineEdit(this); | 535 | dnsdomain = new QLineEdit(this); |
495 | 536 | ||
496 | tl->addWidget(dnsdomain, 0, 1); | 537 | tl->addWidget(dnsdomain, 0, 1); |
497 | QString tmp = tr("If you enter a domain name here, this domain\n" | 538 | QString tmp = tr("If you enter a domain name here, this domain\n" |
498 | "name is used for your computer while you are\n" | 539 | "name is used for your computer while you are\n" |
499 | "connected. When the connection is closed, the\n" | 540 | "connected. When the connection is closed, the\n" |
500 | "original domain name of your computer is\n" | 541 | "original domain name of your computer is\n" |
@@ -576,109 +617,117 @@ DNSWidget::DNSWidget( PPPData *pd, QWidget *parent, bool isnewaccount, const cha | |||
576 | tmp = tr("<p>This shows all defined DNS servers to use\n" | 617 | tmp = tr("<p>This shows all defined DNS servers to use\n" |
577 | "while you are connected. Use the <b>Add</b> and\n" | 618 | "while you are connected. Use the <b>Add</b> and\n" |
578 | "<b>Remove</b> buttons to modify the list"); | 619 | "<b>Remove</b> buttons to modify the list"); |
579 | 620 | ||
580 | QWhatsThis::add(servers_label,tmp); | 621 | QWhatsThis::add(servers_label,tmp); |
581 | QWhatsThis::add(dnsservers,tmp); | 622 | QWhatsThis::add(dnsservers,tmp); |
582 | 623 | ||
583 | exdnsdisabled_toggle = new QCheckBox(tr("Disable DNS servers during connection"), this); | 624 | exdnsdisabled_toggle = new QCheckBox(tr("Disable DNS servers during connection"), this); |
584 | // exdnsdisabled_toggle = new QCheckBox(tr("Disable existing DNS servers during connection"), this); | 625 | // exdnsdisabled_toggle = new QCheckBox(tr("Disable existing DNS servers during connection"), this); |
585 | exdnsdisabled_toggle->setChecked(_pppdata->exDNSDisabled()); | 626 | exdnsdisabled_toggle->setChecked(_pppdata->exDNSDisabled()); |
586 | tl->addMultiCellWidget(exdnsdisabled_toggle, 6, 6, 0, 1, AlignCenter); | 627 | tl->addMultiCellWidget(exdnsdisabled_toggle, 6, 6, 0, 1, AlignCenter); |
587 | QWhatsThis::add(exdnsdisabled_toggle, | 628 | QWhatsThis::add(exdnsdisabled_toggle, |
588 | tr("<p>When this option is selected, all DNS\n" | 629 | tr("<p>When this option is selected, all DNS\n" |
589 | "servers specified in <tt>/etc/resolv.conf</tt> are\n" | 630 | "servers specified in <tt>/etc/resolv.conf</tt> are\n" |
590 | "temporary disabled while the dialup connection\n" | 631 | "temporary disabled while the dialup connection\n" |
591 | "is established. After the connection is\n" | 632 | "is established. After the connection is\n" |
592 | "closed, the servers will be re-enabled\n" | 633 | "closed, the servers will be re-enabled\n" |
593 | "\n" | 634 | "\n" |
594 | "Typically, there is no reason to use this\n" | 635 | "Typically, there is no reason to use this\n" |
595 | "option, but it may become useful under \n" | 636 | "option, but it may become useful under \n" |
596 | "some circumstances.")); | 637 | "some circumstances.")); |
597 | 638 | ||
598 | 639 | ||
599 | // restore data if editing | 640 | // restore data if editing |
600 | if(!isnewaccount) { | 641 | if(!isnewaccount) |
642 | { | ||
601 | dnsservers->insertStringList(_pppdata->dns()); | 643 | dnsservers->insertStringList(_pppdata->dns()); |
602 | dnsdomain->setText(_pppdata->domain()); | 644 | dnsdomain->setText(_pppdata->domain()); |
603 | } | 645 | } |
604 | 646 | ||
605 | int mode = _pppdata->autoDNS() ? 0 : 1; | 647 | int mode = _pppdata->autoDNS() ? 0 : 1; |
606 | bg->setButton(mode); | 648 | bg->setButton(mode); |
607 | DNS_Mode_Selected(mode); | 649 | DNS_Mode_Selected(mode); |
608 | 650 | ||
609 | tl->activate(); | 651 | tl->activate(); |
610 | } | 652 | } |
611 | 653 | ||
612 | void DNSWidget::DNS_Edit_Changed(const QString &text) { | 654 | void DNSWidget::DNS_Edit_Changed(const QString &text) |
655 | { | ||
613 | QRegExp r("[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+"); | 656 | QRegExp r("[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+"); |
614 | add->setEnabled(text.find(r) != -1); | 657 | add->setEnabled(text.find(r) != -1); |
615 | } | 658 | } |
616 | 659 | ||
617 | void DNSWidget::DNS_Entry_Selected(int) { | 660 | void DNSWidget::DNS_Entry_Selected(int) |
661 | { | ||
618 | remove->setEnabled(true); | 662 | remove->setEnabled(true); |
619 | } | 663 | } |
620 | 664 | ||
621 | void DNSWidget::DNS_Mode_Selected(int mode) { | 665 | void DNSWidget::DNS_Mode_Selected(int mode) |
666 | { | ||
622 | bool on = (mode == 1); | 667 | bool on = (mode == 1); |
623 | dns_label->setEnabled(on); | 668 | dns_label->setEnabled(on); |
624 | servers_label->setEnabled(on); | 669 | servers_label->setEnabled(on); |
625 | dnsipaddr->setText(""); | 670 | dnsipaddr->setText(""); |
626 | dnsipaddr->setEnabled(on); | 671 | dnsipaddr->setEnabled(on); |
627 | add->setEnabled(false); | 672 | add->setEnabled(false); |
628 | remove->setEnabled(dnsservers->count()>0 && on); | 673 | remove->setEnabled(dnsservers->count()>0 && on); |
629 | dnsservers->clearSelection(); | 674 | dnsservers->clearSelection(); |
630 | dnsservers->setEnabled(on); | 675 | dnsservers->setEnabled(on); |
631 | dnsservers->triggerUpdate(false); | 676 | dnsservers->triggerUpdate(false); |
632 | } | 677 | } |
633 | 678 | ||
634 | void DNSWidget::save() { | 679 | void DNSWidget::save() |
680 | { | ||
635 | _pppdata->setAutoDNS(bg->id(bg->selected()) == 0); | 681 | _pppdata->setAutoDNS(bg->id(bg->selected()) == 0); |
636 | QStringList serverlist; | 682 | QStringList serverlist; |
637 | for(uint i=0; i < dnsservers->count(); i++) | 683 | for(uint i=0; i < dnsservers->count(); i++) |
638 | serverlist.append(dnsservers->text(i)); | 684 | serverlist.append(dnsservers->text(i)); |
639 | _pppdata->setDns(serverlist); | 685 | _pppdata->setDns(serverlist); |
640 | 686 | ||
641 | // strip leading dot | 687 | // strip leading dot |
642 | QString s(dnsdomain->text()); | 688 | QString s(dnsdomain->text()); |
643 | if(s.left(1) == ".") | 689 | if(s.left(1) == ".") |
644 | _pppdata->setDomain(s.mid(1)); | 690 | _pppdata->setDomain(s.mid(1)); |
645 | else | 691 | else |
646 | _pppdata->setDomain(dnsdomain->text()); | 692 | _pppdata->setDomain(dnsdomain->text()); |
647 | 693 | ||
648 | _pppdata->setExDNSDisabled(exdnsdisabled_toggle->isChecked()); | 694 | _pppdata->setExDNSDisabled(exdnsdisabled_toggle->isChecked()); |
649 | } | 695 | } |
650 | 696 | ||
651 | 697 | ||
652 | void DNSWidget::adddns() { | 698 | void DNSWidget::adddns() |
653 | if(dnsservers->count() < MAX_DNS_ENTRIES) { | 699 | { |
700 | if(dnsservers->count() < MAX_DNS_ENTRIES) | ||
701 | { | ||
654 | dnsservers->insertItem(dnsipaddr->text()); | 702 | dnsservers->insertItem(dnsipaddr->text()); |
655 | dnsipaddr->setText(""); | 703 | dnsipaddr->setText(""); |
656 | } | 704 | } |
657 | } | 705 | } |
658 | 706 | ||
659 | 707 | ||
660 | void DNSWidget::removedns() { | 708 | void DNSWidget::removedns() |
709 | { | ||
661 | int i; | 710 | int i; |
662 | i = dnsservers->currentItem(); | 711 | i = dnsservers->currentItem(); |
663 | if(i != -1) | 712 | if(i != -1) |
664 | dnsservers->removeItem(i); | 713 | dnsservers->removeItem(i); |
665 | remove->setEnabled(dnsservers->count()>0); | 714 | remove->setEnabled(dnsservers->count()>0); |
666 | } | 715 | } |
667 | 716 | ||
668 | 717 | ||
669 | // | 718 | // |
670 | // GatewayWidget | 719 | // GatewayWidget |
671 | // | 720 | // |
672 | GatewayWidget::GatewayWidget( PPPData *pd, QWidget *parent, bool isnewaccount, const char *name ) | 721 | GatewayWidget::GatewayWidget( PPPData *pd, QWidget *parent, bool isnewaccount, const char *name ) |
673 | : QWidget(parent, name), _pppdata(pd) | 722 | : QWidget(parent, name), _pppdata(pd) |
674 | { | 723 | { |
675 | QVBoxLayout *topLayout = new QVBoxLayout(this); | 724 | QVBoxLayout *topLayout = new QVBoxLayout(this); |
676 | topLayout->setSpacing( 2 ); | 725 | topLayout->setSpacing( 2 ); |
677 | topLayout->setMargin( 0 ); | 726 | topLayout->setMargin( 0 ); |
678 | 727 | ||
679 | box = new QVGroupBox(tr("Configuration"), this); | 728 | box = new QVGroupBox(tr("Configuration"), this); |
680 | 729 | ||
681 | rb = new QButtonGroup(this); | 730 | rb = new QButtonGroup(this); |
682 | rb->hide(); | 731 | rb->hide(); |
683 | connect(rb, SIGNAL(clicked(int)), SLOT(hitGatewaySelect(int))); | 732 | connect(rb, SIGNAL(clicked(int)), SLOT(hitGatewaySelect(int))); |
684 | 733 | ||
@@ -700,79 +749,87 @@ GatewayWidget::GatewayWidget( PPPData *pd, QWidget *parent, bool isnewaccount, c | |||
700 | staticgateway->setText(tr("Static gateway")); | 749 | staticgateway->setText(tr("Static gateway")); |
701 | rb->insert(staticgateway, 1); | 750 | rb->insert(staticgateway, 1); |
702 | QWhatsThis::add(staticgateway, | 751 | QWhatsThis::add(staticgateway, |
703 | tr("<p>Allows you to specify which computer you want\n" | 752 | tr("<p>Allows you to specify which computer you want\n" |
704 | "to use as gateway (see <i>Default Gateway</i> above)")); | 753 | "to use as gateway (see <i>Default Gateway</i> above)")); |
705 | 754 | ||
706 | QHBox *gateBox = new QHBox(box); | 755 | QHBox *gateBox = new QHBox(box); |
707 | gate_label = new QLabel(tr("Gateway IP address:"), gateBox); | 756 | gate_label = new QLabel(tr("Gateway IP address:"), gateBox); |
708 | gatewayaddr = new IPLineEdit(gateBox); | 757 | gatewayaddr = new IPLineEdit(gateBox); |
709 | 758 | ||
710 | defaultroute = new QCheckBox(tr("Assign the default route to this gateway"), | 759 | defaultroute = new QCheckBox(tr("Assign the default route to this gateway"), |
711 | this); | 760 | this); |
712 | QWhatsThis::add(defaultroute, | 761 | QWhatsThis::add(defaultroute, |
713 | tr("If this option is enabled, all packets not\n" | 762 | tr("If this option is enabled, all packets not\n" |
714 | "going to the local net are routed through\n" | 763 | "going to the local net are routed through\n" |
715 | "the PPP connection.\n" | 764 | "the PPP connection.\n" |
716 | "\n" | 765 | "\n" |
717 | "Normally, you should turn this on")); | 766 | "Normally, you should turn this on")); |
718 | 767 | ||
719 | topLayout->addWidget(box); | 768 | topLayout->addWidget(box); |
720 | topLayout->addWidget(defaultroute); | 769 | topLayout->addWidget(defaultroute); |
721 | topLayout->addStretch(); | 770 | topLayout->addStretch(); |
722 | 771 | ||
723 | //load info from gpppdata | 772 | //load info from gpppdata |
724 | if(!isnewaccount) { | 773 | if(!isnewaccount) |
725 | if(_pppdata->gateway() == "0.0.0.0") { | 774 | { |
775 | if(_pppdata->gateway() == "0.0.0.0") | ||
776 | { | ||
726 | defaultgateway->setChecked(true); | 777 | defaultgateway->setChecked(true); |
727 | hitGatewaySelect(0); | 778 | hitGatewaySelect(0); |
728 | } | 779 | } |
729 | else { | 780 | else |
781 | { | ||
730 | gatewayaddr->setText(_pppdata->gateway()); | 782 | gatewayaddr->setText(_pppdata->gateway()); |
731 | staticgateway->setChecked(true); | 783 | staticgateway->setChecked(true); |
732 | } | 784 | } |
733 | defaultroute->setChecked(_pppdata->defaultroute()); | 785 | defaultroute->setChecked(_pppdata->defaultroute()); |
734 | } | 786 | } |
735 | else { | 787 | else |
788 | { | ||
736 | defaultgateway->setChecked(true); | 789 | defaultgateway->setChecked(true); |
737 | hitGatewaySelect(0); | 790 | hitGatewaySelect(0); |
738 | defaultroute->setChecked(true); | 791 | defaultroute->setChecked(true); |
739 | } | 792 | } |
740 | } | 793 | } |
741 | 794 | ||
742 | void GatewayWidget::save() { | 795 | void GatewayWidget::save() |
796 | { | ||
743 | _pppdata->setGateway(gatewayaddr->text()); | 797 | _pppdata->setGateway(gatewayaddr->text()); |
744 | _pppdata->setDefaultroute(defaultroute->isChecked()); | 798 | _pppdata->setDefaultroute(defaultroute->isChecked()); |
745 | } | 799 | } |
746 | 800 | ||
747 | 801 | ||
748 | void GatewayWidget::hitGatewaySelect( int i ) { | 802 | void GatewayWidget::hitGatewaySelect( int i ) |
749 | if(i == 0) { | 803 | { |
804 | if(i == 0) | ||
805 | { | ||
750 | gatewayaddr->setText("0.0.0.0"); | 806 | gatewayaddr->setText("0.0.0.0"); |
751 | gatewayaddr->setEnabled(false); | 807 | gatewayaddr->setEnabled(false); |
752 | gate_label->setEnabled(false); | 808 | gate_label->setEnabled(false); |
753 | } | 809 | } |
754 | else { | 810 | else |
811 | { | ||
755 | gatewayaddr->setEnabled(true); | 812 | gatewayaddr->setEnabled(true); |
756 | gatewayaddr->setText(""); | 813 | gatewayaddr->setText(""); |
757 | gate_label->setEnabled(true); | 814 | gate_label->setEnabled(true); |
758 | } | 815 | } |
759 | } | 816 | } |
760 | 817 | ||
761 | 818 | ||
762 | 819 | ||
763 | ScriptWidget::ScriptWidget( PPPData *pd, QWidget *parent, bool isnewaccount, const char *name ) | 820 | ScriptWidget::ScriptWidget( PPPData *pd, QWidget *parent, bool isnewaccount, const char *name ) |
764 | : QWidget(parent, name),_pppdata(pd) | 821 | : QWidget(parent, name),_pppdata(pd) |
765 | { | 822 | { |
766 | 823 | ||
767 | QVBoxLayout *tl = new QVBoxLayout(this, 0 ); | 824 | QVBoxLayout *tl = new QVBoxLayout(this, 0 ); |
768 | se = new ScriptEdit(this); | 825 | se = new ScriptEdit(this); |
769 | connect(se, SIGNAL(returnPressed()), SLOT(addButton())); | 826 | connect(se, SIGNAL(returnPressed()), SLOT(addButton())); |
770 | tl->addWidget(se); | 827 | tl->addWidget(se); |
771 | 828 | ||
772 | // insert equal-sized buttons | 829 | // insert equal-sized buttons |
773 | QHBoxLayout *hl = new QHBoxLayout( this ); | 830 | QHBoxLayout *hl = new QHBoxLayout( this ); |
774 | tl->addLayout( hl ); | 831 | tl->addLayout( hl ); |
775 | add = new QPushButton( tr("Add"), this ); | 832 | add = new QPushButton( tr("Add"), this ); |
776 | hl->addWidget( add ); | 833 | hl->addWidget( add ); |
777 | connect(add, SIGNAL(clicked()), SLOT(addButton())); | 834 | connect(add, SIGNAL(clicked()), SLOT(addButton())); |
778 | insert = new QPushButton( tr("Insert"), this ); | 835 | insert = new QPushButton( tr("Insert"), this ); |
@@ -782,136 +839,150 @@ ScriptWidget::ScriptWidget( PPPData *pd, QWidget *parent, bool isnewaccount, con | |||
782 | hl->addWidget( remove ); | 839 | hl->addWidget( remove ); |
783 | connect(remove, SIGNAL(clicked()), SLOT(removeButton())); | 840 | connect(remove, SIGNAL(clicked()), SLOT(removeButton())); |
784 | 841 | ||
785 | QHBoxLayout *l12 = new QHBoxLayout(0); | 842 | QHBoxLayout *l12 = new QHBoxLayout(0); |
786 | tl->addLayout(l12); | 843 | tl->addLayout(l12); |
787 | stl = new QListBox(this); | 844 | stl = new QListBox(this); |
788 | // stl->setVScrollBarMode( QScrollView::AlwaysOff ); | 845 | // stl->setVScrollBarMode( QScrollView::AlwaysOff ); |
789 | connect(stl, SIGNAL(highlighted(int)), SLOT(stlhighlighted(int))); | 846 | connect(stl, SIGNAL(highlighted(int)), SLOT(stlhighlighted(int))); |
790 | // stl->setMinimumSize(QSize(70, 140)); | 847 | // stl->setMinimumSize(QSize(70, 140)); |
791 | 848 | ||
792 | sl = new QListBox(this); | 849 | sl = new QListBox(this); |
793 | // sl->setVScrollBarMode( QScrollView::AlwaysOff ); | 850 | // sl->setVScrollBarMode( QScrollView::AlwaysOff ); |
794 | connect(sl, SIGNAL(highlighted(int)), SLOT(slhighlighted(int))); | 851 | connect(sl, SIGNAL(highlighted(int)), SLOT(slhighlighted(int))); |
795 | // sl->setMinimumSize(QSize(150, 140)); | 852 | // sl->setMinimumSize(QSize(150, 140)); |
796 | 853 | ||
797 | slb = new QScrollBar(this); | 854 | slb = new QScrollBar(this); |
798 | // slb->setFixedWidth(slb->sizeHint().width()); | 855 | // slb->setFixedWidth(slb->sizeHint().width()); |
799 | connect(slb, SIGNAL(valueChanged(int)), SLOT(scrolling(int))); | 856 | connect(slb, SIGNAL(valueChanged(int)), SLOT(scrolling(int))); |
800 | 857 | ||
801 | l12->addWidget(stl, 1); | 858 | l12->addWidget(stl, 1); |
802 | l12->addWidget(sl, 3); | 859 | l12->addWidget(sl, 3); |
803 | l12->addWidget(slb, 0); | 860 | l12->addWidget(slb, 0); |
804 | 861 | ||
805 | //load data from gpppdata | 862 | //load data from gpppdata |
806 | if(!isnewaccount) { | 863 | if(!isnewaccount) |
864 | { | ||
807 | QStringList &comlist = _pppdata->scriptType(); | 865 | QStringList &comlist = _pppdata->scriptType(); |
808 | QStringList &arglist = _pppdata->script(); | 866 | QStringList &arglist = _pppdata->script(); |
809 | QStringList::Iterator itcom = comlist.begin(); | 867 | QStringList::Iterator itcom = comlist.begin(); |
810 | QStringList::Iterator itarg = arglist.begin(); | 868 | QStringList::Iterator itarg = arglist.begin(); |
811 | 869 | ||
812 | for ( ; | 870 | for ( ; |
813 | itcom != comlist.end() && itarg != arglist.end(); | 871 | itcom != comlist.end() && itarg != arglist.end(); |
814 | ++itcom, ++itarg ) | 872 | ++itcom, ++itarg ) |
815 | { | 873 | { |
816 | stl->insertItem(*itcom); | 874 | stl->insertItem(*itcom); |
817 | sl->insertItem(*itarg); | 875 | sl->insertItem(*itarg); |
818 | } | 876 | } |
819 | } | 877 | } |
820 | 878 | ||
821 | insert->setEnabled(false); | 879 | insert->setEnabled(false); |
822 | remove->setEnabled(false); | 880 | remove->setEnabled(false); |
823 | adjustScrollBar(); | 881 | adjustScrollBar(); |
824 | tl->activate(); | 882 | tl->activate(); |
825 | } | 883 | } |
826 | 884 | ||
827 | bool ScriptWidget::check() { | 885 | bool ScriptWidget::check() |
886 | { | ||
828 | uint lstart = 0; | 887 | uint lstart = 0; |
829 | uint lend = 0; | 888 | uint lend = 0; |
830 | uint errcnt = 0; | 889 | uint errcnt = 0; |
831 | 890 | ||
832 | if(sl->count() > 0) { | 891 | if(sl->count() > 0) |
833 | for( uint i=0; i <= sl->count()-1; i++) { | 892 | { |
834 | if(stl->text(i) == "LoopStart") { | 893 | for( uint i=0; i <= sl->count()-1; i++) |
894 | { | ||
895 | if(stl->text(i) == "LoopStart") | ||
896 | { | ||
835 | lstart++; | 897 | lstart++; |
836 | } | 898 | } |
837 | if (stl->text(i) == "LoopEnd") { | 899 | if (stl->text(i) == "LoopEnd") |
900 | { | ||
838 | lend++; | 901 | lend++; |
839 | } | 902 | } |
840 | if ( lend > lstart ) errcnt++; | 903 | if ( lend > lstart ) errcnt++; |
841 | } | 904 | } |
842 | return ( (errcnt == 0 ) && (lstart == lend) ); | 905 | return ( (errcnt == 0 ) && (lstart == lend) ); |
843 | } | 906 | } |
844 | return true; | 907 | return true; |
845 | } | 908 | } |
846 | 909 | ||
847 | 910 | ||
848 | void ScriptWidget::save() { | 911 | void ScriptWidget::save() |
912 | { | ||
849 | QStringList typelist, arglist; | 913 | QStringList typelist, arglist; |
850 | for(uint i=0; i < sl->count(); i++) { | 914 | for(uint i=0; i < sl->count(); i++) |
915 | { | ||
851 | typelist.append(stl->text(i)); | 916 | typelist.append(stl->text(i)); |
852 | arglist.append(sl->text(i)); | 917 | arglist.append(sl->text(i)); |
853 | } | 918 | } |
854 | _pppdata->setScriptType(typelist); | 919 | _pppdata->setScriptType(typelist); |
855 | _pppdata->setScript(arglist); | 920 | _pppdata->setScript(arglist); |
856 | } | 921 | } |
857 | 922 | ||
858 | 923 | ||
859 | 924 | ||
860 | void ScriptWidget::adjustScrollBar() { | 925 | void ScriptWidget::adjustScrollBar() |
926 | { | ||
861 | if((int)sl->count() <= sl->numItemsVisible()) | 927 | if((int)sl->count() <= sl->numItemsVisible()) |
862 | slb->setRange(0, 0); | 928 | slb->setRange(0, 0); |
863 | else | 929 | else |
864 | slb->setRange(0, (sl->count() - sl->numItemsVisible())+1); | 930 | slb->setRange(0, (sl->count() - sl->numItemsVisible())+1); |
865 | } | 931 | } |
866 | 932 | ||
867 | 933 | ||
868 | void ScriptWidget::scrolling(int i) { | 934 | void ScriptWidget::scrolling(int i) |
935 | { | ||
869 | sl->setTopItem(i); | 936 | sl->setTopItem(i); |
870 | stl->setTopItem(i); | 937 | stl->setTopItem(i); |
871 | } | 938 | } |
872 | 939 | ||
873 | 940 | ||
874 | void ScriptWidget::slhighlighted(int i) { | 941 | void ScriptWidget::slhighlighted(int i) |
942 | { | ||
875 | insert->setEnabled(true); | 943 | insert->setEnabled(true); |
876 | remove->setEnabled(true); | 944 | remove->setEnabled(true); |
877 | stl->setCurrentItem(i); | 945 | stl->setCurrentItem(i); |
878 | } | 946 | } |
879 | 947 | ||
880 | 948 | ||
881 | void ScriptWidget::stlhighlighted(int i) { | 949 | void ScriptWidget::stlhighlighted(int i) |
950 | { | ||
882 | insert->setEnabled(true); | 951 | insert->setEnabled(true); |
883 | remove->setEnabled(true); | 952 | remove->setEnabled(true); |
884 | sl->setCurrentItem(i); | 953 | sl->setCurrentItem(i); |
885 | } | 954 | } |
886 | 955 | ||
887 | 956 | ||
888 | void ScriptWidget::addButton() { | 957 | void ScriptWidget::addButton() |
958 | { | ||
889 | //don't allow more than the maximum script entries | 959 | //don't allow more than the maximum script entries |
890 | if(sl->count() == MAX_SCRIPT_ENTRIES-1) | 960 | if(sl->count() == MAX_SCRIPT_ENTRIES-1) |
891 | return; | 961 | return; |
892 | 962 | ||
893 | switch(se->type()) { | 963 | switch(se->type()) |
964 | { | ||
894 | case ScriptEdit::Expect: | 965 | case ScriptEdit::Expect: |
895 | stl->insertItem("Expect"); | 966 | stl->insertItem("Expect"); |
896 | sl->insertItem(se->text()); | 967 | sl->insertItem(se->text()); |
897 | break; | 968 | break; |
898 | 969 | ||
899 | case ScriptEdit::Send: | 970 | case ScriptEdit::Send: |
900 | stl->insertItem("Send"); | 971 | stl->insertItem("Send"); |
901 | sl->insertItem(se->text()); | 972 | sl->insertItem(se->text()); |
902 | break; | 973 | break; |
903 | 974 | ||
904 | case ScriptEdit::SendNoEcho: | 975 | case ScriptEdit::SendNoEcho: |
905 | stl->insertItem("SendNoEcho"); | 976 | stl->insertItem("SendNoEcho"); |
906 | sl->insertItem(se->text()); | 977 | sl->insertItem(se->text()); |
907 | break; | 978 | break; |
908 | 979 | ||
909 | case ScriptEdit::Pause: | 980 | case ScriptEdit::Pause: |
910 | stl->insertItem("Pause"); | 981 | stl->insertItem("Pause"); |
911 | sl->insertItem(se->text()); | 982 | sl->insertItem(se->text()); |
912 | break; | 983 | break; |
913 | 984 | ||
914 | case ScriptEdit::Hangup: | 985 | case ScriptEdit::Hangup: |
915 | stl->insertItem("Hangup"); | 986 | stl->insertItem("Hangup"); |
916 | sl->insertItem(""); | 987 | sl->insertItem(""); |
917 | break; | 988 | break; |
@@ -959,55 +1030,57 @@ void ScriptWidget::addButton() { | |||
959 | case ScriptEdit::Scan: | 1030 | case ScriptEdit::Scan: |
960 | stl->insertItem("Scan"); | 1031 | stl->insertItem("Scan"); |
961 | sl->insertItem(se->text()); | 1032 | sl->insertItem(se->text()); |
962 | break; | 1033 | break; |
963 | 1034 | ||
964 | case ScriptEdit::Save: | 1035 | case ScriptEdit::Save: |
965 | stl->insertItem("Save"); | 1036 | stl->insertItem("Save"); |
966 | sl->insertItem(se->text()); | 1037 | sl->insertItem(se->text()); |
967 | break; | 1038 | break; |
968 | 1039 | ||
969 | default: | 1040 | default: |
970 | break; | 1041 | break; |
971 | } | 1042 | } |
972 | 1043 | ||
973 | //get the scrollbar adjusted, and scroll the list so we can see what | 1044 | //get the scrollbar adjusted, and scroll the list so we can see what |
974 | //we're adding to | 1045 | //we're adding to |
975 | adjustScrollBar(); | 1046 | adjustScrollBar(); |
976 | slb->setValue(slb->maxValue()); | 1047 | slb->setValue(slb->maxValue()); |
977 | 1048 | ||
978 | //clear the text in the entry box | 1049 | //clear the text in the entry box |
979 | se->setText(""); | 1050 | se->setText(""); |
980 | } | 1051 | } |
981 | 1052 | ||
982 | 1053 | ||
983 | void ScriptWidget::insertButton() { | 1054 | void ScriptWidget::insertButton() |
1055 | { | ||
984 | //exit if there is no highlighted item, or we've reached the | 1056 | //exit if there is no highlighted item, or we've reached the |
985 | //maximum entries in the script list | 1057 | //maximum entries in the script list |
986 | if(sl->currentItem() < 0 || (sl->count() == MAX_SCRIPT_ENTRIES-1)) | 1058 | if(sl->currentItem() < 0 || (sl->count() == MAX_SCRIPT_ENTRIES-1)) |
987 | return; | 1059 | return; |
988 | 1060 | ||
989 | switch(se->type()) { | 1061 | switch(se->type()) |
1062 | { | ||
990 | case ScriptEdit::Expect: | 1063 | case ScriptEdit::Expect: |
991 | stl->insertItem("Expect", stl->currentItem()); | 1064 | stl->insertItem("Expect", stl->currentItem()); |
992 | sl->insertItem(se->text(), sl->currentItem()); | 1065 | sl->insertItem(se->text(), sl->currentItem()); |
993 | break; | 1066 | break; |
994 | 1067 | ||
995 | case ScriptEdit::Send: | 1068 | case ScriptEdit::Send: |
996 | stl->insertItem("Send", stl->currentItem()); | 1069 | stl->insertItem("Send", stl->currentItem()); |
997 | sl->insertItem(se->text(), sl->currentItem()); | 1070 | sl->insertItem(se->text(), sl->currentItem()); |
998 | break; | 1071 | break; |
999 | 1072 | ||
1000 | case ScriptEdit::SendNoEcho: | 1073 | case ScriptEdit::SendNoEcho: |
1001 | stl->insertItem("SendNoEcho", stl->currentItem()); | 1074 | stl->insertItem("SendNoEcho", stl->currentItem()); |
1002 | sl->insertItem(se->text(), sl->currentItem()); | 1075 | sl->insertItem(se->text(), sl->currentItem()); |
1003 | break; | 1076 | break; |
1004 | 1077 | ||
1005 | case ScriptEdit::Pause: | 1078 | case ScriptEdit::Pause: |
1006 | stl->insertItem("Pause", stl->currentItem()); | 1079 | stl->insertItem("Pause", stl->currentItem()); |
1007 | sl->insertItem(se->text(), sl->currentItem()); | 1080 | sl->insertItem(se->text(), sl->currentItem()); |
1008 | break; | 1081 | break; |
1009 | 1082 | ||
1010 | case ScriptEdit::Hangup: | 1083 | case ScriptEdit::Hangup: |
1011 | stl->insertItem("Hangup", stl->currentItem()); | 1084 | stl->insertItem("Hangup", stl->currentItem()); |
1012 | sl->insertItem("", sl->currentItem()); | 1085 | sl->insertItem("", sl->currentItem()); |
1013 | break; | 1086 | break; |
@@ -1049,86 +1122,90 @@ void ScriptWidget::insertButton() { | |||
1049 | 1122 | ||
1050 | case ScriptEdit::LoopEnd: | 1123 | case ScriptEdit::LoopEnd: |
1051 | stl->insertItem("LoopEnd", stl->currentItem()); | 1124 | stl->insertItem("LoopEnd", stl->currentItem()); |
1052 | sl->insertItem(se->text(), sl->currentItem()); | 1125 | sl->insertItem(se->text(), sl->currentItem()); |
1053 | break; | 1126 | break; |
1054 | 1127 | ||
1055 | case ScriptEdit::Scan: | 1128 | case ScriptEdit::Scan: |
1056 | stl->insertItem("Scan", stl->currentItem()); | 1129 | stl->insertItem("Scan", stl->currentItem()); |
1057 | sl->insertItem(se->text(), sl->currentItem()); | 1130 | sl->insertItem(se->text(), sl->currentItem()); |
1058 | break; | 1131 | break; |
1059 | 1132 | ||
1060 | case ScriptEdit::Save: | 1133 | case ScriptEdit::Save: |
1061 | stl->insertItem("Save", stl->currentItem()); | 1134 | stl->insertItem("Save", stl->currentItem()); |
1062 | sl->insertItem(se->text(), sl->currentItem()); | 1135 | sl->insertItem(se->text(), sl->currentItem()); |
1063 | break; | 1136 | break; |
1064 | 1137 | ||
1065 | default: | 1138 | default: |
1066 | break; | 1139 | break; |
1067 | } | 1140 | } |
1068 | adjustScrollBar(); | 1141 | adjustScrollBar(); |
1069 | se->setText(""); | 1142 | se->setText(""); |
1070 | } | 1143 | } |
1071 | 1144 | ||
1072 | 1145 | ||
1073 | void ScriptWidget::removeButton() { | 1146 | void ScriptWidget::removeButton() |
1074 | if(sl->currentItem() >= 0) { | 1147 | { |
1148 | if(sl->currentItem() >= 0) | ||
1149 | { | ||
1075 | int stlc = stl->currentItem(); | 1150 | int stlc = stl->currentItem(); |
1076 | sl->removeItem(sl->currentItem()); | 1151 | sl->removeItem(sl->currentItem()); |
1077 | stl->removeItem(stlc); | 1152 | stl->removeItem(stlc); |
1078 | adjustScrollBar(); | 1153 | adjustScrollBar(); |
1079 | insert->setEnabled(sl->currentItem() != -1); | 1154 | insert->setEnabled(sl->currentItem() != -1); |
1080 | remove->setEnabled(sl->currentItem() != -1); | 1155 | remove->setEnabled(sl->currentItem() != -1); |
1081 | } | 1156 | } |
1082 | } | 1157 | } |
1083 | 1158 | ||
1084 | 1159 | ||
1085 | 1160 | ||
1086 | ///////////////////////////////////////////////////////////////////////////// | 1161 | ///////////////////////////////////////////////////////////////////////////// |
1087 | // | 1162 | // |
1088 | // Used to specify a new phone number | 1163 | // Used to specify a new phone number |
1089 | // | 1164 | // |
1090 | ///////////////////////////////////////////////////////////////////////////// | 1165 | ///////////////////////////////////////////////////////////////////////////// |
1091 | PhoneNumberDialog::PhoneNumberDialog(QWidget *parent) | 1166 | PhoneNumberDialog::PhoneNumberDialog(QWidget *parent) |
1092 | : QDialog(parent,"PhoneNumberDialog",true) | 1167 | : QDialog(parent,"PhoneNumberDialog",true) |
1093 | { | 1168 | { |
1094 | setCaption( tr("Add Phone Number") ); | 1169 | setCaption( tr("Add Phone Number") ); |
1095 | 1170 | ||
1096 | 1171 | ||
1097 | QVBoxLayout *layout = new QVBoxLayout( this ); | 1172 | QVBoxLayout *layout = new QVBoxLayout( this ); |
1098 | layout->setSpacing( 3 ); | 1173 | layout->setSpacing( 3 ); |
1099 | layout->setMargin( 3 ); | 1174 | layout->setMargin( 3 ); |
1100 | 1175 | ||
1101 | // QHBox *hbox = new QHBox(this); | 1176 | // QHBox *hbox = new QHBox(this); |
1102 | // setMainWidget(hbox); | 1177 | // setMainWidget(hbox); |
1103 | 1178 | ||
1104 | // hbox->setSpacing( 2 );//KDialog::spacingHint()); | 1179 | // hbox->setSpacing( 2 );//KDialog::spacingHint()); |
1105 | 1180 | ||
1106 | QLabel *label = new QLabel(this, tr("Enter a phone number:")); | 1181 | QLabel *label = new QLabel(this, tr("Enter a phone number:")); |
1107 | layout->addWidget( label ); | 1182 | layout->addWidget( label ); |
1108 | 1183 | ||
1109 | le = new QLineEdit(this, "lineEdit"); | 1184 | le = new QLineEdit(this, "lineEdit"); |
1110 | layout->addWidget( le ); | 1185 | layout->addWidget( le ); |
1111 | 1186 | ||
1112 | connect(le, SIGNAL(textChanged(const QString &)), | 1187 | connect(le, SIGNAL(textChanged(const QString &)), |
1113 | this, SLOT(textChanged(const QString &))); | 1188 | this, SLOT(textChanged(const QString &))); |
1114 | 1189 | ||
1115 | le->setFocus(); | 1190 | le->setFocus(); |
1116 | textChanged(""); | 1191 | textChanged(""); |
1117 | 1192 | ||
1118 | 1193 | ||
1119 | } | 1194 | } |
1120 | 1195 | ||
1121 | 1196 | ||
1122 | QString PhoneNumberDialog::phoneNumber() { | 1197 | QString PhoneNumberDialog::phoneNumber() |
1198 | { | ||
1123 | QString s = le->text(); | 1199 | QString s = le->text(); |
1124 | 1200 | ||
1125 | return s; | 1201 | return s; |
1126 | } | 1202 | } |
1127 | 1203 | ||
1128 | 1204 | ||
1129 | void PhoneNumberDialog::textChanged(const QString &s) { | 1205 | void PhoneNumberDialog::textChanged(const QString &s) |
1206 | { | ||
1130 | // enableButtonOK(s.length() > 0); | 1207 | // enableButtonOK(s.length() > 0); |
1131 | } | 1208 | } |
1132 | 1209 | ||
1133 | 1210 | ||
1134 | //#include "edit.moc" | 1211 | //#include "edit.moc" |
diff --git a/noncore/settings/sysinfo/modulesinfo.cpp b/noncore/settings/sysinfo/modulesinfo.cpp index 566b179..9cb8ad2 100644 --- a/noncore/settings/sysinfo/modulesinfo.cpp +++ b/noncore/settings/sysinfo/modulesinfo.cpp | |||
@@ -1,56 +1,58 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** ModulesInfo | 2 | ** ModulesInfo |
3 | ** | 3 | ** |
4 | ** Display Modules information | 4 | ** Display Modules information |
5 | ** | 5 | ** |
6 | ** Copyright (C) 2002, Michael Lauer | 6 | ** Copyright (C) 2002, Michael Lauer |
7 | ** mickey@tm.informatik.uni-frankfurt.de | 7 | ** mickey@tm.informatik.uni-frankfurt.de |
8 | ** http://www.Vanille.de | 8 | ** http://www.Vanille.de |
9 | ** | 9 | ** |
10 | ** Based on ProcessInfo by Dan Williams <williamsdr@acm.org> | 10 | ** Based on ProcessInfo by Dan Williams <williamsdr@acm.org> |
11 | ** | 11 | ** |
12 | ** This file may be distributed and/or modified under the terms of the | 12 | ** This file may be distributed and/or modified under the terms of the |
13 | ** GNU General Public License version 2 as published by the Free Software | 13 | ** GNU General Public License version 2 as published by the Free Software |
14 | ** Foundation and appearing in the file LICENSE.GPL included in the | 14 | ** Foundation and appearing in the file LICENSE.GPL included in the |
15 | ** packaging of this file. | 15 | ** packaging of this file. |
16 | ** | 16 | ** |
17 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 17 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
18 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 18 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
19 | ** | 19 | ** |
20 | **********************************************************************/ | 20 | **********************************************************************/ |
21 | 21 | ||
22 | #include "modulesinfo.h" | ||
23 | #include "detail.h" | ||
24 | |||
25 | /* OPIE */ | ||
22 | #include <qpe/qpeapplication.h> | 26 | #include <qpe/qpeapplication.h> |
23 | 27 | ||
28 | /* QT */ | ||
24 | #include <qfile.h> | 29 | #include <qfile.h> |
25 | #include <qlayout.h> | 30 | #include <qlayout.h> |
26 | #include <qmessagebox.h> | 31 | #include <qmessagebox.h> |
27 | #include <qtimer.h> | 32 | #include <qtimer.h> |
28 | #include <qwhatsthis.h> | 33 | #include <qwhatsthis.h> |
29 | 34 | ||
30 | #include "modulesinfo.h" | ||
31 | #include "detail.h" | ||
32 | |||
33 | ModulesInfo::ModulesInfo( QWidget* parent, const char* name, WFlags fl ) | 35 | ModulesInfo::ModulesInfo( QWidget* parent, const char* name, WFlags fl ) |
34 | : QWidget( parent, name, fl ) | 36 | : QWidget( parent, name, fl ) |
35 | { | 37 | { |
36 | QGridLayout *layout = new QGridLayout( this ); | 38 | QGridLayout *layout = new QGridLayout( this ); |
37 | layout->setSpacing( 4 ); | 39 | layout->setSpacing( 4 ); |
38 | layout->setMargin( 4 ); | 40 | layout->setMargin( 4 ); |
39 | 41 | ||
40 | ModulesView = new QListView( this ); | 42 | ModulesView = new QListView( this ); |
41 | int colnum = ModulesView->addColumn( tr( "Module" ) ); | 43 | int colnum = ModulesView->addColumn( tr( "Module" ) ); |
42 | colnum = ModulesView->addColumn( tr( "Size" ) ); | 44 | colnum = ModulesView->addColumn( tr( "Size" ) ); |
43 | ModulesView->setColumnAlignment( colnum, Qt::AlignRight ); | 45 | ModulesView->setColumnAlignment( colnum, Qt::AlignRight ); |
44 | colnum = ModulesView->addColumn( tr( "Use#" ) ); | 46 | colnum = ModulesView->addColumn( tr( "Use#" ) ); |
45 | ModulesView->setColumnAlignment( colnum, Qt::AlignRight ); | 47 | ModulesView->setColumnAlignment( colnum, Qt::AlignRight ); |
46 | colnum = ModulesView->addColumn( tr( "Used by" ) ); | 48 | colnum = ModulesView->addColumn( tr( "Used by" ) ); |
47 | ModulesView->setAllColumnsShowFocus( TRUE ); | 49 | ModulesView->setAllColumnsShowFocus( TRUE ); |
48 | layout->addMultiCellWidget( ModulesView, 0, 0, 0, 1 ); | 50 | layout->addMultiCellWidget( ModulesView, 0, 0, 0, 1 ); |
49 | QWhatsThis::add( ModulesView, tr( "This is a list of all the kernel modules currently loaded on this handheld device.\n\nClick and hold on a module to see additional information about the module, or to unload it." ) ); | 51 | QWhatsThis::add( ModulesView, tr( "This is a list of all the kernel modules currently loaded on this handheld device.\n\nClick and hold on a module to see additional information about the module, or to unload it." ) ); |
50 | 52 | ||
51 | // Test if we have /sbin/modinfo, and if so, allow module detail window | 53 | // Test if we have /sbin/modinfo, and if so, allow module detail window |
52 | if ( QFile::exists( "/sbin/modinfo" ) ) | 54 | if ( QFile::exists( "/sbin/modinfo" ) ) |
53 | { | 55 | { |
54 | QPEApplication::setStylusOperation( ModulesView->viewport(), QPEApplication::RightOnHold ); | 56 | QPEApplication::setStylusOperation( ModulesView->viewport(), QPEApplication::RightOnHold ); |
55 | connect( ModulesView, SIGNAL( rightButtonPressed( QListViewItem *, const QPoint &, int ) ), | 57 | connect( ModulesView, SIGNAL( rightButtonPressed( QListViewItem *, const QPoint &, int ) ), |
56 | this, SLOT( viewModules( QListViewItem * ) ) ); | 58 | this, SLOT( viewModules( QListViewItem * ) ) ); |
@@ -61,73 +63,73 @@ ModulesInfo::ModulesInfo( QWidget* parent, const char* name, WFlags fl ) | |||
61 | CommandCB->insertItem( "rmmod" ); | 63 | CommandCB->insertItem( "rmmod" ); |
62 | // I can't think of other useful commands yet. Anyone? | 64 | // I can't think of other useful commands yet. Anyone? |
63 | layout->addWidget( CommandCB, 1, 0 ); | 65 | layout->addWidget( CommandCB, 1, 0 ); |
64 | QWhatsThis::add( CommandCB, tr( "Select a command here and then click the Send button to the right to send the command to module selected above." ) ); | 66 | QWhatsThis::add( CommandCB, tr( "Select a command here and then click the Send button to the right to send the command to module selected above." ) ); |
65 | 67 | ||
66 | QPushButton *btn = new QPushButton( this ); | 68 | QPushButton *btn = new QPushButton( this ); |
67 | btn->setMinimumSize( QSize( 50, 24 ) ); | 69 | btn->setMinimumSize( QSize( 50, 24 ) ); |
68 | btn->setMaximumSize( QSize( 50, 24 ) ); | 70 | btn->setMaximumSize( QSize( 50, 24 ) ); |
69 | btn->setText( tr( "Send" ) ); | 71 | btn->setText( tr( "Send" ) ); |
70 | connect( btn, SIGNAL( clicked() ), this, SLOT( slotSendClicked() ) ); | 72 | connect( btn, SIGNAL( clicked() ), this, SLOT( slotSendClicked() ) ); |
71 | layout->addWidget( btn, 1, 1 ); | 73 | layout->addWidget( btn, 1, 1 ); |
72 | QWhatsThis::add( btn, tr( "Click here to send the selected command to the module selected above." ) ); | 74 | QWhatsThis::add( btn, tr( "Click here to send the selected command to the module selected above." ) ); |
73 | 75 | ||
74 | QTimer *t = new QTimer( this ); | 76 | QTimer *t = new QTimer( this ); |
75 | connect( t, SIGNAL( timeout() ), this, SLOT( updateData() ) ); | 77 | connect( t, SIGNAL( timeout() ), this, SLOT( updateData() ) ); |
76 | t->start( 5000 ); | 78 | t->start( 5000 ); |
77 | 79 | ||
78 | updateData(); | 80 | updateData(); |
79 | 81 | ||
80 | ModulesDtl = new Detail(); | 82 | ModulesDtl = new Detail(); |
81 | QWhatsThis::add( ModulesDtl->detailView, tr( "This area shows detailed information about this module." ) ); | 83 | QWhatsThis::add( ModulesDtl->detailView, tr( "This area shows detailed information about this module." ) ); |
82 | } | 84 | } |
83 | 85 | ||
84 | ModulesInfo::~ModulesInfo() | 86 | ModulesInfo::~ModulesInfo() |
85 | { | 87 | {} |
86 | } | ||
87 | 88 | ||
88 | void ModulesInfo::updateData() | 89 | void ModulesInfo::updateData() |
89 | { | 90 | { |
90 | char modname[64]; | 91 | char modname[64]; |
91 | char usage[200]; | 92 | char usage[200]; |
92 | int modsize, usecount; | 93 | int modsize, usecount; |
93 | 94 | ||
94 | QString selectedmod; | 95 | QString selectedmod; |
95 | QListViewItem *curritem = ModulesView->currentItem(); | 96 | QListViewItem *curritem = ModulesView->currentItem(); |
96 | if ( curritem ) | 97 | if ( curritem ) |
97 | { | 98 | { |
98 | selectedmod = curritem->text( 0 ); | 99 | selectedmod = curritem->text( 0 ); |
99 | } | 100 | } |
100 | 101 | ||
101 | ModulesView->clear(); | 102 | ModulesView->clear(); |
102 | 103 | ||
103 | FILE *procfile = fopen( ( QString ) ( "/proc/modules"), "r"); | 104 | FILE *procfile = fopen( ( QString ) ( "/proc/modules"), "r"); |
104 | 105 | ||
105 | if ( procfile ) | 106 | if ( procfile ) |
106 | { | 107 | { |
107 | QListViewItem *newitem; | 108 | QListViewItem *newitem; |
108 | QListViewItem *selecteditem = 0x0; | 109 | QListViewItem *selecteditem = 0x0; |
109 | while ( true ) { | 110 | while ( true ) |
111 | { | ||
110 | modname[0] = '\0'; | 112 | modname[0] = '\0'; |
111 | usage[0] = '\0'; | 113 | usage[0] = '\0'; |
112 | int success = fscanf( procfile, "%s%d%d%[^\n]", modname, &modsize, &usecount, usage ); | 114 | int success = fscanf( procfile, "%s%d%d%[^\n]", modname, &modsize, &usecount, usage ); |
113 | 115 | ||
114 | if ( success == EOF ) | 116 | if ( success == EOF ) |
115 | break; | 117 | break; |
116 | 118 | ||
117 | QString qmodname = QString( modname ); | 119 | QString qmodname = QString( modname ); |
118 | QString qmodsize = QString::number( modsize ).rightJustify( 6, ' ' ); | 120 | QString qmodsize = QString::number( modsize ).rightJustify( 6, ' ' ); |
119 | QString qusecount = QString::number( usecount ).rightJustify( 2, ' ' ); | 121 | QString qusecount = QString::number( usecount ).rightJustify( 2, ' ' ); |
120 | QString qusage = QString( usage ); | 122 | QString qusage = QString( usage ); |
121 | 123 | ||
122 | newitem = new QListViewItem( ModulesView, qmodname, qmodsize, qusecount, qusage ); | 124 | newitem = new QListViewItem( ModulesView, qmodname, qmodsize, qusecount, qusage ); |
123 | if ( qmodname == selectedmod ) | 125 | if ( qmodname == selectedmod ) |
124 | { | 126 | { |
125 | selecteditem = newitem; | 127 | selecteditem = newitem; |
126 | } | 128 | } |
127 | } | 129 | } |
128 | ModulesView->setCurrentItem( selecteditem ); | 130 | ModulesView->setCurrentItem( selecteditem ); |
129 | 131 | ||
130 | fclose( procfile ); | 132 | fclose( procfile ); |
131 | } | 133 | } |
132 | } | 134 | } |
133 | 135 | ||
@@ -162,27 +164,27 @@ void ModulesInfo::viewModules( QListViewItem *modules ) | |||
162 | QString modname = modules->text( 0 ); | 164 | QString modname = modules->text( 0 ); |
163 | QString capstr = "Module: "; | 165 | QString capstr = "Module: "; |
164 | capstr.append( modname ); | 166 | capstr.append( modname ); |
165 | ModulesDtl->setCaption( capstr ); | 167 | ModulesDtl->setCaption( capstr ); |
166 | QString command = "/sbin/modinfo "; | 168 | QString command = "/sbin/modinfo "; |
167 | command.append( modname ); | 169 | command.append( modname ); |
168 | FILE* modinfo = popen( command, "r" ); | 170 | FILE* modinfo = popen( command, "r" ); |
169 | 171 | ||
170 | if ( modinfo ) | 172 | if ( modinfo ) |
171 | { | 173 | { |
172 | char line[200]; | 174 | char line[200]; |
173 | ModulesDtl->detailView->setText( " Details:\n------------\n" ); | 175 | ModulesDtl->detailView->setText( " Details:\n------------\n" ); |
174 | 176 | ||
175 | while( true ) | 177 | while( true ) |
176 | { | 178 | { |
177 | int success = fscanf( modinfo, "%[^\n]\n", line ); | 179 | int success = fscanf( modinfo, "%[^\n]\n", line ); |
178 | if ( success == EOF ) | 180 | if ( success == EOF ) |
179 | break; | 181 | break; |
180 | ModulesDtl->detailView->append( line ); | 182 | ModulesDtl->detailView->append( line ); |
181 | } | 183 | } |
182 | 184 | ||
183 | pclose( modinfo ); | 185 | pclose( modinfo ); |
184 | } | 186 | } |
185 | 187 | ||
186 | ModulesDtl->showMaximized(); | 188 | QPEApplication::showWidget( ModulesDtl ); |
187 | } | 189 | } |
188 | 190 | ||
diff --git a/noncore/settings/sysinfo/processinfo.cpp b/noncore/settings/sysinfo/processinfo.cpp index af0fe26..2a90b0f 100644 --- a/noncore/settings/sysinfo/processinfo.cpp +++ b/noncore/settings/sysinfo/processinfo.cpp | |||
@@ -1,57 +1,60 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** ProcessInfo | 2 | ** ProcessInfo |
3 | ** | 3 | ** |
4 | ** Display process information | 4 | ** Display process information |
5 | ** | 5 | ** |
6 | ** Copyright (C) 2002, Dan Williams | 6 | ** Copyright (C) 2002, Dan Williams |
7 | ** williamsdr@acm.org | 7 | ** williamsdr@acm.org |
8 | ** http://draknor.net | 8 | ** http://draknor.net |
9 | ** | 9 | ** |
10 | ** This file may be distributed and/or modified under the terms of the | 10 | ** This file may be distributed and/or modified under the terms of the |
11 | ** GNU General Public License version 2 as published by the Free Software | 11 | ** GNU General Public License version 2 as published by the Free Software |
12 | ** Foundation and appearing in the file LICENSE.GPL included in the | 12 | ** Foundation and appearing in the file LICENSE.GPL included in the |
13 | ** packaging of this file. | 13 | ** packaging of this file. |
14 | ** | 14 | ** |
15 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 15 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
16 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 16 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
17 | ** | 17 | ** |
18 | **********************************************************************/ | 18 | **********************************************************************/ |
19 | 19 | ||
20 | #include "processinfo.h" | ||
21 | #include "detail.h" | ||
22 | |||
23 | /* OPIE */ | ||
20 | #include <qpe/qpeapplication.h> | 24 | #include <qpe/qpeapplication.h> |
21 | 25 | ||
26 | /* QT */ | ||
22 | #include <qdir.h> | 27 | #include <qdir.h> |
23 | #include <qlayout.h> | 28 | #include <qlayout.h> |
24 | #include <qmessagebox.h> | 29 | #include <qmessagebox.h> |
25 | #include <qtimer.h> | 30 | #include <qtimer.h> |
26 | #include <qwhatsthis.h> | 31 | #include <qwhatsthis.h> |
27 | 32 | ||
33 | /* STD */ | ||
28 | #include <sys/types.h> | 34 | #include <sys/types.h> |
29 | #include <signal.h> | 35 | #include <signal.h> |
30 | 36 | ||
31 | #include "processinfo.h" | ||
32 | #include "detail.h" | ||
33 | |||
34 | ProcessInfo::ProcessInfo( QWidget* parent, const char* name, WFlags fl ) | 37 | ProcessInfo::ProcessInfo( QWidget* parent, const char* name, WFlags fl ) |
35 | : QWidget( parent, name, fl ) | 38 | : QWidget( parent, name, fl ) |
36 | { | 39 | { |
37 | QGridLayout *layout = new QGridLayout( this ); | 40 | QGridLayout *layout = new QGridLayout( this ); |
38 | layout->setSpacing( 4 ); | 41 | layout->setSpacing( 4 ); |
39 | layout->setMargin( 4 ); | 42 | layout->setMargin( 4 ); |
40 | 43 | ||
41 | 44 | ||
42 | ProcessView = new QListView( this, "ProcessView" ); | 45 | ProcessView = new QListView( this, "ProcessView" ); |
43 | int colnum = ProcessView->addColumn( tr( "PID" ) ); | 46 | int colnum = ProcessView->addColumn( tr( "PID" ) ); |
44 | ProcessView->setColumnAlignment( colnum, Qt::AlignRight ); | 47 | ProcessView->setColumnAlignment( colnum, Qt::AlignRight ); |
45 | colnum = ProcessView->addColumn( tr( "Command" ),96 ); | 48 | colnum = ProcessView->addColumn( tr( "Command" ),96 ); |
46 | colnum = ProcessView->addColumn( tr( "Status" ) ); | 49 | colnum = ProcessView->addColumn( tr( "Status" ) ); |
47 | colnum = ProcessView->addColumn( tr( "Time" ) ); | 50 | colnum = ProcessView->addColumn( tr( "Time" ) ); |
48 | ProcessView->setColumnAlignment( colnum, Qt::AlignRight ); | 51 | ProcessView->setColumnAlignment( colnum, Qt::AlignRight ); |
49 | ProcessView->setAllColumnsShowFocus( TRUE ); | 52 | ProcessView->setAllColumnsShowFocus( TRUE ); |
50 | QPEApplication::setStylusOperation( ProcessView->viewport(), QPEApplication::RightOnHold ); | 53 | QPEApplication::setStylusOperation( ProcessView->viewport(), QPEApplication::RightOnHold ); |
51 | connect( ProcessView, SIGNAL( rightButtonPressed( QListViewItem *, const QPoint &, int ) ), | 54 | connect( ProcessView, SIGNAL( rightButtonPressed( QListViewItem *, const QPoint &, int ) ), |
52 | this, SLOT( viewProcess( QListViewItem * ) ) ); | 55 | this, SLOT( viewProcess( QListViewItem * ) ) ); |
53 | layout->addMultiCellWidget( ProcessView, 0, 0, 0, 1 ); | 56 | layout->addMultiCellWidget( ProcessView, 0, 0, 0, 1 ); |
54 | QWhatsThis::add( ProcessView, tr( "This is a list of all the processes on this handheld device.\n\nClick and hold on a process to see additional information about the process, or to send a signal to it." ) ); | 57 | QWhatsThis::add( ProcessView, tr( "This is a list of all the processes on this handheld device.\n\nClick and hold on a process to see additional information about the process, or to send a signal to it." ) ); |
55 | 58 | ||
56 | SignalCB = new QComboBox( FALSE, this, "SignalCB" ); | 59 | SignalCB = new QComboBox( FALSE, this, "SignalCB" ); |
57 | SignalCB->insertItem( " 1: SIGHUP" ); | 60 | SignalCB->insertItem( " 1: SIGHUP" ); |
@@ -65,50 +68,49 @@ ProcessInfo::ProcessInfo( QWidget* parent, const char* name, WFlags fl ) | |||
65 | SignalCB->insertItem( "18: SIGCONT" ); | 68 | SignalCB->insertItem( "18: SIGCONT" ); |
66 | SignalCB->insertItem( "19: SIGSTOP" ); | 69 | SignalCB->insertItem( "19: SIGSTOP" ); |
67 | layout->addWidget( SignalCB, 1, 0 ); | 70 | layout->addWidget( SignalCB, 1, 0 ); |
68 | QWhatsThis::add( SignalCB, tr( "Select a signal here and then click the Send button to the right to send to this process." ) ); | 71 | QWhatsThis::add( SignalCB, tr( "Select a signal here and then click the Send button to the right to send to this process." ) ); |
69 | 72 | ||
70 | SendButton = new QPushButton( this, "SendButton" ); | 73 | SendButton = new QPushButton( this, "SendButton" ); |
71 | SendButton->setMinimumSize( QSize( 50, 24 ) ); | 74 | SendButton->setMinimumSize( QSize( 50, 24 ) ); |
72 | SendButton->setMaximumSize( QSize( 50, 24 ) ); | 75 | SendButton->setMaximumSize( QSize( 50, 24 ) ); |
73 | SendButton->setText( tr( "Send" ) ); | 76 | SendButton->setText( tr( "Send" ) ); |
74 | connect( SendButton, SIGNAL( clicked() ), this, SLOT( slotSendClicked() ) ); | 77 | connect( SendButton, SIGNAL( clicked() ), this, SLOT( slotSendClicked() ) ); |
75 | layout->addWidget( SendButton, 1, 1 ); | 78 | layout->addWidget( SendButton, 1, 1 ); |
76 | QWhatsThis::add( SendButton, tr( "Click here to send the selected signal to this process." ) ); | 79 | QWhatsThis::add( SendButton, tr( "Click here to send the selected signal to this process." ) ); |
77 | 80 | ||
78 | QTimer *t = new QTimer( this ); | 81 | QTimer *t = new QTimer( this ); |
79 | connect( t, SIGNAL( timeout() ), this, SLOT( updateData() ) ); | 82 | connect( t, SIGNAL( timeout() ), this, SLOT( updateData() ) ); |
80 | t->start( 5000 ); | 83 | t->start( 5000 ); |
81 | 84 | ||
82 | updateData(); | 85 | updateData(); |
83 | 86 | ||
84 | ProcessDtl = new Detail(); | 87 | ProcessDtl = new Detail(); |
85 | QWhatsThis::add( ProcessDtl->detailView, tr( "This area shows detailed information about this process." ) ); | 88 | QWhatsThis::add( ProcessDtl->detailView, tr( "This area shows detailed information about this process." ) ); |
86 | } | 89 | } |
87 | 90 | ||
88 | ProcessInfo::~ProcessInfo() | 91 | ProcessInfo::~ProcessInfo() |
89 | { | 92 | {} |
90 | } | ||
91 | 93 | ||
92 | void ProcessInfo::updateData() | 94 | void ProcessInfo::updateData() |
93 | { | 95 | { |
94 | int pid, ppid, pgrp, session, tty, tpgid, utime, stime, cutime, cstime, counter, priority, starttime, | 96 | int pid, ppid, pgrp, session, tty, tpgid, utime, stime, cutime, cstime, counter, priority, starttime, |
95 | signal, blocked, sigignore, sigcatch; | 97 | signal, blocked, sigignore, sigcatch; |
96 | uint flags, minflt, cminflt, majflt, cmajflt, timeout, itrealvalue, vsize, rss, rlim, startcode, | 98 | uint flags, minflt, cminflt, majflt, cmajflt, timeout, itrealvalue, vsize, rss, rlim, startcode, |
97 | endcode, startstack, kstkesp, kstkeip, wchan; | 99 | endcode, startstack, kstkesp, kstkeip, wchan; |
98 | char state; | 100 | char state; |
99 | char comm[64]; | 101 | char comm[64]; |
100 | 102 | ||
101 | QString selectedpid; | 103 | QString selectedpid; |
102 | QListViewItem *curritem = ProcessView->currentItem(); | 104 | QListViewItem *curritem = ProcessView->currentItem(); |
103 | if ( curritem ) | 105 | if ( curritem ) |
104 | { | 106 | { |
105 | selectedpid = curritem->text( 0 ); | 107 | selectedpid = curritem->text( 0 ); |
106 | } | 108 | } |
107 | 109 | ||
108 | ProcessView->clear(); | 110 | ProcessView->clear(); |
109 | 111 | ||
110 | QListViewItem *newitem; | 112 | QListViewItem *newitem; |
111 | QListViewItem *selecteditem = 0x0; | 113 | QListViewItem *selecteditem = 0x0; |
112 | QDir *procdir = new QDir("/proc", 0, QDir::Name, QDir::Dirs); | 114 | QDir *procdir = new QDir("/proc", 0, QDir::Name, QDir::Dirs); |
113 | QFileInfoList *proclist = new QFileInfoList(*(procdir->entryInfoList())); | 115 | QFileInfoList *proclist = new QFileInfoList(*(procdir->entryInfoList())); |
114 | if ( proclist ) | 116 | if ( proclist ) |
@@ -175,26 +177,26 @@ void ProcessInfo::slotSendClicked() | |||
175 | int sigid = sigstr.toUInt(); | 177 | int sigid = sigstr.toUInt(); |
176 | kill( currprocess->text( 0 ).stripWhiteSpace().toUInt(), sigid ); | 178 | kill( currprocess->text( 0 ).stripWhiteSpace().toUInt(), sigid ); |
177 | } | 179 | } |
178 | } | 180 | } |
179 | 181 | ||
180 | } | 182 | } |
181 | 183 | ||
182 | void ProcessInfo::viewProcess( QListViewItem *process ) | 184 | void ProcessInfo::viewProcess( QListViewItem *process ) |
183 | { | 185 | { |
184 | QString pid= process->text( 0 ).stripWhiteSpace(); | 186 | QString pid= process->text( 0 ).stripWhiteSpace(); |
185 | QString command = process->text( 1 ); | 187 | QString command = process->text( 1 ); |
186 | ProcessDtl->setCaption( pid + " - " + command ); | 188 | ProcessDtl->setCaption( pid + " - " + command ); |
187 | FILE *statfile = fopen( ( QString ) ( "/proc/" + pid + "/status"), "r"); | 189 | FILE *statfile = fopen( ( QString ) ( "/proc/" + pid + "/status"), "r"); |
188 | if ( statfile ) | 190 | if ( statfile ) |
189 | { | 191 | { |
190 | char line[81]; | 192 | char line[81]; |
191 | fgets( line, 81, statfile ); | 193 | fgets( line, 81, statfile ); |
192 | ProcessDtl->detailView->setText( line ); | 194 | ProcessDtl->detailView->setText( line ); |
193 | while ( fgets( line, 81, statfile ) ) | 195 | while ( fgets( line, 81, statfile ) ) |
194 | { | 196 | { |
195 | ProcessDtl->detailView->append( line ); | 197 | ProcessDtl->detailView->append( line ); |
196 | } | 198 | } |
197 | fclose( statfile ); | 199 | fclose( statfile ); |
198 | } | 200 | } |
199 | ProcessDtl->showMaximized(); | 201 | QPEApplication::showWidget( ProcessDtl ); |
200 | } | 202 | } |
diff --git a/noncore/settings/usermanager/userdialog.cpp b/noncore/settings/usermanager/userdialog.cpp index d87a005..08de352 100644 --- a/noncore/settings/usermanager/userdialog.cpp +++ b/noncore/settings/usermanager/userdialog.cpp | |||
@@ -1,438 +1,489 @@ | |||
1 | /*************************************************************************** | 1 | /*************************************************************************** |
2 | * * | 2 | * * |
3 | * This program is free software; you can redistribute it and/or modify * | 3 | * This program is free software; you can redistribute it and/or modify * |
4 | * it under the terms of the GNU General Public License as published by * | 4 | * it under the terms of the GNU General Public License as published by * |
5 | * the Free Software Foundation; either version 2 of the License, or * | 5 | * the Free Software Foundation; either version 2 of the License, or * |
6 | * (at your option) any later version. * | 6 | * (at your option) any later version. * |
7 | * * | 7 | * * |
8 | ***************************************************************************/ | 8 | ***************************************************************************/ |
9 | 9 | ||
10 | #include "userdialog.h" | 10 | #include "userdialog.h" |
11 | #include "passwd.h" | ||
12 | |||
13 | /* OPIE */ | ||
14 | #include <opie/odevice.h> | ||
15 | #include <qpe/qpeapplication.h> | ||
11 | 16 | ||
17 | /* QT */ | ||
12 | #include <qlayout.h> | 18 | #include <qlayout.h> |
13 | #include <qlabel.h> | 19 | #include <qlabel.h> |
14 | #include <qmessagebox.h> | 20 | #include <qmessagebox.h> |
15 | #include <qfile.h> | 21 | #include <qfile.h> |
16 | 22 | ||
23 | /* STD */ | ||
17 | #include <sys/types.h> | 24 | #include <sys/types.h> |
18 | #include <sys/wait.h> | 25 | #include <sys/wait.h> |
19 | #include <unistd.h> | 26 | #include <unistd.h> |
20 | #include <signal.h> | 27 | #include <signal.h> |
21 | 28 | ||
22 | #include "passwd.h" | ||
23 | 29 | ||
24 | #include <opie/odevice.h> | ||
25 | using namespace Opie; | 30 | using namespace Opie; |
26 | 31 | ||
27 | 32 | ||
28 | /** | 33 | /** |
29 | * UserDialog constructor. Setup the dialog, fill the groupComboBox & groupsListView with all groups. | 34 | * UserDialog constructor. Setup the dialog, fill the groupComboBox & groupsListView with all groups. |
30 | * | 35 | * |
31 | */ | 36 | */ |
32 | UserDialog::UserDialog(int viewmode, QWidget* parent, const char* name, bool modal, WFlags fl) : QDialog(parent, name, modal, fl) { | 37 | UserDialog::UserDialog(int viewmode, QWidget* parent, const char* name, bool modal, WFlags fl) : QDialog(parent, name, modal, fl) |
38 | { | ||
33 | vm=viewmode; | 39 | vm=viewmode; |
34 | QVBoxLayout *layout = new QVBoxLayout(this); | 40 | QVBoxLayout *layout = new QVBoxLayout(this); |
35 | myTabWidget=new QTabWidget(this,"User Tab Widget"); | 41 | myTabWidget=new QTabWidget(this,"User Tab Widget"); |
36 | layout->addWidget(myTabWidget); | 42 | layout->addWidget(myTabWidget); |
37 | setupTab1(); | 43 | setupTab1(); |
38 | setupTab2(); | 44 | setupTab2(); |
39 | 45 | ||
40 | accounts->groupStringList.sort(); | 46 | accounts->groupStringList.sort(); |
41 | // And also fill the listview & the combobox with all available groups. | 47 | // And also fill the listview & the combobox with all available groups. |
42 | for( QStringList::Iterator it = accounts->groupStringList.begin(); it!=accounts->groupStringList.end(); ++it) { | 48 | for( QStringList::Iterator it = accounts->groupStringList.begin(); it!=accounts->groupStringList.end(); ++it) |
49 | { | ||
43 | accounts->splitGroupEntry(*it); | 50 | accounts->splitGroupEntry(*it); |
44 | if(accounts->gr_name.find(QRegExp("^#"),0)) {// Skip commented lines. | 51 | if(accounts->gr_name.find(QRegExp("^#"),0)) |
52 | {// Skip commented lines. | ||
45 | new QCheckListItem(groupsListView,accounts->gr_name,QCheckListItem::CheckBox); | 53 | new QCheckListItem(groupsListView,accounts->gr_name,QCheckListItem::CheckBox); |
46 | groupComboBox->insertItem(accounts->gr_name); | 54 | groupComboBox->insertItem(accounts->gr_name); |
47 | } | 55 | } |
48 | } | 56 | } |
49 | showMaximized(); | 57 | QPEApplication::showDialog( this ); |
50 | } | 58 | } |
51 | 59 | ||
52 | /** | 60 | /** |
53 | * Empty destructor. | 61 | * Empty destructor. |
54 | * | 62 | * |
55 | */ | 63 | */ |
56 | UserDialog::~UserDialog() { | 64 | UserDialog::~UserDialog() |
57 | } | 65 | {} |
58 | 66 | ||
59 | /** | 67 | /** |
60 | * Creates the first tab, all userinfo is here. | 68 | * Creates the first tab, all userinfo is here. |
61 | * | 69 | * |
62 | */ | 70 | */ |
63 | void UserDialog::setupTab1() { | 71 | void UserDialog::setupTab1() |
72 | { | ||
64 | QPixmap mypixmap; | 73 | QPixmap mypixmap; |
65 | QWidget *tabpage = new QWidget(myTabWidget,"page1"); | 74 | QWidget *tabpage = new QWidget(myTabWidget,"page1"); |
66 | QVBoxLayout *layout = new QVBoxLayout(tabpage); | 75 | QVBoxLayout *layout = new QVBoxLayout(tabpage); |
67 | layout->setMargin(5); | 76 | layout->setMargin(5); |
68 | 77 | ||
69 | // Picture | 78 | // Picture |
70 | picturePushButton = new QPushButton(tabpage,"Label"); | 79 | picturePushButton = new QPushButton(tabpage,"Label"); |
71 | picturePushButton->setMinimumSize(48,48); | 80 | picturePushButton->setMinimumSize(48,48); |
72 | picturePushButton->setMaximumSize(48,48); | 81 | picturePushButton->setMaximumSize(48,48); |
73 | picturePushButton->setPixmap(Resource::loadPixmap("usermanager/usericon"));// Load default usericon. | 82 | picturePushButton->setPixmap(Resource::loadPixmap("usermanager/usericon"));// Load default usericon. |
74 | connect(picturePushButton,SIGNAL(clicked()),this,SLOT(clickedPicture()));// Clicking the picture should invoke pictureselector. | 83 | connect(picturePushButton,SIGNAL(clicked()),this,SLOT(clickedPicture()));// Clicking the picture should invoke pictureselector. |
75 | 84 | ||
76 | // Login | 85 | // Login |
77 | QLabel *loginLabel=new QLabel(tabpage,"Login: "); | 86 | QLabel *loginLabel=new QLabel(tabpage,"Login: "); |
78 | loginLabel->setText("Login: "); | 87 | loginLabel->setText("Login: "); |
79 | loginLineEdit=new QLineEdit(tabpage,"Login: "); | 88 | loginLineEdit=new QLineEdit(tabpage,"Login: "); |
80 | 89 | ||
81 | // UID | 90 | // UID |
82 | QLabel *uidLabel=new QLabel(tabpage,"uid: "); | 91 | QLabel *uidLabel=new QLabel(tabpage,"uid: "); |
83 | uidLabel->setText("UserID: "); | 92 | uidLabel->setText("UserID: "); |
84 | uidLineEdit=new QLineEdit(tabpage,"uid: "); | 93 | uidLineEdit=new QLineEdit(tabpage,"uid: "); |
85 | uidLineEdit->setEnabled(false); | 94 | uidLineEdit->setEnabled(false); |
86 | 95 | ||
87 | // Username (gecos) | 96 | // Username (gecos) |
88 | QLabel *gecosLabel=new QLabel(tabpage,"gecos"); | 97 | QLabel *gecosLabel=new QLabel(tabpage,"gecos"); |
89 | gecosLabel->setText("Username: "); | 98 | gecosLabel->setText("Username: "); |
90 | gecosLineEdit=new QLineEdit(tabpage,"gecos"); | 99 | gecosLineEdit=new QLineEdit(tabpage,"gecos"); |
91 | 100 | ||
92 | // Password | 101 | // Password |
93 | QLabel *passwordLabel=new QLabel(tabpage,"password"); | 102 | QLabel *passwordLabel=new QLabel(tabpage,"password"); |
94 | passwordLabel->setText("Password: "); | 103 | passwordLabel->setText("Password: "); |
95 | passwordLineEdit=new QLineEdit(tabpage,"password"); | 104 | passwordLineEdit=new QLineEdit(tabpage,"password"); |
96 | passwordLineEdit->setEchoMode(QLineEdit::Password); | 105 | passwordLineEdit->setEchoMode(QLineEdit::Password); |
97 | 106 | ||
98 | // Shell | 107 | // Shell |
99 | QLabel *shellLabel=new QLabel(tabpage,"shell"); | 108 | QLabel *shellLabel=new QLabel(tabpage,"shell"); |
100 | shellLabel->setText("Shell: "); | 109 | shellLabel->setText("Shell: "); |
101 | shellComboBox=new QComboBox(tabpage,"shell"); | 110 | shellComboBox=new QComboBox(tabpage,"shell"); |
102 | shellComboBox->setEditable(true); | 111 | shellComboBox->setEditable(true); |
103 | shellComboBox->insertItem("/bin/sh"); | 112 | shellComboBox->insertItem("/bin/sh"); |
104 | shellComboBox->insertItem("/bin/ash"); | 113 | shellComboBox->insertItem("/bin/ash"); |
105 | shellComboBox->insertItem("/bin/false"); | 114 | shellComboBox->insertItem("/bin/false"); |
106 | 115 | ||
107 | // Primary Group | 116 | // Primary Group |
108 | QLabel *groupLabel=new QLabel(tabpage,"group"); | 117 | QLabel *groupLabel=new QLabel(tabpage,"group"); |
109 | groupLabel->setText("Primary group: "); | 118 | groupLabel->setText("Primary group: "); |
110 | groupComboBox=new QComboBox(tabpage,"PrimaryGroup"); | 119 | groupComboBox=new QComboBox(tabpage,"PrimaryGroup"); |
111 | 120 | ||
112 | if(vm==VIEWMODE_NEW) { | 121 | if(vm==VIEWMODE_NEW) |
122 | { | ||
113 | // Copy /etc/skel | 123 | // Copy /etc/skel |
114 | skelLabel=new QLabel(tabpage,"skel"); | 124 | skelLabel=new QLabel(tabpage,"skel"); |
115 | skelLabel->setText("Copy /etc/skel: "); | 125 | skelLabel->setText("Copy /etc/skel: "); |
116 | skelCheckBox=new QCheckBox(tabpage); | 126 | skelCheckBox=new QCheckBox(tabpage); |
117 | skelCheckBox->setChecked(true); | 127 | skelCheckBox->setChecked(true); |
118 | } | 128 | } |
119 | 129 | ||
120 | // Widget layout | 130 | // Widget layout |
121 | QHBoxLayout *hlayout=new QHBoxLayout(-1,"hlayout"); | 131 | QHBoxLayout *hlayout=new QHBoxLayout(-1,"hlayout"); |
122 | layout->addWidget(picturePushButton); | 132 | layout->addWidget(picturePushButton); |
123 | layout->addSpacing(5); | 133 | layout->addSpacing(5); |
124 | layout->addLayout(hlayout); | 134 | layout->addLayout(hlayout); |
125 | QVBoxLayout *vlayout1=new QVBoxLayout(-1,"vlayout1"); | 135 | QVBoxLayout *vlayout1=new QVBoxLayout(-1,"vlayout1"); |
126 | QVBoxLayout *vlayout2=new QVBoxLayout(-1,"vlayout2"); | 136 | QVBoxLayout *vlayout2=new QVBoxLayout(-1,"vlayout2"); |
127 | // First column, labels | 137 | // First column, labels |
128 | vlayout1->addWidget(loginLabel); | 138 | vlayout1->addWidget(loginLabel); |
129 | vlayout1->addSpacing(5); | 139 | vlayout1->addSpacing(5); |
130 | vlayout1->addWidget(uidLabel); | 140 | vlayout1->addWidget(uidLabel); |
131 | vlayout1->addSpacing(5); | 141 | vlayout1->addSpacing(5); |
132 | vlayout1->addWidget(gecosLabel); | 142 | vlayout1->addWidget(gecosLabel); |
133 | vlayout1->addSpacing(5); | 143 | vlayout1->addSpacing(5); |
134 | vlayout1->addWidget(passwordLabel); | 144 | vlayout1->addWidget(passwordLabel); |
135 | vlayout1->addSpacing(5); | 145 | vlayout1->addSpacing(5); |
136 | vlayout1->addWidget(shellLabel); | 146 | vlayout1->addWidget(shellLabel); |
137 | vlayout1->addSpacing(5); | 147 | vlayout1->addSpacing(5); |
138 | vlayout1->addWidget(groupLabel); | 148 | vlayout1->addWidget(groupLabel); |
139 | if(vm==VIEWMODE_NEW) { | 149 | if(vm==VIEWMODE_NEW) |
150 | { | ||
140 | vlayout1->addSpacing(5); | 151 | vlayout1->addSpacing(5); |
141 | vlayout1->addWidget(skelLabel); | 152 | vlayout1->addWidget(skelLabel); |
142 | } | 153 | } |
143 | // Second column, data | 154 | // Second column, data |
144 | vlayout2->addWidget(loginLineEdit); | 155 | vlayout2->addWidget(loginLineEdit); |
145 | vlayout2->addSpacing(5); | 156 | vlayout2->addSpacing(5); |
146 | vlayout2->addWidget(uidLineEdit); | 157 | vlayout2->addWidget(uidLineEdit); |
147 | vlayout2->addSpacing(5); | 158 | vlayout2->addSpacing(5); |
148 | vlayout2->addWidget(gecosLineEdit); | 159 | vlayout2->addWidget(gecosLineEdit); |
149 | vlayout2->addSpacing(5); | 160 | vlayout2->addSpacing(5); |
150 | vlayout2->addWidget(passwordLineEdit); | 161 | vlayout2->addWidget(passwordLineEdit); |
151 | vlayout2->addSpacing(5); | 162 | vlayout2->addSpacing(5); |
152 | vlayout2->addWidget(shellComboBox); | 163 | vlayout2->addWidget(shellComboBox); |
153 | vlayout2->addSpacing(5); | 164 | vlayout2->addSpacing(5); |
154 | vlayout2->addWidget(groupComboBox); | 165 | vlayout2->addWidget(groupComboBox); |
155 | if(vm==VIEWMODE_NEW) { | 166 | if(vm==VIEWMODE_NEW) |
167 | { | ||
156 | vlayout2->addSpacing(5); | 168 | vlayout2->addSpacing(5); |
157 | vlayout2->addWidget(skelCheckBox); | 169 | vlayout2->addWidget(skelCheckBox); |
158 | } | 170 | } |
159 | hlayout->addLayout(vlayout1); | 171 | hlayout->addLayout(vlayout1); |
160 | hlayout->addLayout(vlayout2); | 172 | hlayout->addLayout(vlayout2); |
161 | 173 | ||
162 | myTabWidget->addTab(tabpage,"User Info"); | 174 | myTabWidget->addTab(tabpage,"User Info"); |
163 | } | 175 | } |
164 | 176 | ||
165 | /** | 177 | /** |
166 | * Creates the second tab containing additional groups for the user. | 178 | * Creates the second tab containing additional groups for the user. |
167 | * | 179 | * |
168 | */ | 180 | */ |
169 | void UserDialog::setupTab2() { | 181 | void UserDialog::setupTab2() |
182 | { | ||
170 | QWidget *tabpage = new QWidget(myTabWidget,"page2"); | 183 | QWidget *tabpage = new QWidget(myTabWidget,"page2"); |
171 | QVBoxLayout *layout = new QVBoxLayout(tabpage); | 184 | QVBoxLayout *layout = new QVBoxLayout(tabpage); |
172 | layout->setMargin(5); | 185 | layout->setMargin(5); |
173 | 186 | ||
174 | // Additional groups | 187 | // Additional groups |
175 | groupsListView=new QListView(tabpage,"groups"); | 188 | groupsListView=new QListView(tabpage,"groups"); |
176 | groupsListView->addColumn("Additional groups"); | 189 | groupsListView->addColumn("Additional groups"); |
177 | groupsListView->setColumnWidthMode(0,QListView::Maximum); | 190 | groupsListView->setColumnWidthMode(0,QListView::Maximum); |
178 | groupsListView->setMultiSelection(false); | 191 | groupsListView->setMultiSelection(false); |
179 | groupsListView->setAllColumnsShowFocus(false); | 192 | groupsListView->setAllColumnsShowFocus(false); |
180 | 193 | ||
181 | layout->addSpacing(5); | 194 | layout->addSpacing(5); |
182 | // Grouplist | 195 | // Grouplist |
183 | layout->addWidget(groupsListView); | 196 | layout->addWidget(groupsListView); |
184 | 197 | ||
185 | myTabWidget->addTab(tabpage,"User Groups"); | 198 | myTabWidget->addTab(tabpage,"User Groups"); |
186 | } | 199 | } |
187 | 200 | ||
188 | /** | 201 | /** |
189 | * Static function that creates the userinfo dialog. | 202 | * Static function that creates the userinfo dialog. |
190 | * The user will be prompted to add a user. | 203 | * The user will be prompted to add a user. |
191 | * | 204 | * |
192 | * @param uid This is a suggested available UID. | 205 | * @param uid This is a suggested available UID. |
193 | * @param gid This is a suggested available GID. | 206 | * @param gid This is a suggested available GID. |
194 | * | 207 | * |
195 | * @return <code>true</code> if the user was successfully added, otherwise <code>false</code>. | 208 | * @return <code>true</code> if the user was successfully added, otherwise <code>false</code>. |
196 | * | 209 | * |
197 | */ | 210 | */ |
198 | bool UserDialog::addUser(int uid, int gid) { | 211 | bool UserDialog::addUser(int uid, int gid) |
212 | { | ||
199 | QCheckListItem *temp; | 213 | QCheckListItem *temp; |
200 | QFile ozTest; | 214 | QFile ozTest; |
201 | int oz=false; | 215 | int oz=false; |
202 | if(ODevice::inst()->system()==System_OpenZaurus) oz=true; | 216 | if(ODevice::inst()->system()==System_OpenZaurus) oz=true; |
203 | // viewmode is a workaround for a bug in qte-2.3.4 that gives bus error on manipulating adduserDialog's widgets here. | 217 | // viewmode is a workaround for a bug in qte-2.3.4 that gives bus error on manipulating adduserDialog's widgets here. |
204 | UserDialog *adduserDialog=new UserDialog(VIEWMODE_NEW); | 218 | UserDialog *adduserDialog=new UserDialog(VIEWMODE_NEW); |
205 | adduserDialog->setCaption(tr("Add User")); | 219 | adduserDialog->setCaption(tr("Add User")); |
206 | adduserDialog->userID=uid;// Set next available UID as default uid. | 220 | adduserDialog->userID=uid;// Set next available UID as default uid. |
207 | adduserDialog->groupID=gid;// Set next available GID as default gid. | 221 | adduserDialog->groupID=gid;// Set next available GID as default gid. |
208 | // Insert default group into groupComboBox | 222 | // Insert default group into groupComboBox |
209 | adduserDialog->groupComboBox->insertItem("<create new group>",0); | 223 | adduserDialog->groupComboBox->insertItem("<create new group>",0); |
210 | adduserDialog->uidLineEdit->setText(QString::number(uid)); | 224 | adduserDialog->uidLineEdit->setText(QString::number(uid)); |
211 | // If we're running on OZ, add new users to some default groups. | 225 | // If we're running on OZ, add new users to some default groups. |
212 | if(oz) { | 226 | if(oz) |
227 | { | ||
213 | QListViewItemIterator iter( adduserDialog->groupsListView ); | 228 | QListViewItemIterator iter( adduserDialog->groupsListView ); |
214 | for ( ; iter.current(); ++iter ) { | 229 | for ( ; iter.current(); ++iter ) |
230 | { | ||
215 | temp=(QCheckListItem*)iter.current(); | 231 | temp=(QCheckListItem*)iter.current(); |
216 | if (temp->text()=="video") temp->setOn(true); | 232 | if (temp->text()=="video") temp->setOn(true); |
217 | if (temp->text()=="audio") temp->setOn(true); | 233 | if (temp->text()=="audio") temp->setOn(true); |
218 | if (temp->text()=="time") temp->setOn(true); | 234 | if (temp->text()=="time") temp->setOn(true); |
219 | if (temp->text()=="power") temp->setOn(true); | 235 | if (temp->text()=="power") temp->setOn(true); |
220 | if (temp->text()=="input") temp->setOn(true); | 236 | if (temp->text()=="input") temp->setOn(true); |
221 | if (temp->text()=="sharp") temp->setOn(true); | 237 | if (temp->text()=="sharp") temp->setOn(true); |
222 | if (temp->text()=="tty") temp->setOn(true); | 238 | if (temp->text()=="tty") temp->setOn(true); |
223 | } | 239 | } |
224 | } | 240 | } |
225 | // Show the dialog! | 241 | // Show the dialog! |
226 | if(!(adduserDialog->exec())) return false; | 242 | if(!(adduserDialog->exec())) return false; |
227 | if((adduserDialog->groupComboBox->currentItem()!=0)) { | 243 | if((adduserDialog->groupComboBox->currentItem()!=0)) |
244 | { | ||
228 | accounts->findGroup(adduserDialog->groupComboBox->currentText()); | 245 | accounts->findGroup(adduserDialog->groupComboBox->currentText()); |
229 | adduserDialog->groupID=accounts->gr_gid; | 246 | adduserDialog->groupID=accounts->gr_gid; |
230 | qWarning(QString::number(accounts->gr_gid)); | 247 | qWarning(QString::number(accounts->gr_gid)); |
231 | } | 248 | } |
232 | if(!(accounts->addUser(adduserDialog->loginLineEdit->text(), adduserDialog->passwordLineEdit->text(), | 249 | if(!(accounts->addUser(adduserDialog->loginLineEdit->text(), adduserDialog->passwordLineEdit->text(), |
233 | adduserDialog->uidLineEdit->text().toInt(), adduserDialog->groupID, adduserDialog->gecosLineEdit->text(), | 250 | adduserDialog->uidLineEdit->text().toInt(), adduserDialog->groupID, adduserDialog->gecosLineEdit->text(), |
234 | QString("/home/")+adduserDialog->loginLineEdit->text() , adduserDialog->shellComboBox->currentText()))) { | 251 | QString("/home/")+adduserDialog->loginLineEdit->text() , adduserDialog->shellComboBox->currentText()))) |
252 | { | ||
235 | QMessageBox::information(0,"Ooops!","Something went wrong!\nUnable to add user."); | 253 | QMessageBox::information(0,"Ooops!","Something went wrong!\nUnable to add user."); |
236 | return false; | 254 | return false; |
237 | } | 255 | } |
238 | 256 | ||
239 | // Add User to additional groups. | 257 | // Add User to additional groups. |
240 | QListViewItemIterator it( adduserDialog->groupsListView ); | 258 | QListViewItemIterator it( adduserDialog->groupsListView ); |
241 | for ( ; it.current(); ++it ) { | 259 | for ( ; it.current(); ++it ) |
260 | { | ||
242 | temp=(QCheckListItem*)it.current(); | 261 | temp=(QCheckListItem*)it.current(); |
243 | if (temp->isOn() ) | 262 | if (temp->isOn() ) |
244 | accounts->addGroupMember(it.current()->text(0),adduserDialog->loginLineEdit->text()); | 263 | accounts->addGroupMember(it.current()->text(0),adduserDialog->loginLineEdit->text()); |
245 | } | 264 | } |
246 | // Copy image to pics/users/ | 265 | // Copy image to pics/users/ |
247 | if(!(adduserDialog->userImage.isNull())) { | 266 | if(!(adduserDialog->userImage.isNull())) |
267 | { | ||
248 | QDir d; | 268 | QDir d; |
249 | if(!(d.exists("/opt/QtPalmtop/pics/users"))) { | 269 | if(!(d.exists("/opt/QtPalmtop/pics/users"))) |
270 | { | ||
250 | d.mkdir("/opt/QtPalmtop/pics/users"); | 271 | d.mkdir("/opt/QtPalmtop/pics/users"); |
251 | } | 272 | } |
252 | QString filename="/opt/QtPalmtop/pics/users/"+accounts->pw_name+".png"; | 273 | QString filename="/opt/QtPalmtop/pics/users/"+accounts->pw_name+".png"; |
253 | // adduserDialog->userImage=adduserDialog->userImage.smoothScale(48,48); | 274 | // adduserDialog->userImage=adduserDialog->userImage.smoothScale(48,48); |
254 | adduserDialog->userImage.save(filename,"PNG"); | 275 | adduserDialog->userImage.save(filename,"PNG"); |
255 | } | 276 | } |
256 | 277 | ||
257 | // Should we copy the skeleton homedirectory /etc/skel to the user's homedirectory? | 278 | // Should we copy the skeleton homedirectory /etc/skel to the user's homedirectory? |
258 | accounts->findUser(adduserDialog->loginLineEdit->text()); | 279 | accounts->findUser(adduserDialog->loginLineEdit->text()); |
259 | if(adduserDialog->skelCheckBox->isChecked()) { | 280 | if(adduserDialog->skelCheckBox->isChecked()) |
281 | { | ||
260 | QString command_cp; | 282 | QString command_cp; |
261 | QString command_chown; | 283 | QString command_chown; |
262 | command_cp.sprintf("cp -a /etc/skel/* %s/",accounts->pw_dir.latin1()); | 284 | command_cp.sprintf("cp -a /etc/skel/* %s/",accounts->pw_dir.latin1()); |
263 | system(command_cp); | 285 | system(command_cp); |
264 | 286 | ||
265 | command_cp.sprintf("cp -a /etc/skel/.[!.]* %s/",accounts->pw_dir.latin1());// Bug in busybox, ".*" includes parent directory, does this work as a workaround? | 287 | command_cp.sprintf("cp -a /etc/skel/.[!.]* %s/",accounts->pw_dir.latin1());// Bug in busybox, ".*" includes parent directory, does this work as a workaround? |
266 | system(command_cp); | 288 | system(command_cp); |
267 | 289 | ||
268 | command_chown.sprintf("chown -R %d:%d %s",accounts->pw_uid,accounts->pw_gid,accounts->pw_dir.latin1()); | 290 | command_chown.sprintf("chown -R %d:%d %s",accounts->pw_uid,accounts->pw_gid,accounts->pw_dir.latin1()); |
269 | system(command_chown); | 291 | system(command_chown); |
270 | } | 292 | } |
271 | 293 | ||
272 | return true; | 294 | return true; |
273 | } | 295 | } |
274 | 296 | ||
275 | /** | 297 | /** |
276 | * Deletes the user account. | 298 | * Deletes the user account. |
277 | * | 299 | * |
278 | * @param username User to be deleted. | 300 | * @param username User to be deleted. |
279 | * | 301 | * |
280 | * @return <code>true</code> if the user was successfully deleted, otherwise <code>false</code>. | 302 | * @return <code>true</code> if the user was successfully deleted, otherwise <code>false</code>. |
281 | * | 303 | * |
282 | */ | 304 | */ |
283 | bool UserDialog::delUser(const char *username) { | 305 | bool UserDialog::delUser(const char *username) |
284 | if((accounts->findUser(username))) {// Does that user exist? | 306 | { |
285 | if(!(accounts->delUser(username))) {// Delete the user. | 307 | if((accounts->findUser(username))) |
308 | {// Does that user exist? | ||
309 | if(!(accounts->delUser(username))) | ||
310 | {// Delete the user. | ||
286 | QMessageBox::information(0,"Ooops!","Something went wrong\nUnable to delete user: "+QString(username)+"."); | 311 | QMessageBox::information(0,"Ooops!","Something went wrong\nUnable to delete user: "+QString(username)+"."); |
287 | } | 312 | } |
288 | } else { | 313 | } |
314 | else | ||
315 | { | ||
289 | QMessageBox::information(0,"Invalid Username","That username ("+QString(username)+")does not exist."); | 316 | QMessageBox::information(0,"Invalid Username","That username ("+QString(username)+")does not exist."); |
290 | return false; | 317 | return false; |
291 | } | 318 | } |
292 | return true; | 319 | return true; |
293 | } | 320 | } |
294 | 321 | ||
295 | /** | 322 | /** |
296 | * This displays a confirmation dialog wether a user should be deleted or not. | 323 | * This displays a confirmation dialog wether a user should be deleted or not. |
297 | * (And also deletes the account) | 324 | * (And also deletes the account) |
298 | * | 325 | * |
299 | * @param username User to be deleted. | 326 | * @param username User to be deleted. |
300 | * | 327 | * |
301 | * @return <code>true</code> if the user was successfully deleted, otherwise <code>false</code>. | 328 | * @return <code>true</code> if the user was successfully deleted, otherwise <code>false</code>. |
302 | * | 329 | * |
303 | */ | 330 | */ |
304 | bool UserDialog::editUser(const char *username) { | 331 | bool UserDialog::editUser(const char *username) |
332 | { | ||
305 | int invalid_group=0; | 333 | int invalid_group=0; |
306 | // viewmode is a workaround for a bug in qte-2.3.4 that gives bus error on manipulating edituserDialog's widgets here. | 334 | // viewmode is a workaround for a bug in qte-2.3.4 that gives bus error on manipulating edituserDialog's widgets here. |
307 | UserDialog *edituserDialog=new UserDialog(VIEWMODE_EDIT);// Create Dialog | 335 | UserDialog *edituserDialog=new UserDialog(VIEWMODE_EDIT);// Create Dialog |
308 | edituserDialog->setCaption(tr("Edit User")); | 336 | edituserDialog->setCaption(tr("Edit User")); |
309 | accounts->findUser(username);// Locate user in database and fill variables in 'accounts' object. | 337 | accounts->findUser(username);// Locate user in database and fill variables in 'accounts' object. |
310 | if(!(accounts->findGroup(accounts->pw_gid))) {// Locate the user's primary group, and fill group variables in 'accounts' object. | 338 | if(!(accounts->findGroup(accounts->pw_gid))) |
339 | {// Locate the user's primary group, and fill group variables in 'accounts' object. | ||
311 | invalid_group=1; | 340 | invalid_group=1; |
312 | } | 341 | } |
313 | // Fill widgets with userinfo. | 342 | // Fill widgets with userinfo. |
314 | edituserDialog->loginLineEdit->setText(accounts->pw_name); | 343 | edituserDialog->loginLineEdit->setText(accounts->pw_name); |
315 | edituserDialog->uidLineEdit->setText(QString::number(accounts->pw_uid)); | 344 | edituserDialog->uidLineEdit->setText(QString::number(accounts->pw_uid)); |
316 | edituserDialog->gecosLineEdit->setText(accounts->pw_gecos); | 345 | edituserDialog->gecosLineEdit->setText(accounts->pw_gecos); |
317 | // Set password to '........', we will later check if this still is the contents, if not, the password has been changed. | 346 | // Set password to '........', we will later check if this still is the contents, if not, the password has been changed. |
318 | edituserDialog->passwordLineEdit->setText("........"); | 347 | edituserDialog->passwordLineEdit->setText("........"); |
319 | // If this user is not using /bin/sh,/bin/ash or /bin/false as shell, add that entry to the shell-combobox. | 348 | // If this user is not using /bin/sh,/bin/ash or /bin/false as shell, add that entry to the shell-combobox. |
320 | if(accounts->pw_shell!="/bin/sh" && accounts->pw_shell!="/bin/ash" && accounts->pw_shell!="/bin/false") { | 349 | if(accounts->pw_shell!="/bin/sh" && accounts->pw_shell!="/bin/ash" && accounts->pw_shell!="/bin/false") |
350 | { | ||
321 | edituserDialog->shellComboBox->insertItem(accounts->pw_shell,0); | 351 | edituserDialog->shellComboBox->insertItem(accounts->pw_shell,0); |
322 | edituserDialog->shellComboBox->setCurrentItem(0); | 352 | edituserDialog->shellComboBox->setCurrentItem(0); |
323 | } | 353 | } |
324 | // Select the primary group for this user. | 354 | // Select the primary group for this user. |
325 | for(int i=0;i<edituserDialog->groupComboBox->count();++i) { | 355 | for(int i=0;i<edituserDialog->groupComboBox->count();++i) |
326 | if(accounts->gr_name==edituserDialog->groupComboBox->text(i)) { | 356 | { |
357 | if(accounts->gr_name==edituserDialog->groupComboBox->text(i)) | ||
358 | { | ||
327 | edituserDialog->groupComboBox->setCurrentItem(i); | 359 | edituserDialog->groupComboBox->setCurrentItem(i); |
328 | break; | 360 | break; |
329 | } | 361 | } |
330 | } | 362 | } |
331 | if(invalid_group) { | 363 | if(invalid_group) |
364 | { | ||
332 | edituserDialog->groupComboBox->insertItem("<Undefined group>",0); | 365 | edituserDialog->groupComboBox->insertItem("<Undefined group>",0); |
333 | edituserDialog->groupComboBox->setCurrentItem(0); | 366 | edituserDialog->groupComboBox->setCurrentItem(0); |
334 | } | 367 | } |
335 | 368 | ||
336 | // Select the groups in the listview, to which the user belongs. | 369 | // Select the groups in the listview, to which the user belongs. |
337 | QCheckListItem *temp; | 370 | QCheckListItem *temp; |
338 | // BAH!!! QRegExp in qt2 sucks... or maybe I do... can't figure out how to check for EITHER end of input ($) OR a comma, so here we do two different QRegExps instead. | 371 | // BAH!!! QRegExp in qt2 sucks... or maybe I do... can't figure out how to check for EITHER end of input ($) OR a comma, so here we do two different QRegExps instead. |
339 | QRegExp userRegExp(QString("[:,]%1$").arg(username));// The end of line variant. | 372 | QRegExp userRegExp(QString("[:,]%1$").arg(username));// The end of line variant. |
340 | QStringList tempList=accounts->groupStringList.grep(userRegExp);// Find all entries in the group database, that the user is a member of. | 373 | QStringList tempList=accounts->groupStringList.grep(userRegExp);// Find all entries in the group database, that the user is a member of. |
341 | for(QStringList::Iterator it=tempList.begin(); it!=tempList.end(); ++it) {// Iterate over all of them. | 374 | for(QStringList::Iterator it=tempList.begin(); it!=tempList.end(); ++it) |
375 | {// Iterate over all of them. | ||
342 | qWarning(*it); | 376 | qWarning(*it); |
343 | QListViewItemIterator lvit( edituserDialog->groupsListView );// Compare to all groups. | 377 | QListViewItemIterator lvit( edituserDialog->groupsListView );// Compare to all groups. |
344 | for ( ; lvit.current(); ++lvit ) { | 378 | for ( ; lvit.current(); ++lvit ) |
345 | if(lvit.current()->text(0)==(*it).left((*it).find(":"))) { | 379 | { |
380 | if(lvit.current()->text(0)==(*it).left((*it).find(":"))) | ||
381 | { | ||
346 | temp=(QCheckListItem*)lvit.current(); | 382 | temp=(QCheckListItem*)lvit.current(); |
347 | temp->setOn(true);// If we find a line with that groupname, select it.; | 383 | temp->setOn(true);// If we find a line with that groupname, select it.; |
348 | } | 384 | } |
349 | } | 385 | } |
350 | } | 386 | } |
351 | userRegExp=QRegExp(QString("[:,]%1,").arg(username));// And the other one. (not end of line.) | 387 | userRegExp=QRegExp(QString("[:,]%1,").arg(username));// And the other one. (not end of line.) |
352 | tempList=accounts->groupStringList.grep(userRegExp);// Find all entries in the group database, that the user is a member of. | 388 | tempList=accounts->groupStringList.grep(userRegExp);// Find all entries in the group database, that the user is a member of. |
353 | for(QStringList::Iterator it=tempList.begin(); it!=tempList.end(); ++it) {// Iterate over all of them. | 389 | for(QStringList::Iterator it=tempList.begin(); it!=tempList.end(); ++it) |
390 | {// Iterate over all of them. | ||
354 | qWarning(*it); | 391 | qWarning(*it); |
355 | QListViewItemIterator lvit( edituserDialog->groupsListView );// Compare to all groups. | 392 | QListViewItemIterator lvit( edituserDialog->groupsListView );// Compare to all groups. |
356 | for ( ; lvit.current(); ++lvit ) { | 393 | for ( ; lvit.current(); ++lvit ) |
357 | if(lvit.current()->text(0)==(*it).left((*it).find(":"))) { | 394 | { |
395 | if(lvit.current()->text(0)==(*it).left((*it).find(":"))) | ||
396 | { | ||
358 | temp=(QCheckListItem*)lvit.current(); | 397 | temp=(QCheckListItem*)lvit.current(); |
359 | temp->setOn(true);// If we find a line with that groupname, select it.; | 398 | temp->setOn(true);// If we find a line with that groupname, select it.; |
360 | } | 399 | } |
361 | } | 400 | } |
362 | } | 401 | } |
363 | 402 | ||
364 | if(!(edituserDialog->exec())) return false;// SHOW THE DIALOG! | 403 | if(!(edituserDialog->exec())) return false;// SHOW THE DIALOG! |
365 | 404 | ||
366 | accounts->findUser(username);// Fill user variables in 'acccounts' object. | 405 | accounts->findUser(username);// Fill user variables in 'acccounts' object. |
367 | accounts->pw_name=edituserDialog->loginLineEdit->text(); | 406 | accounts->pw_name=edituserDialog->loginLineEdit->text(); |
368 | // Has the password been changed ? Make a new "crypt":ed password. | 407 | // Has the password been changed ? Make a new "crypt":ed password. |
369 | if(edituserDialog->passwordLineEdit->text()!="........") accounts->pw_passwd=crypt(edituserDialog->passwordLineEdit->text(), accounts->crypt_make_salt()); | 408 | if(edituserDialog->passwordLineEdit->text()!="........") accounts->pw_passwd=crypt(edituserDialog->passwordLineEdit->text(), accounts->crypt_make_salt()); |
370 | 409 | ||
371 | // Set all variables in accounts object, that will be used when calling 'updateUser()' | 410 | // Set all variables in accounts object, that will be used when calling 'updateUser()' |
372 | accounts->pw_uid=edituserDialog->uidLineEdit->text().toInt(); | 411 | accounts->pw_uid=edituserDialog->uidLineEdit->text().toInt(); |
373 | if(accounts->findGroup(edituserDialog->groupComboBox->currentText())) {// Fill all group variables in 'accounts' object. | 412 | if(accounts->findGroup(edituserDialog->groupComboBox->currentText())) |
413 | {// Fill all group variables in 'accounts' object. | ||
374 | accounts->pw_gid=accounts->gr_gid;// Only do this if the group is a valid group (ie. "<Undefined group>"), otherwise keep the old group. | 414 | accounts->pw_gid=accounts->gr_gid;// Only do this if the group is a valid group (ie. "<Undefined group>"), otherwise keep the old group. |
375 | } | 415 | } |
376 | accounts->pw_gecos=edituserDialog->gecosLineEdit->text(); | 416 | accounts->pw_gecos=edituserDialog->gecosLineEdit->text(); |
377 | accounts->pw_shell=edituserDialog->shellComboBox->currentText(); | 417 | accounts->pw_shell=edituserDialog->shellComboBox->currentText(); |
378 | // Update userinfo, using the information stored in the user variables stored in the accounts object. | 418 | // Update userinfo, using the information stored in the user variables stored in the accounts object. |
379 | accounts->updateUser(username); | 419 | accounts->updateUser(username); |
380 | 420 | ||
381 | // Remove user from all groups he/she is a member of. (could be done in a better way I guess, this was simple though.) | 421 | // Remove user from all groups he/she is a member of. (could be done in a better way I guess, this was simple though.) |
382 | for(QStringList::Iterator it=tempList.begin(); it!=tempList.end(); ++it) { | 422 | for(QStringList::Iterator it=tempList.begin(); it!=tempList.end(); ++it) |
423 | { | ||
383 | accounts->delGroupMember((*it).left((*it).find(":")),username); | 424 | accounts->delGroupMember((*it).left((*it).find(":")),username); |
384 | } | 425 | } |
385 | 426 | ||
386 | // Add User to additional groups that he/she is a member of. | 427 | // Add User to additional groups that he/she is a member of. |
387 | QListViewItemIterator it( edituserDialog->groupsListView ); | 428 | QListViewItemIterator it( edituserDialog->groupsListView ); |
388 | for ( ; it.current(); ++it ) { | 429 | for ( ; it.current(); ++it ) |
430 | { | ||
389 | temp=(QCheckListItem*)it.current(); | 431 | temp=(QCheckListItem*)it.current(); |
390 | if ( temp->isOn() ) | 432 | if ( temp->isOn() ) |
391 | accounts->addGroupMember(it.current()->text(0),edituserDialog->loginLineEdit->text()); | 433 | accounts->addGroupMember(it.current()->text(0),edituserDialog->loginLineEdit->text()); |
392 | } | 434 | } |
393 | 435 | ||
394 | // Copy image to pics/users/ | 436 | // Copy image to pics/users/ |
395 | if(!(edituserDialog->userImage.isNull())) { | 437 | if(!(edituserDialog->userImage.isNull())) |
438 | { | ||
396 | QDir d; | 439 | QDir d; |
397 | if(!(d.exists("/opt/QtPalmtop/pics/users"))) { | 440 | if(!(d.exists("/opt/QtPalmtop/pics/users"))) |
441 | { | ||
398 | d.mkdir("/opt/QtPalmtop/pics/users"); | 442 | d.mkdir("/opt/QtPalmtop/pics/users"); |
399 | } | 443 | } |
400 | QString filename="/opt/QtPalmtop/pics/users/"+accounts->pw_name+".png"; | 444 | QString filename="/opt/QtPalmtop/pics/users/"+accounts->pw_name+".png"; |
401 | // edituserDialog->userImage=edituserDialog->userImage.smoothScale(48,48); | 445 | // edituserDialog->userImage=edituserDialog->userImage.smoothScale(48,48); |
402 | edituserDialog->userImage.save(filename,"PNG"); | 446 | edituserDialog->userImage.save(filename,"PNG"); |
403 | } | 447 | } |
404 | return true; | 448 | return true; |
405 | } | 449 | } |
406 | 450 | ||
407 | /** | 451 | /** |
408 | * "OK" has been clicked. Verify some information before closing the dialog. | 452 | * "OK" has been clicked. Verify some information before closing the dialog. |
409 | * | 453 | * |
410 | */ | 454 | */ |
411 | void UserDialog::accept() { | 455 | void UserDialog::accept() |
456 | { | ||
412 | // Add checking... valid username? username taken? | 457 | // Add checking... valid username? username taken? |
413 | if(loginLineEdit->text().isEmpty()) { | 458 | if(loginLineEdit->text().isEmpty()) |
459 | { | ||
414 | QMessageBox::information(0,"Empty Login","Please enter a login."); | 460 | QMessageBox::information(0,"Empty Login","Please enter a login."); |
415 | return; | 461 | return; |
416 | } | 462 | } |
417 | QDialog::accept(); | 463 | QDialog::accept(); |
418 | } | 464 | } |
419 | 465 | ||
420 | /** | 466 | /** |
421 | * This slot is called when the usericon is clicked, this loads (should) the iconselector. | 467 | * This slot is called when the usericon is clicked, this loads (should) the iconselector. |
422 | * | 468 | * |
423 | */ | 469 | */ |
424 | void UserDialog::clickedPicture() { | 470 | void UserDialog::clickedPicture() |
471 | { | ||
425 | QString filename=OFileDialog::getOpenFileName(OFileSelector::EXTENDED, QString::null); | 472 | QString filename=OFileDialog::getOpenFileName(OFileSelector::EXTENDED, QString::null); |
426 | if(!(filename.isEmpty())) { | 473 | if(!(filename.isEmpty())) |
474 | { | ||
427 | userImage.reset(); | 475 | userImage.reset(); |
428 | if(!(userImage.load(filename))) { | 476 | if(!(userImage.load(filename))) |
477 | { | ||
429 | QMessageBox::information(0,"Sorry!","That icon could not be loaded.\nLoading failed on: "+filename); | 478 | QMessageBox::information(0,"Sorry!","That icon could not be loaded.\nLoading failed on: "+filename); |
430 | } else { | 479 | } |
480 | else | ||
481 | { | ||
431 | // userImage=userImage.smoothScale(48,48); | 482 | // userImage=userImage.smoothScale(48,48); |
432 | QPixmap *picture; | 483 | QPixmap *picture; |
433 | picture=(QPixmap *)picturePushButton->pixmap(); | 484 | picture=(QPixmap *)picturePushButton->pixmap(); |
434 | picture->convertFromImage(userImage,0); | 485 | picture->convertFromImage(userImage,0); |
435 | picturePushButton->update(); | 486 | picturePushButton->update(); |
436 | } | 487 | } |
437 | } | 488 | } |
438 | } | 489 | } |