summaryrefslogtreecommitdiff
path: root/noncore/settings
Unidiff
Diffstat (limited to 'noncore/settings') (more/less context) (show whitespace changes)
-rw-r--r--noncore/settings/appearance2/appearance.cpp162
-rw-r--r--noncore/settings/appearance2/stylelistitem.h8
-rw-r--r--noncore/settings/aqpkg/categoryfilterimpl.cpp20
-rw-r--r--noncore/settings/aqpkg/instoptionsimpl.cpp16
-rw-r--r--noncore/settings/aqpkg/mainwin.cpp38
-rw-r--r--noncore/settings/aqpkg/settingsimpl.cpp35
-rw-r--r--noncore/settings/backup/backuprestore.cpp17
-rw-r--r--noncore/settings/networksettings/ppp/devices.cpp25
-rw-r--r--noncore/settings/networksettings/ppp/edit.cpp233
-rw-r--r--noncore/settings/sysinfo/modulesinfo.cpp16
-rw-r--r--noncore/settings/sysinfo/processinfo.cpp14
-rw-r--r--noncore/settings/usermanager/userdialog.cpp149
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
77using namespace Opie; 76using namespace Opie;
78 77
79 78
80class DefaultWindowDecoration : public WindowDecorationInterface 79class DefaultWindowDecoration : public WindowDecorationInterface
81{ 80{
82public: 81public:
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 }
87QPixmap 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
103private: 105private:
104 ulong ref; 106 ulong ref;
105}; 107};
106 108
107 109
108 110
109 111
110 112
111 113
112 114
113QWidget *Appearance::createStyleTab ( QWidget *parent, Config &cfg ) 115QWidget *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
169QWidget *Appearance::createDecoTab ( QWidget *parent, Config &cfg ) 174QWidget *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
216QWidget *Appearance::createFontTab ( QWidget *parent, Config &cfg ) 223QWidget *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
232QWidget *Appearance::createColorTab ( QWidget *parent, Config &cfg ) 239QWidget *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
449Appearance::Appearance( QWidget* parent, const char* name, WFlags ) 461Appearance::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
484Appearance::~Appearance() 496Appearance::~Appearance()
485{ 497{}
486}
487 498
488void Appearance::tabChanged ( QWidget *w ) 499void 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
498void Appearance::accept ( ) 510void 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
570void Appearance::done ( int r ) 592void Appearance::done ( int r )
571{ 593{
572 QDialog::done ( r ); 594 QDialog::done ( r );
573 close ( ); 595 close ( );
574} 596}
575 597
576 598
577void Appearance::styleClicked ( int index ) 599void 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
591void Appearance::styleSettingsClicked ( ) 614void 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
616void Appearance::decoClicked ( int index ) 640void 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
630void Appearance::fontClicked ( const QFont &f ) 655void 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
636void Appearance::colorClicked ( int index ) 661void 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
647void Appearance::editSchemeClicked ( ) 672void 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
688void Appearance::saveSchemeClicked() 717void 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
755void Appearance::addExcept ( ) 785void 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
762void Appearance::delExcept ( ) 792void 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
770void Appearance::upExcept ( ) 801void 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
778void Appearance::downExcept ( ) 809void 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
786class ExEdit : public QLineEdit { 817class ExEdit : public QLineEdit
818{
787public: 819public:
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
833private: 866private:
834 ExceptListItem *it; 867 ExceptListItem *it;
835 bool m_out; 868 bool m_out;
836}; 869};
837 870
838void Appearance::clickedExcept ( QListViewItem *item, const QPoint &, int c ) 871void 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
36class StyleListItem : public QListBoxText { 42class StyleListItem : public QListBoxText {
37public: 43public:
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"
31using 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>
43using namespace std;
44
39 45
40CategoryFilterImpl :: CategoryFilterImpl(const QString &categories, const QString &selectedCategories, QWidget *parent, const char *name ) 46CategoryFilterImpl :: 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
86CategoryFilterImpl :: ~CategoryFilterImpl() 93CategoryFilterImpl :: ~CategoryFilterImpl()
87{ 94{}
88}
89 95
90QString CategoryFilterImpl :: getSelectedFilter() 96QString 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
44InstallOptionsDlgImpl::InstallOptionsDlgImpl( int flags, int verb, QWidget * parent, const char* name, bool modal, WFlags fl ) 47InstallOptionsDlgImpl::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
102InstallOptionsDlgImpl::~InstallOptionsDlgImpl() 105InstallOptionsDlgImpl::~InstallOptionsDlgImpl()
103{ 106{}
104}
105 107
106 108
107int InstallOptionsDlgImpl :: getFlags() 109int 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
125int InstallOptionsDlgImpl :: getInfoLevel() 127int 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
67extern int compareVersions( const char *v1, const char *v2 ); 70extern int compareVersions( const char *v1, const char *v2 );
68 71
69MainWindow :: MainWindow( QWidget* parent, const char* name, WFlags fl ) 72MainWindow :: 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
1187void MainWindow :: slotDisplayPackage( QListViewItem *item ) 1191void 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
1194QuestionDlg::QuestionDlg( const QString &caption, const QString &text, const QString &secondbtn ) 1198QuestionDlg::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"
32using 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> 53using namespace std;
46#include <qpe/resource.h>
47#endif
48
49#include "settingsimpl.h"
50
51#include "global.h"
52 54
53SettingsImpl :: SettingsImpl( DataManager *dataManager, QWidget * parent, const char* name, bool modal, WFlags fl ) 55SettingsImpl :: 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
79SettingsImpl :: ~SettingsImpl() 81SettingsImpl :: ~SettingsImpl()
80{ 82{
81
82} 83}
83 84
84bool SettingsImpl :: showDlg() 85bool 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
95QWidget *SettingsImpl :: initServerTab() 94QWidget *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 ----------------------
483void SettingsImpl :: proxyApplyChanges() 484void 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
38const QString tempFileName = "/tmp/backup.err"; 41const QString tempFileName = "/tmp/backup.err";
39 42
40 43
41BackupAndRestore::BackupAndRestore( QWidget* parent, const char* name, WFlags fl) 44BackupAndRestore::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
135BackupAndRestore::~BackupAndRestore() 138BackupAndRestore::~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 */
315int BackupAndRestore::getBackupFiles(QString &backupFiles, QListViewItem *parent) 317int 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
47void parseargs(char* buf, char** args); 53void parseargs(char* buf, char** args);
48 54
49DevicesWidget::DevicesWidget( InterfacePPP* ip, QWidget *parent, const char *name, WFlags f ) 55DevicesWidget::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
44DialWidget::DialWidget( PPPData *pd, QWidget *parent, bool isnewaccount 51DialWidget::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
140bool DialWidget::save() { 151bool 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
161void DialWidget::numbersChanged() { 177void 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
170void DialWidget::selectionChanged(int) { 187void DialWidget::selectionChanged(int)
188{
171 numbersChanged(); 189 numbersChanged();
172} 190}
173 191
174 192
175void DialWidget::addNumber() { 193void 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
184void DialWidget::delNumber() { 204void 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
192void DialWidget::upNumber() { 214void 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
204void DialWidget::downNumber() { 228void 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
216void DialWidget::pppdargsbutton() { 242void 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/////////////////////////////////////////////////////////////////////////////
227ExecWidget::ExecWidget(PPPData *pd, QWidget *parent, bool isnewaccount, const char *name) : 253ExecWidget::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
317bool ExecWidget::save() { 344bool 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/////////////////////////////////////////////////////////////////////////////
332IPWidget::IPWidget( PPPData *pd, QWidget *parent, bool isnewaccount, const char *name ) 360IPWidget::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
438void IPWidget::autoname_t(bool on) { 470void 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
457void IPWidget::save() { 491void 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
469void IPWidget::hitIPSelect( int i ) { 507void 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
486DNSWidget::DNSWidget( PPPData *pd, QWidget *parent, bool isnewaccount, const char *name ) 527DNSWidget::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
612void DNSWidget::DNS_Edit_Changed(const QString &text) { 654void 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
617void DNSWidget::DNS_Entry_Selected(int) { 660void DNSWidget::DNS_Entry_Selected(int)
661{
618 remove->setEnabled(true); 662 remove->setEnabled(true);
619} 663}
620 664
621void DNSWidget::DNS_Mode_Selected(int mode) { 665void 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
634void DNSWidget::save() { 679void 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
652void DNSWidget::adddns() { 698void 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
660void DNSWidget::removedns() { 708void 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//
672GatewayWidget::GatewayWidget( PPPData *pd, QWidget *parent, bool isnewaccount, const char *name ) 721GatewayWidget::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
742void GatewayWidget::save() { 795void 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
748void GatewayWidget::hitGatewaySelect( int i ) { 802void 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
763ScriptWidget::ScriptWidget( PPPData *pd, QWidget *parent, bool isnewaccount, const char *name ) 820ScriptWidget::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
827bool ScriptWidget::check() { 885bool 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
848void ScriptWidget::save() { 911void 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
860void ScriptWidget::adjustScrollBar() { 925void 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
868void ScriptWidget::scrolling(int i) { 934void 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
874void ScriptWidget::slhighlighted(int i) { 941void 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
881void ScriptWidget::stlhighlighted(int i) { 949void 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
888void ScriptWidget::addButton() { 957void 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
983void ScriptWidget::insertButton() { 1054void 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
1073void ScriptWidget::removeButton() { 1146void 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/////////////////////////////////////////////////////////////////////////////
1091PhoneNumberDialog::PhoneNumberDialog(QWidget *parent) 1166PhoneNumberDialog::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
1122QString PhoneNumberDialog::phoneNumber() { 1197QString 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
1129void PhoneNumberDialog::textChanged(const QString &s) { 1205void 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
33ModulesInfo::ModulesInfo( QWidget* parent, const char* name, WFlags fl ) 35ModulesInfo::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
84ModulesInfo::~ModulesInfo() 86ModulesInfo::~ModulesInfo()
85{ 87{}
86}
87 88
88void ModulesInfo::updateData() 89void 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
34ProcessInfo::ProcessInfo( QWidget* parent, const char* name, WFlags fl ) 37ProcessInfo::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
88ProcessInfo::~ProcessInfo() 91ProcessInfo::~ProcessInfo()
89{ 92{}
90}
91 93
92void ProcessInfo::updateData() 94void 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
182void ProcessInfo::viewProcess( QListViewItem *process ) 184void 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>
25using namespace Opie; 30using 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 */
32UserDialog::UserDialog(int viewmode, QWidget* parent, const char* name, bool modal, WFlags fl) : QDialog(parent, name, modal, fl) { 37UserDialog::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 */
56UserDialog::~UserDialog() { 64UserDialog::~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 */
63void UserDialog::setupTab1() { 71void 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 */
169void UserDialog::setupTab2() { 181void 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 */
198bool UserDialog::addUser(int uid, int gid) { 211bool 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 */
283bool UserDialog::delUser(const char *username) { 305bool 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 */
304bool UserDialog::editUser(const char *username) { 331bool 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 */
411void UserDialog::accept() { 455void 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 */
424void UserDialog::clickedPicture() { 470void 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}