-rw-r--r-- | inputmethods/dasher/QtDasherPlugin.cc | 4 | ||||
-rw-r--r-- | noncore/net/opietooth/manager/bluebase.cpp | 2 | ||||
-rw-r--r-- | noncore/settings/usermanager/userdialog.cpp | 12 |
3 files changed, 10 insertions, 8 deletions
diff --git a/inputmethods/dasher/QtDasherPlugin.cc b/inputmethods/dasher/QtDasherPlugin.cc index 50d4539..91167c2 100644 --- a/inputmethods/dasher/QtDasherPlugin.cc +++ b/inputmethods/dasher/QtDasherPlugin.cc | |||
@@ -1,79 +1,81 @@ | |||
1 | #include "QtDasherPlugin.h" | 1 | #include "QtDasherPlugin.h" |
2 | 2 | ||
3 | #include <qpe/global.h> | 3 | #include <qpe/global.h> |
4 | #include <qpe/qpeapplication.h> | ||
4 | 5 | ||
5 | #include <qpainter.h> | 6 | #include <qpainter.h> |
6 | #include <qlist.h> | 7 | #include <qlist.h> |
7 | #include <qbitmap.h> | 8 | #include <qbitmap.h> |
8 | #include <qlayout.h> | 9 | #include <qlayout.h> |
9 | #include <qvbox.h> | 10 | #include <qvbox.h> |
10 | #include <qdialog.h> | 11 | #include <qdialog.h> |
12 | #include <qfile.h> | ||
11 | #include <qscrollview.h> | 13 | #include <qscrollview.h> |
12 | #include <qpopupmenu.h> | 14 | #include <qpopupmenu.h> |
13 | #include <qhbuttongroup.h> | 15 | #include <qhbuttongroup.h> |
14 | #include <qpushbutton.h> | 16 | #include <qpushbutton.h> |
15 | #include <qmessagebox.h> | 17 | #include <qmessagebox.h> |
16 | #include <qwindowsystem_qws.h> | 18 | #include <qwindowsystem_qws.h> |
17 | 19 | ||
18 | QtDasherPlugin::QtDasherPlugin(QWidget* parent, const char* name, WFlags f) : QFrame(parent,name,f) | 20 | QtDasherPlugin::QtDasherPlugin(QWidget* parent, const char* name, WFlags f) : QFrame(parent,name,f) |
19 | { | 21 | { |
20 | (new QHBoxLayout(this))->setAutoAdd(TRUE); | 22 | (new QHBoxLayout(this))->setAutoAdd(TRUE); |
21 | interface = new CDasherInterface; | 23 | interface = new CDasherInterface; |
22 | interface->SetSystemLocation("/opt/QtPalmtop/share/dasher/"); | 24 | interface->SetSystemLocation( QFile::encodeName(QPEApplication::qpeDir()+"share/dasher/").data() ); |
23 | interface->Unpause(0); | 25 | interface->Unpause(0); |
24 | interface->Start(); | 26 | interface->Start(); |
25 | d = new QtDasherScreen(240,100,interface,this,this); | 27 | d = new QtDasherScreen(240,100,interface,this,this); |
26 | interface->ChangeMaxBitRate(2.5); | 28 | interface->ChangeMaxBitRate(2.5); |
27 | d->show(); | 29 | d->show(); |
28 | utf8_codec = new QUtf8Codec; | 30 | utf8_codec = new QUtf8Codec; |
29 | } | 31 | } |
30 | 32 | ||
31 | QSize QtDasherPlugin::sizeHint() const | 33 | QSize QtDasherPlugin::sizeHint() const |
32 | { | 34 | { |
33 | return QSize(240,100); | 35 | return QSize(240,100); |
34 | } | 36 | } |
35 | 37 | ||
36 | QtDasherPlugin::~QtDasherPlugin() | 38 | QtDasherPlugin::~QtDasherPlugin() |
37 | { | 39 | { |
38 | delete interface; | 40 | delete interface; |
39 | } | 41 | } |
40 | 42 | ||
41 | void QtDasherPlugin::resetState() | 43 | void QtDasherPlugin::resetState() |
42 | { | 44 | { |
43 | flushcount=0; | 45 | flushcount=0; |
44 | interface->Start(); | 46 | interface->Start(); |
45 | interface->Redraw(); | 47 | interface->Redraw(); |
46 | } | 48 | } |
47 | 49 | ||
48 | void QtDasherPlugin::unflush() | 50 | void QtDasherPlugin::unflush() |
49 | { | 51 | { |
50 | if (flushcount==0) | 52 | if (flushcount==0) |
51 | return; | 53 | return; |
52 | for (; flushcount>0; flushcount--) { | 54 | for (; flushcount>0; flushcount--) { |
53 | deletetext(); | 55 | deletetext(); |
54 | } | 56 | } |
55 | } | 57 | } |
56 | 58 | ||
57 | void QtDasherPlugin::output(int Symbol) | 59 | void QtDasherPlugin::output(int Symbol) |
58 | { | 60 | { |
59 | std::string label = interface->GetEditText(Symbol); | 61 | std::string label = interface->GetEditText(Symbol); |
60 | QString unicodestring = utf8_codec->toUnicode(label.c_str()); | 62 | QString unicodestring = utf8_codec->toUnicode(label.c_str()); |
61 | for (int i=0; i<int(unicodestring.length()); i++) { | 63 | for (int i=0; i<int(unicodestring.length()); i++) { |
62 | emit key( unicodestring[i].unicode(), 0, 0, true, false ); | 64 | emit key( unicodestring[i].unicode(), 0, 0, true, false ); |
63 | emit key( unicodestring[i].unicode(), 0, 0, false, false ); | 65 | emit key( unicodestring[i].unicode(), 0, 0, false, false ); |
64 | } | 66 | } |
65 | } | 67 | } |
66 | 68 | ||
67 | void QtDasherPlugin::deletetext() | 69 | void QtDasherPlugin::deletetext() |
68 | { | 70 | { |
69 | emit key( 0, Qt::Key_Backspace, 0, true, false); | 71 | emit key( 0, Qt::Key_Backspace, 0, true, false); |
70 | emit key( 0, Qt::Key_Backspace, 0, false, false); | 72 | emit key( 0, Qt::Key_Backspace, 0, false, false); |
71 | } | 73 | } |
72 | 74 | ||
73 | void QtDasherPlugin::flush(int Symbol) | 75 | void QtDasherPlugin::flush(int Symbol) |
74 | { | 76 | { |
75 | if (Symbol==0) | 77 | if (Symbol==0) |
76 | return; | 78 | return; |
77 | output(Symbol); | 79 | output(Symbol); |
78 | flushcount++; | 80 | flushcount++; |
79 | } | 81 | } |
diff --git a/noncore/net/opietooth/manager/bluebase.cpp b/noncore/net/opietooth/manager/bluebase.cpp index ee01b61..90e44cb 100644 --- a/noncore/net/opietooth/manager/bluebase.cpp +++ b/noncore/net/opietooth/manager/bluebase.cpp | |||
@@ -67,193 +67,193 @@ BlueBase::BlueBase( QWidget* parent, const char* name, WFlags fl ) | |||
67 | 67 | ||
68 | connect( rfcommBindButton, SIGNAL( clicked() ), this, SLOT( rfcommDialog() ) ); | 68 | connect( rfcommBindButton, SIGNAL( clicked() ), this, SLOT( rfcommDialog() ) ); |
69 | // not good since lib is async | 69 | // not good since lib is async |
70 | // connect( ListView2, SIGNAL( expanded(QListViewItem*) ), | 70 | // connect( ListView2, SIGNAL( expanded(QListViewItem*) ), |
71 | // this, SLOT( addServicesToDevice(QListViewItem*) ) ); | 71 | // this, SLOT( addServicesToDevice(QListViewItem*) ) ); |
72 | connect( ListView2, SIGNAL( clicked(QListViewItem*)), | 72 | connect( ListView2, SIGNAL( clicked(QListViewItem*)), |
73 | this, SLOT( startServiceActionClicked(QListViewItem*) ) ); | 73 | this, SLOT( startServiceActionClicked(QListViewItem*) ) ); |
74 | connect( ListView2, SIGNAL( rightButtonClicked(QListViewItem*,const QPoint&,int) ), | 74 | connect( ListView2, SIGNAL( rightButtonClicked(QListViewItem*,const QPoint&,int) ), |
75 | this, SLOT(startServiceActionHold(QListViewItem*,const QPoint&,int) ) ); | 75 | this, SLOT(startServiceActionHold(QListViewItem*,const QPoint&,int) ) ); |
76 | connect( m_localDevice , SIGNAL( foundServices(const QString&,Services::ValueList) ), | 76 | connect( m_localDevice , SIGNAL( foundServices(const QString&,Services::ValueList) ), |
77 | this, SLOT( addServicesToDevice(const QString&,Services::ValueList) ) ); | 77 | this, SLOT( addServicesToDevice(const QString&,Services::ValueList) ) ); |
78 | connect( m_localDevice, SIGNAL( available(const QString&,bool) ), | 78 | connect( m_localDevice, SIGNAL( available(const QString&,bool) ), |
79 | this, SLOT( deviceActive(const QString&,bool) ) ); | 79 | this, SLOT( deviceActive(const QString&,bool) ) ); |
80 | connect( m_localDevice, SIGNAL( connections(ConnectionState::ValueList) ), | 80 | connect( m_localDevice, SIGNAL( connections(ConnectionState::ValueList) ), |
81 | this, SLOT( addConnectedDevices(ConnectionState::ValueList) ) ); | 81 | this, SLOT( addConnectedDevices(ConnectionState::ValueList) ) ); |
82 | connect( m_localDevice, SIGNAL( signalStrength(const QString&,const QString&) ), | 82 | connect( m_localDevice, SIGNAL( signalStrength(const QString&,const QString&) ), |
83 | this, SLOT( addSignalStrength(const QString&,const QString&) ) ); | 83 | this, SLOT( addSignalStrength(const QString&,const QString&) ) ); |
84 | 84 | ||
85 | 85 | ||
86 | // let hold be rightButtonClicked() | 86 | // let hold be rightButtonClicked() |
87 | QPEApplication::setStylusOperation( ListView2->viewport(), QPEApplication::RightOnHold); | 87 | QPEApplication::setStylusOperation( ListView2->viewport(), QPEApplication::RightOnHold); |
88 | QPEApplication::setStylusOperation( ListView4->viewport(), QPEApplication::RightOnHold); | 88 | QPEApplication::setStylusOperation( ListView4->viewport(), QPEApplication::RightOnHold); |
89 | 89 | ||
90 | //Load all icons needed | 90 | //Load all icons needed |
91 | m_offPix = Resource::loadPixmap( "opietooth/notconnected" ); | 91 | m_offPix = Resource::loadPixmap( "opietooth/notconnected" ); |
92 | m_onPix = Resource::loadPixmap( "opietooth/connected" ); | 92 | m_onPix = Resource::loadPixmap( "opietooth/connected" ); |
93 | m_findPix = Resource::loadPixmap( "opietooth/find" ); | 93 | m_findPix = Resource::loadPixmap( "opietooth/find" ); |
94 | 94 | ||
95 | QPalette pal = this->palette(); | 95 | QPalette pal = this->palette(); |
96 | QColor col = pal.color( QPalette::Active, QColorGroup::Background ); | 96 | QColor col = pal.color( QPalette::Active, QColorGroup::Background ); |
97 | pal.setColor( QPalette::Active, QColorGroup::Button, col ); | 97 | pal.setColor( QPalette::Active, QColorGroup::Button, col ); |
98 | pal.setColor( QPalette::Inactive, QColorGroup::Button, col ); | 98 | pal.setColor( QPalette::Inactive, QColorGroup::Button, col ); |
99 | pal.setColor( QPalette::Normal, QColorGroup::Button, col ); | 99 | pal.setColor( QPalette::Normal, QColorGroup::Button, col ); |
100 | pal.setColor( QPalette::Disabled, QColorGroup::Button, col ); | 100 | pal.setColor( QPalette::Disabled, QColorGroup::Button, col ); |
101 | this->setPalette( pal ); | 101 | this->setPalette( pal ); |
102 | 102 | ||
103 | setCaption( tr( "Bluetooth Manager" ) ); | 103 | setCaption( tr( "Bluetooth Manager" ) ); |
104 | 104 | ||
105 | readConfig(); | 105 | readConfig(); |
106 | initGui(); | 106 | initGui(); |
107 | 107 | ||
108 | ListView2->setRootIsDecorated(true); | 108 | ListView2->setRootIsDecorated(true); |
109 | 109 | ||
110 | 110 | ||
111 | writeToHciConfig(); | 111 | writeToHciConfig(); |
112 | // search conncetions | 112 | // search conncetions |
113 | addConnectedDevices(); | 113 | addConnectedDevices(); |
114 | addSignalStrength(); | 114 | addSignalStrength(); |
115 | m_iconLoader = new BTIconLoader(); | 115 | m_iconLoader = new BTIconLoader(); |
116 | readSavedDevices(); | 116 | readSavedDevices(); |
117 | } | 117 | } |
118 | 118 | ||
119 | /** | 119 | /** |
120 | * Reads all options from the config file | 120 | * Reads all options from the config file |
121 | */ | 121 | */ |
122 | void BlueBase::readConfig() | 122 | void BlueBase::readConfig() |
123 | { | 123 | { |
124 | 124 | ||
125 | Config cfg( "bluetoothmanager" ); | 125 | Config cfg( "bluetoothmanager" ); |
126 | cfg.setGroup( "bluezsettings" ); | 126 | cfg.setGroup( "bluezsettings" ); |
127 | 127 | ||
128 | m_deviceName = cfg.readEntry( "name" , "No name" ); // name the device should identify with | 128 | m_deviceName = cfg.readEntry( "name" , "No name" ); // name the device should identify with |
129 | m_defaultPasskey = cfg.readEntryCrypt( "passkey" , "" ); // <- hmm, look up how good the trolls did that, maybe too weak | 129 | m_defaultPasskey = cfg.readEntryCrypt( "passkey" , "" ); // <- hmm, look up how good the trolls did that, maybe too weak |
130 | m_useEncryption = cfg.readBoolEntry( "useEncryption" , TRUE ); | 130 | m_useEncryption = cfg.readBoolEntry( "useEncryption" , TRUE ); |
131 | m_enableAuthentification = cfg.readBoolEntry( "enableAuthentification" , TRUE ); | 131 | m_enableAuthentification = cfg.readBoolEntry( "enableAuthentification" , TRUE ); |
132 | m_enablePagescan = cfg.readBoolEntry( "enablePagescan" , TRUE ); | 132 | m_enablePagescan = cfg.readBoolEntry( "enablePagescan" , TRUE ); |
133 | m_enableInquiryscan = cfg.readBoolEntry( "enableInquiryscan" , TRUE ); | 133 | m_enableInquiryscan = cfg.readBoolEntry( "enableInquiryscan" , TRUE ); |
134 | } | 134 | } |
135 | 135 | ||
136 | /** | 136 | /** |
137 | * Writes all options to the config file | 137 | * Writes all options to the config file |
138 | */ | 138 | */ |
139 | void BlueBase::writeConfig() | 139 | void BlueBase::writeConfig() |
140 | { | 140 | { |
141 | 141 | ||
142 | Config cfg( "bluetoothmanager" ); | 142 | Config cfg( "bluetoothmanager" ); |
143 | cfg.setGroup( "bluezsettings" ); | 143 | cfg.setGroup( "bluezsettings" ); |
144 | 144 | ||
145 | cfg.writeEntry( "name" , m_deviceName ); | 145 | cfg.writeEntry( "name" , m_deviceName ); |
146 | cfg.writeEntryCrypt( "passkey" , m_defaultPasskey ); | 146 | cfg.writeEntryCrypt( "passkey" , m_defaultPasskey ); |
147 | cfg.writeEntry( "useEncryption" , m_useEncryption ); | 147 | cfg.writeEntry( "useEncryption" , m_useEncryption ); |
148 | cfg.writeEntry( "enableAuthentification" , m_enableAuthentification ); | 148 | cfg.writeEntry( "enableAuthentification" , m_enableAuthentification ); |
149 | cfg.writeEntry( "enablePagescan" , m_enablePagescan ); | 149 | cfg.writeEntry( "enablePagescan" , m_enablePagescan ); |
150 | cfg.writeEntry( "enableInquiryscan" , m_enableInquiryscan ); | 150 | cfg.writeEntry( "enableInquiryscan" , m_enableInquiryscan ); |
151 | 151 | ||
152 | writeToHciConfig(); | 152 | writeToHciConfig(); |
153 | } | 153 | } |
154 | 154 | ||
155 | /** | 155 | /** |
156 | * Modify the hcid.conf file to our needs | 156 | * Modify the hcid.conf file to our needs |
157 | */ | 157 | */ |
158 | void BlueBase::writeToHciConfig() | 158 | void BlueBase::writeToHciConfig() |
159 | { | 159 | { |
160 | owarn << "writeToHciConfig" << oendl; | 160 | owarn << "writeToHciConfig" << oendl; |
161 | HciConfWrapper hciconf ( "/etc/bluetooth/hcid.conf" ); | 161 | HciConfWrapper hciconf ( "/etc/bluetooth/hcid.conf" ); |
162 | hciconf.load(); | 162 | hciconf.load(); |
163 | hciconf.setPinHelper( "/opt/QtPalmtop/bin/bluepin" ); | 163 | hciconf.setPinHelper( QPEApplication::qpeDir() + "bin/bluepin" ); |
164 | hciconf.setName( m_deviceName ); | 164 | hciconf.setName( m_deviceName ); |
165 | hciconf.setEncrypt( m_useEncryption ); | 165 | hciconf.setEncrypt( m_useEncryption ); |
166 | hciconf.setAuth( m_enableAuthentification ); | 166 | hciconf.setAuth( m_enableAuthentification ); |
167 | hciconf.setPscan( m_enablePagescan ); | 167 | hciconf.setPscan( m_enablePagescan ); |
168 | hciconf.setIscan( m_enableInquiryscan ); | 168 | hciconf.setIscan( m_enableInquiryscan ); |
169 | hciconf.save(); | 169 | hciconf.save(); |
170 | } | 170 | } |
171 | 171 | ||
172 | 172 | ||
173 | /** | 173 | /** |
174 | * Read the list of allready known devices | 174 | * Read the list of allready known devices |
175 | */ | 175 | */ |
176 | void BlueBase::readSavedDevices() | 176 | void BlueBase::readSavedDevices() |
177 | { | 177 | { |
178 | 178 | ||
179 | QValueList<RemoteDevice> loadedDevices; | 179 | QValueList<RemoteDevice> loadedDevices; |
180 | DeviceHandler handler; | 180 | DeviceHandler handler; |
181 | loadedDevices = handler.load(); | 181 | loadedDevices = handler.load(); |
182 | 182 | ||
183 | addSearchedDevices( loadedDevices ); | 183 | addSearchedDevices( loadedDevices ); |
184 | } | 184 | } |
185 | 185 | ||
186 | 186 | ||
187 | /** | 187 | /** |
188 | * Write the list of allready known devices | 188 | * Write the list of allready known devices |
189 | */ | 189 | */ |
190 | void BlueBase::writeSavedDevices() | 190 | void BlueBase::writeSavedDevices() |
191 | { | 191 | { |
192 | QListViewItemIterator it( ListView2 ); | 192 | QListViewItemIterator it( ListView2 ); |
193 | BTListItem* item; | 193 | BTListItem* item; |
194 | BTDeviceItem* device; | 194 | BTDeviceItem* device; |
195 | RemoteDevice::ValueList list; | 195 | RemoteDevice::ValueList list; |
196 | for ( ; it.current(); ++it ) | 196 | for ( ; it.current(); ++it ) |
197 | { | 197 | { |
198 | item = (BTListItem*)it.current(); | 198 | item = (BTListItem*)it.current(); |
199 | if(item->typeId() != BTListItem::Device ) | 199 | if(item->typeId() != BTListItem::Device ) |
200 | continue; | 200 | continue; |
201 | device = (BTDeviceItem*)item; | 201 | device = (BTDeviceItem*)item; |
202 | 202 | ||
203 | list.append( device->remoteDevice() ); | 203 | list.append( device->remoteDevice() ); |
204 | } | 204 | } |
205 | /* | 205 | /* |
206 | * if not empty save the List through DeviceHandler | 206 | * if not empty save the List through DeviceHandler |
207 | */ | 207 | */ |
208 | if ( list.isEmpty() ) | 208 | if ( list.isEmpty() ) |
209 | return; | 209 | return; |
210 | DeviceHandler handler; | 210 | DeviceHandler handler; |
211 | handler.save( list ); | 211 | handler.save( list ); |
212 | } | 212 | } |
213 | 213 | ||
214 | 214 | ||
215 | /** | 215 | /** |
216 | * Set up the gui | 216 | * Set up the gui |
217 | */ | 217 | */ |
218 | void BlueBase::initGui() | 218 | void BlueBase::initGui() |
219 | { | 219 | { |
220 | StatusLabel->setText( status() ); // maybe move it to getStatus() | 220 | StatusLabel->setText( status() ); // maybe move it to getStatus() |
221 | cryptCheckBox->setChecked( m_useEncryption ); | 221 | cryptCheckBox->setChecked( m_useEncryption ); |
222 | authCheckBox->setChecked( m_enableAuthentification ); | 222 | authCheckBox->setChecked( m_enableAuthentification ); |
223 | pagescanCheckBox->setChecked( m_enablePagescan ); | 223 | pagescanCheckBox->setChecked( m_enablePagescan ); |
224 | inquiryscanCheckBox->setChecked( m_enableInquiryscan ); | 224 | inquiryscanCheckBox->setChecked( m_enableInquiryscan ); |
225 | deviceNameLine->setText( m_deviceName ); | 225 | deviceNameLine->setText( m_deviceName ); |
226 | passkeyLine->setText( m_defaultPasskey ); | 226 | passkeyLine->setText( m_defaultPasskey ); |
227 | // set info tab | 227 | // set info tab |
228 | setInfo(); | 228 | setInfo(); |
229 | } | 229 | } |
230 | 230 | ||
231 | 231 | ||
232 | /** | 232 | /** |
233 | * Get the status informations and returns it | 233 | * Get the status informations and returns it |
234 | * @return QString the status informations gathered | 234 | * @return QString the status informations gathered |
235 | */ | 235 | */ |
236 | QString BlueBase::status()const | 236 | QString BlueBase::status()const |
237 | { | 237 | { |
238 | QString infoString = tr( "<b>Device name : </b> Ipaq" ); | 238 | QString infoString = tr( "<b>Device name : </b> Ipaq" ); |
239 | infoString += QString( "<br><b>" + tr( "MAC adress: " ) +"</b> No idea" ); | 239 | infoString += QString( "<br><b>" + tr( "MAC adress: " ) +"</b> No idea" ); |
240 | infoString += QString( "<br><b>" + tr( "Class" ) + "</b> PDA" ); | 240 | infoString += QString( "<br><b>" + tr( "Class" ) + "</b> PDA" ); |
241 | 241 | ||
242 | return (infoString); | 242 | return (infoString); |
243 | } | 243 | } |
244 | 244 | ||
245 | 245 | ||
246 | /** | 246 | /** |
247 | * Read the current values from the gui and invoke writeConfig() | 247 | * Read the current values from the gui and invoke writeConfig() |
248 | */ | 248 | */ |
249 | void BlueBase::applyConfigChanges() | 249 | void BlueBase::applyConfigChanges() |
250 | { | 250 | { |
251 | m_deviceName = deviceNameLine->text(); | 251 | m_deviceName = deviceNameLine->text(); |
252 | m_defaultPasskey = passkeyLine->text(); | 252 | m_defaultPasskey = passkeyLine->text(); |
253 | m_useEncryption = cryptCheckBox->isChecked(); | 253 | m_useEncryption = cryptCheckBox->isChecked(); |
254 | m_enableAuthentification = authCheckBox->isChecked(); | 254 | m_enableAuthentification = authCheckBox->isChecked(); |
255 | m_enablePagescan = pagescanCheckBox->isChecked(); | 255 | m_enablePagescan = pagescanCheckBox->isChecked(); |
256 | m_enableInquiryscan = inquiryscanCheckBox->isChecked(); | 256 | m_enableInquiryscan = inquiryscanCheckBox->isChecked(); |
257 | 257 | ||
258 | writeConfig(); | 258 | writeConfig(); |
259 | 259 | ||
diff --git a/noncore/settings/usermanager/userdialog.cpp b/noncore/settings/usermanager/userdialog.cpp index 3616507..9dfb2af 100644 --- a/noncore/settings/usermanager/userdialog.cpp +++ b/noncore/settings/usermanager/userdialog.cpp | |||
@@ -172,317 +172,317 @@ void UserDialog::setupTab1() | |||
172 | 172 | ||
173 | myTabWidget->addTab(tabpage,"User Info"); | 173 | myTabWidget->addTab(tabpage,"User Info"); |
174 | } | 174 | } |
175 | 175 | ||
176 | /** | 176 | /** |
177 | * Creates the second tab containing additional groups for the user. | 177 | * Creates the second tab containing additional groups for the user. |
178 | * | 178 | * |
179 | */ | 179 | */ |
180 | void UserDialog::setupTab2() | 180 | void UserDialog::setupTab2() |
181 | { | 181 | { |
182 | QWidget *tabpage = new QWidget(myTabWidget,"page2"); | 182 | QWidget *tabpage = new QWidget(myTabWidget,"page2"); |
183 | QVBoxLayout *layout = new QVBoxLayout(tabpage); | 183 | QVBoxLayout *layout = new QVBoxLayout(tabpage); |
184 | layout->setMargin(5); | 184 | layout->setMargin(5); |
185 | 185 | ||
186 | // Additional groups | 186 | // Additional groups |
187 | groupsListView=new QListView(tabpage,"groups"); | 187 | groupsListView=new QListView(tabpage,"groups"); |
188 | groupsListView->addColumn("Additional groups"); | 188 | groupsListView->addColumn("Additional groups"); |
189 | groupsListView->setColumnWidthMode(0,QListView::Maximum); | 189 | groupsListView->setColumnWidthMode(0,QListView::Maximum); |
190 | groupsListView->setMultiSelection(false); | 190 | groupsListView->setMultiSelection(false); |
191 | groupsListView->setAllColumnsShowFocus(false); | 191 | groupsListView->setAllColumnsShowFocus(false); |
192 | 192 | ||
193 | layout->addSpacing(5); | 193 | layout->addSpacing(5); |
194 | // Grouplist | 194 | // Grouplist |
195 | layout->addWidget(groupsListView); | 195 | layout->addWidget(groupsListView); |
196 | 196 | ||
197 | myTabWidget->addTab(tabpage,"User Groups"); | 197 | myTabWidget->addTab(tabpage,"User Groups"); |
198 | } | 198 | } |
199 | 199 | ||
200 | /** | 200 | /** |
201 | * Static function that creates the userinfo dialog. | 201 | * Static function that creates the userinfo dialog. |
202 | * The user will be prompted to add a user. | 202 | * The user will be prompted to add a user. |
203 | * | 203 | * |
204 | * @param uid This is a suggested available UID. | 204 | * @param uid This is a suggested available UID. |
205 | * @param gid This is a suggested available GID. | 205 | * @param gid This is a suggested available GID. |
206 | * | 206 | * |
207 | * @return <code>true</code> if the user was successfully added, otherwise <code>false</code>. | 207 | * @return <code>true</code> if the user was successfully added, otherwise <code>false</code>. |
208 | * | 208 | * |
209 | */ | 209 | */ |
210 | bool UserDialog::addUser(int uid, int gid) | 210 | bool UserDialog::addUser(int uid, int gid) |
211 | { | 211 | { |
212 | QCheckListItem *temp; | 212 | QCheckListItem *temp; |
213 | QFile ozTest; | 213 | QFile ozTest; |
214 | int oz=false; | 214 | int oz=false; |
215 | if(ODevice::inst()->system()==System_OpenZaurus) oz=true; | 215 | if(ODevice::inst()->system()==System_OpenZaurus) oz=true; |
216 | // viewmode is a workaround for a bug in qte-2.3.4 that gives bus error on manipulating adduserDialog's widgets here. | 216 | // viewmode is a workaround for a bug in qte-2.3.4 that gives bus error on manipulating adduserDialog's widgets here. |
217 | UserDialog *adduserDialog=new UserDialog(VIEWMODE_NEW); | 217 | UserDialog *adduserDialog=new UserDialog(VIEWMODE_NEW); |
218 | adduserDialog->setCaption(tr("Add User")); | 218 | adduserDialog->setCaption(tr("Add User")); |
219 | adduserDialog->userID=uid; // Set next available UID as default uid. | 219 | adduserDialog->userID=uid; // Set next available UID as default uid. |
220 | adduserDialog->groupID=gid; // Set next available GID as default gid. | 220 | adduserDialog->groupID=gid; // Set next available GID as default gid. |
221 | // Insert default group into groupComboBox | 221 | // Insert default group into groupComboBox |
222 | adduserDialog->groupComboBox->insertItem("<create new group>",0); | 222 | adduserDialog->groupComboBox->insertItem("<create new group>",0); |
223 | adduserDialog->uidLineEdit->setText(QString::number(uid)); | 223 | adduserDialog->uidLineEdit->setText(QString::number(uid)); |
224 | // If we're running on OZ, add new users to some default groups. | 224 | // If we're running on OZ, add new users to some default groups. |
225 | if(oz) | 225 | if(oz) |
226 | { | 226 | { |
227 | QListViewItemIterator iter( adduserDialog->groupsListView ); | 227 | QListViewItemIterator iter( adduserDialog->groupsListView ); |
228 | for ( ; iter.current(); ++iter ) | 228 | for ( ; iter.current(); ++iter ) |
229 | { | 229 | { |
230 | temp=(QCheckListItem*)iter.current(); | 230 | temp=(QCheckListItem*)iter.current(); |
231 | if (temp->text()=="video") temp->setOn(true); | 231 | if (temp->text()=="video") temp->setOn(true); |
232 | if (temp->text()=="audio") temp->setOn(true); | 232 | if (temp->text()=="audio") temp->setOn(true); |
233 | if (temp->text()=="time") temp->setOn(true); | 233 | if (temp->text()=="time") temp->setOn(true); |
234 | if (temp->text()=="power") temp->setOn(true); | 234 | if (temp->text()=="power") temp->setOn(true); |
235 | if (temp->text()=="input") temp->setOn(true); | 235 | if (temp->text()=="input") temp->setOn(true); |
236 | if (temp->text()=="sharp") temp->setOn(true); | 236 | if (temp->text()=="sharp") temp->setOn(true); |
237 | if (temp->text()=="tty") temp->setOn(true); | 237 | if (temp->text()=="tty") temp->setOn(true); |
238 | } | 238 | } |
239 | } | 239 | } |
240 | // Show the dialog! | 240 | // Show the dialog! |
241 | if(!(adduserDialog->exec())) return false; | 241 | if(!(adduserDialog->exec())) return false; |
242 | if((adduserDialog->groupComboBox->currentItem()!=0)) | 242 | if((adduserDialog->groupComboBox->currentItem()!=0)) |
243 | { | 243 | { |
244 | accounts->findGroup(adduserDialog->groupComboBox->currentText()); | 244 | accounts->findGroup(adduserDialog->groupComboBox->currentText()); |
245 | adduserDialog->groupID=accounts->gr_gid; | 245 | adduserDialog->groupID=accounts->gr_gid; |
246 | owarn << QString::number(accounts->gr_gid) << oendl; | 246 | owarn << QString::number(accounts->gr_gid) << oendl; |
247 | } | 247 | } |
248 | if(!(accounts->addUser(adduserDialog->loginLineEdit->text(), adduserDialog->passwordLineEdit->text(), | 248 | if(!(accounts->addUser(adduserDialog->loginLineEdit->text(), adduserDialog->passwordLineEdit->text(), |
249 | adduserDialog->uidLineEdit->text().toInt(), adduserDialog->groupID, adduserDialog->gecosLineEdit->text(), | 249 | adduserDialog->uidLineEdit->text().toInt(), adduserDialog->groupID, adduserDialog->gecosLineEdit->text(), |
250 | QString("/home/")+adduserDialog->loginLineEdit->text() , adduserDialog->shellComboBox->currentText()))) | 250 | QString("/home/")+adduserDialog->loginLineEdit->text() , adduserDialog->shellComboBox->currentText()))) |
251 | { | 251 | { |
252 | QMessageBox::information(0,"Ooops!","Something went wrong!\nUnable to add user."); | 252 | QMessageBox::information(0,"Ooops!","Something went wrong!\nUnable to add user."); |
253 | return false; | 253 | return false; |
254 | } | 254 | } |
255 | 255 | ||
256 | // Add User to additional groups. | 256 | // Add User to additional groups. |
257 | QListViewItemIterator it( adduserDialog->groupsListView ); | 257 | QListViewItemIterator it( adduserDialog->groupsListView ); |
258 | for ( ; it.current(); ++it ) | 258 | for ( ; it.current(); ++it ) |
259 | { | 259 | { |
260 | temp=(QCheckListItem*)it.current(); | 260 | temp=(QCheckListItem*)it.current(); |
261 | if (temp->isOn() ) | 261 | if (temp->isOn() ) |
262 | accounts->addGroupMember(it.current()->text(0),adduserDialog->loginLineEdit->text()); | 262 | accounts->addGroupMember(it.current()->text(0),adduserDialog->loginLineEdit->text()); |
263 | } | 263 | } |
264 | // Copy image to pics/users/ | 264 | // Copy image to pics/users/ |
265 | if(!(adduserDialog->userImage.isNull())) | 265 | if(!(adduserDialog->userImage.isNull())) |
266 | { | 266 | { |
267 | QDir d; | 267 | QDir d; |
268 | if(!(d.exists("/opt/QtPalmtop/pics/users"))) | 268 | if(!(d.exists(QPEApplication::qpeDir() + "pics/users"))) |
269 | { | 269 | { |
270 | d.mkdir("/opt/QtPalmtop/pics/users"); | 270 | d.mkdir(QPEApplication::qpeDir() + "pics/users"); |
271 | } | 271 | } |
272 | QString filename="/opt/QtPalmtop/pics/users/"+accounts->pw_name+".png"; | 272 | QString filename= QPEApplication::qpeDir()+"pics/users/"+accounts->pw_name+".png"; |
273 | // adduserDialog->userImage=adduserDialog->userImage.smoothScale(48,48); | 273 | // adduserDialog->userImage=adduserDialog->userImage.smoothScale(48,48); |
274 | adduserDialog->userImage.save(filename,"PNG"); | 274 | adduserDialog->userImage.save(filename,"PNG"); |
275 | } | 275 | } |
276 | 276 | ||
277 | // Should we copy the skeleton homedirectory /etc/skel to the user's homedirectory? | 277 | // Should we copy the skeleton homedirectory /etc/skel to the user's homedirectory? |
278 | accounts->findUser(adduserDialog->loginLineEdit->text()); | 278 | accounts->findUser(adduserDialog->loginLineEdit->text()); |
279 | if(adduserDialog->skelCheckBox->isChecked()) | 279 | if(adduserDialog->skelCheckBox->isChecked()) |
280 | { | 280 | { |
281 | QString command_cp; | 281 | QString command_cp; |
282 | QString command_chown; | 282 | QString command_chown; |
283 | command_cp.sprintf("cp -a /etc/skel/* %s/",accounts->pw_dir.latin1()); | 283 | command_cp.sprintf("cp -a /etc/skel/* %s/",accounts->pw_dir.latin1()); |
284 | system(command_cp); | 284 | system(command_cp); |
285 | 285 | ||
286 | command_cp.sprintf("cp -a /etc/skel/.[!.]* %s/",accounts->pw_dir.latin1()); // Bug in busybox, ".*" includes parent directory, does this work as a workaround? | 286 | 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 | system(command_cp); | 287 | system(command_cp); |
288 | 288 | ||
289 | command_chown.sprintf("chown -R %d:%d %s",accounts->pw_uid,accounts->pw_gid,accounts->pw_dir.latin1()); | 289 | command_chown.sprintf("chown -R %d:%d %s",accounts->pw_uid,accounts->pw_gid,accounts->pw_dir.latin1()); |
290 | system(command_chown); | 290 | system(command_chown); |
291 | } | 291 | } |
292 | 292 | ||
293 | return true; | 293 | return true; |
294 | } | 294 | } |
295 | 295 | ||
296 | /** | 296 | /** |
297 | * Deletes the user account. | 297 | * Deletes the user account. |
298 | * | 298 | * |
299 | * @param username User to be deleted. | 299 | * @param username User to be deleted. |
300 | * | 300 | * |
301 | * @return <code>true</code> if the user was successfully deleted, otherwise <code>false</code>. | 301 | * @return <code>true</code> if the user was successfully deleted, otherwise <code>false</code>. |
302 | * | 302 | * |
303 | */ | 303 | */ |
304 | bool UserDialog::delUser(const char *username) | 304 | bool UserDialog::delUser(const char *username) |
305 | { | 305 | { |
306 | if((accounts->findUser(username))) | 306 | if((accounts->findUser(username))) |
307 | { // Does that user exist? | 307 | { // Does that user exist? |
308 | if(!(accounts->delUser(username))) | 308 | if(!(accounts->delUser(username))) |
309 | { // Delete the user. | 309 | { // Delete the user. |
310 | QMessageBox::information(0,"Ooops!","Something went wrong\nUnable to delete user: "+QString(username)+"."); | 310 | QMessageBox::information(0,"Ooops!","Something went wrong\nUnable to delete user: "+QString(username)+"."); |
311 | } | 311 | } |
312 | } | 312 | } |
313 | else | 313 | else |
314 | { | 314 | { |
315 | QMessageBox::information(0,"Invalid Username","That username ("+QString(username)+")does not exist."); | 315 | QMessageBox::information(0,"Invalid Username","That username ("+QString(username)+")does not exist."); |
316 | return false; | 316 | return false; |
317 | } | 317 | } |
318 | return true; | 318 | return true; |
319 | } | 319 | } |
320 | 320 | ||
321 | /** | 321 | /** |
322 | * This displays a confirmation dialog wether a user should be deleted or not. | 322 | * This displays a confirmation dialog wether a user should be deleted or not. |
323 | * (And also deletes the account) | 323 | * (And also deletes the account) |
324 | * | 324 | * |
325 | * @param username User to be deleted. | 325 | * @param username User to be deleted. |
326 | * | 326 | * |
327 | * @return <code>true</code> if the user was successfully deleted, otherwise <code>false</code>. | 327 | * @return <code>true</code> if the user was successfully deleted, otherwise <code>false</code>. |
328 | * | 328 | * |
329 | */ | 329 | */ |
330 | bool UserDialog::editUser(const char *username) | 330 | bool UserDialog::editUser(const char *username) |
331 | { | 331 | { |
332 | int invalid_group=0; | 332 | int invalid_group=0; |
333 | // viewmode is a workaround for a bug in qte-2.3.4 that gives bus error on manipulating edituserDialog's widgets here. | 333 | // viewmode is a workaround for a bug in qte-2.3.4 that gives bus error on manipulating edituserDialog's widgets here. |
334 | UserDialog *edituserDialog=new UserDialog(VIEWMODE_EDIT); // Create Dialog | 334 | UserDialog *edituserDialog=new UserDialog(VIEWMODE_EDIT); // Create Dialog |
335 | edituserDialog->setCaption(tr("Edit User")); | 335 | edituserDialog->setCaption(tr("Edit User")); |
336 | accounts->findUser(username); // Locate user in database and fill variables in 'accounts' object. | 336 | accounts->findUser(username); // Locate user in database and fill variables in 'accounts' object. |
337 | if(!(accounts->findGroup(accounts->pw_gid))) | 337 | if(!(accounts->findGroup(accounts->pw_gid))) |
338 | { // Locate the user's primary group, and fill group variables in 'accounts' object. | 338 | { // Locate the user's primary group, and fill group variables in 'accounts' object. |
339 | invalid_group=1; | 339 | invalid_group=1; |
340 | } | 340 | } |
341 | // Fill widgets with userinfo. | 341 | // Fill widgets with userinfo. |
342 | edituserDialog->loginLineEdit->setText(accounts->pw_name); | 342 | edituserDialog->loginLineEdit->setText(accounts->pw_name); |
343 | edituserDialog->uidLineEdit->setText(QString::number(accounts->pw_uid)); | 343 | edituserDialog->uidLineEdit->setText(QString::number(accounts->pw_uid)); |
344 | edituserDialog->gecosLineEdit->setText(accounts->pw_gecos); | 344 | edituserDialog->gecosLineEdit->setText(accounts->pw_gecos); |
345 | // Set password to '........', we will later check if this still is the contents, if not, the password has been changed. | 345 | // Set password to '........', we will later check if this still is the contents, if not, the password has been changed. |
346 | edituserDialog->passwordLineEdit->setText("........"); | 346 | edituserDialog->passwordLineEdit->setText("........"); |
347 | // If this user is not using /bin/sh,/bin/ash or /bin/false as shell, add that entry to the shell-combobox. | 347 | // If this user is not using /bin/sh,/bin/ash or /bin/false as shell, add that entry to the shell-combobox. |
348 | if(accounts->pw_shell!="/bin/sh" && accounts->pw_shell!="/bin/ash" && accounts->pw_shell!="/bin/false") | 348 | if(accounts->pw_shell!="/bin/sh" && accounts->pw_shell!="/bin/ash" && accounts->pw_shell!="/bin/false") |
349 | { | 349 | { |
350 | edituserDialog->shellComboBox->insertItem(accounts->pw_shell,0); | 350 | edituserDialog->shellComboBox->insertItem(accounts->pw_shell,0); |
351 | edituserDialog->shellComboBox->setCurrentItem(0); | 351 | edituserDialog->shellComboBox->setCurrentItem(0); |
352 | } | 352 | } |
353 | // Select the primary group for this user. | 353 | // Select the primary group for this user. |
354 | for(int i=0;i<edituserDialog->groupComboBox->count();++i) | 354 | for(int i=0;i<edituserDialog->groupComboBox->count();++i) |
355 | { | 355 | { |
356 | if(accounts->gr_name==edituserDialog->groupComboBox->text(i)) | 356 | if(accounts->gr_name==edituserDialog->groupComboBox->text(i)) |
357 | { | 357 | { |
358 | edituserDialog->groupComboBox->setCurrentItem(i); | 358 | edituserDialog->groupComboBox->setCurrentItem(i); |
359 | break; | 359 | break; |
360 | } | 360 | } |
361 | } | 361 | } |
362 | if(invalid_group) | 362 | if(invalid_group) |
363 | { | 363 | { |
364 | edituserDialog->groupComboBox->insertItem("<Undefined group>",0); | 364 | edituserDialog->groupComboBox->insertItem("<Undefined group>",0); |
365 | edituserDialog->groupComboBox->setCurrentItem(0); | 365 | edituserDialog->groupComboBox->setCurrentItem(0); |
366 | } | 366 | } |
367 | 367 | ||
368 | // Select the groups in the listview, to which the user belongs. | 368 | // Select the groups in the listview, to which the user belongs. |
369 | QCheckListItem *temp; | 369 | QCheckListItem *temp; |
370 | // 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. | 370 | // 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 | QRegExp userRegExp(QString("[:,]%1$").arg(username)); // The end of line variant. | 371 | QRegExp userRegExp(QString("[:,]%1$").arg(username)); // The end of line variant. |
372 | QStringList tempList=accounts->groupStringList.grep(userRegExp); // Find all entries in the group database, that the user is a member of. | 372 | QStringList tempList=accounts->groupStringList.grep(userRegExp); // Find all entries in the group database, that the user is a member of. |
373 | for(QStringList::Iterator it=tempList.begin(); it!=tempList.end(); ++it) | 373 | for(QStringList::Iterator it=tempList.begin(); it!=tempList.end(); ++it) |
374 | { // Iterate over all of them. | 374 | { // Iterate over all of them. |
375 | owarn << *it << oendl; | 375 | owarn << *it << oendl; |
376 | QListViewItemIterator lvit( edituserDialog->groupsListView ); // Compare to all groups. | 376 | QListViewItemIterator lvit( edituserDialog->groupsListView ); // Compare to all groups. |
377 | for ( ; lvit.current(); ++lvit ) | 377 | for ( ; lvit.current(); ++lvit ) |
378 | { | 378 | { |
379 | if(lvit.current()->text(0)==(*it).left((*it).find(":"))) | 379 | if(lvit.current()->text(0)==(*it).left((*it).find(":"))) |
380 | { | 380 | { |
381 | temp=(QCheckListItem*)lvit.current(); | 381 | temp=(QCheckListItem*)lvit.current(); |
382 | temp->setOn(true); // If we find a line with that groupname, select it.; | 382 | temp->setOn(true); // If we find a line with that groupname, select it.; |
383 | } | 383 | } |
384 | } | 384 | } |
385 | } | 385 | } |
386 | userRegExp=QRegExp(QString("[:,]%1,").arg(username)); // And the other one. (not end of line.) | 386 | userRegExp=QRegExp(QString("[:,]%1,").arg(username)); // And the other one. (not end of line.) |
387 | tempList=accounts->groupStringList.grep(userRegExp); // Find all entries in the group database, that the user is a member of. | 387 | tempList=accounts->groupStringList.grep(userRegExp); // Find all entries in the group database, that the user is a member of. |
388 | for(QStringList::Iterator it=tempList.begin(); it!=tempList.end(); ++it) | 388 | for(QStringList::Iterator it=tempList.begin(); it!=tempList.end(); ++it) |
389 | { // Iterate over all of them. | 389 | { // Iterate over all of them. |
390 | owarn << *it << oendl; | 390 | owarn << *it << oendl; |
391 | QListViewItemIterator lvit( edituserDialog->groupsListView ); // Compare to all groups. | 391 | QListViewItemIterator lvit( edituserDialog->groupsListView ); // Compare to all groups. |
392 | for ( ; lvit.current(); ++lvit ) | 392 | for ( ; lvit.current(); ++lvit ) |
393 | { | 393 | { |
394 | if(lvit.current()->text(0)==(*it).left((*it).find(":"))) | 394 | if(lvit.current()->text(0)==(*it).left((*it).find(":"))) |
395 | { | 395 | { |
396 | temp=(QCheckListItem*)lvit.current(); | 396 | temp=(QCheckListItem*)lvit.current(); |
397 | temp->setOn(true); // If we find a line with that groupname, select it.; | 397 | temp->setOn(true); // If we find a line with that groupname, select it.; |
398 | } | 398 | } |
399 | } | 399 | } |
400 | } | 400 | } |
401 | 401 | ||
402 | if(!(edituserDialog->exec())) return false; // SHOW THE DIALOG! | 402 | if(!(edituserDialog->exec())) return false; // SHOW THE DIALOG! |
403 | 403 | ||
404 | accounts->findUser(username); // Fill user variables in 'acccounts' object. | 404 | accounts->findUser(username); // Fill user variables in 'acccounts' object. |
405 | accounts->pw_name=edituserDialog->loginLineEdit->text(); | 405 | accounts->pw_name=edituserDialog->loginLineEdit->text(); |
406 | // Has the password been changed ? Make a new "crypt":ed password. | 406 | // Has the password been changed ? Make a new "crypt":ed password. |
407 | if(edituserDialog->passwordLineEdit->text()!="........") accounts->pw_passwd=crypt(edituserDialog->passwordLineEdit->text(), accounts->crypt_make_salt()); | 407 | if(edituserDialog->passwordLineEdit->text()!="........") accounts->pw_passwd=crypt(edituserDialog->passwordLineEdit->text(), accounts->crypt_make_salt()); |
408 | 408 | ||
409 | // Set all variables in accounts object, that will be used when calling 'updateUser()' | 409 | // Set all variables in accounts object, that will be used when calling 'updateUser()' |
410 | accounts->pw_uid=edituserDialog->uidLineEdit->text().toInt(); | 410 | accounts->pw_uid=edituserDialog->uidLineEdit->text().toInt(); |
411 | if(accounts->findGroup(edituserDialog->groupComboBox->currentText())) | 411 | if(accounts->findGroup(edituserDialog->groupComboBox->currentText())) |
412 | { // Fill all group variables in 'accounts' object. | 412 | { // Fill all group variables in 'accounts' object. |
413 | accounts->pw_gid=accounts->gr_gid; // Only do this if the group is a valid group (ie. "<Undefined group>"), otherwise keep the old group. | 413 | 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 | } | 414 | } |
415 | accounts->pw_gecos=edituserDialog->gecosLineEdit->text(); | 415 | accounts->pw_gecos=edituserDialog->gecosLineEdit->text(); |
416 | accounts->pw_shell=edituserDialog->shellComboBox->currentText(); | 416 | accounts->pw_shell=edituserDialog->shellComboBox->currentText(); |
417 | // Update userinfo, using the information stored in the user variables stored in the accounts object. | 417 | // Update userinfo, using the information stored in the user variables stored in the accounts object. |
418 | accounts->updateUser(username); | 418 | accounts->updateUser(username); |
419 | 419 | ||
420 | // Remove user from all groups he/she is a member of. (could be done in a better way I guess, this was simple though.) | 420 | // 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 | for(QStringList::Iterator it=tempList.begin(); it!=tempList.end(); ++it) | 421 | for(QStringList::Iterator it=tempList.begin(); it!=tempList.end(); ++it) |
422 | { | 422 | { |
423 | accounts->delGroupMember((*it).left((*it).find(":")),username); | 423 | accounts->delGroupMember((*it).left((*it).find(":")),username); |
424 | } | 424 | } |
425 | 425 | ||
426 | // Add User to additional groups that he/she is a member of. | 426 | // Add User to additional groups that he/she is a member of. |
427 | QListViewItemIterator it( edituserDialog->groupsListView ); | 427 | QListViewItemIterator it( edituserDialog->groupsListView ); |
428 | for ( ; it.current(); ++it ) | 428 | for ( ; it.current(); ++it ) |
429 | { | 429 | { |
430 | temp=(QCheckListItem*)it.current(); | 430 | temp=(QCheckListItem*)it.current(); |
431 | if ( temp->isOn() ) | 431 | if ( temp->isOn() ) |
432 | accounts->addGroupMember(it.current()->text(0),edituserDialog->loginLineEdit->text()); | 432 | accounts->addGroupMember(it.current()->text(0),edituserDialog->loginLineEdit->text()); |
433 | } | 433 | } |
434 | 434 | ||
435 | // Copy image to pics/users/ | 435 | // Copy image to pics/users/ |
436 | if(!(edituserDialog->userImage.isNull())) | 436 | if(!(edituserDialog->userImage.isNull())) |
437 | { | 437 | { |
438 | QDir d; | 438 | QDir d; |
439 | if(!(d.exists("/opt/QtPalmtop/pics/users"))) | 439 | if(!(d.exists(QPEApplication::qpeDir()+"pics/users"))) |
440 | { | 440 | { |
441 | d.mkdir("/opt/QtPalmtop/pics/users"); | 441 | d.mkdir(QPEApplication::qpeDir()+"pics/users"); |
442 | } | 442 | } |
443 | QString filename="/opt/QtPalmtop/pics/users/"+accounts->pw_name+".png"; | 443 | QString filename=QPEApplication::qpeDir()+"pics/users/"+accounts->pw_name+".png"; |
444 | // edituserDialog->userImage=edituserDialog->userImage.smoothScale(48,48); | 444 | // edituserDialog->userImage=edituserDialog->userImage.smoothScale(48,48); |
445 | edituserDialog->userImage.save(filename,"PNG"); | 445 | edituserDialog->userImage.save(filename,"PNG"); |
446 | } | 446 | } |
447 | return true; | 447 | return true; |
448 | } | 448 | } |
449 | 449 | ||
450 | /** | 450 | /** |
451 | * "OK" has been clicked. Verify some information before closing the dialog. | 451 | * "OK" has been clicked. Verify some information before closing the dialog. |
452 | * | 452 | * |
453 | */ | 453 | */ |
454 | void UserDialog::accept() | 454 | void UserDialog::accept() |
455 | { | 455 | { |
456 | // Add checking... valid username? username taken? | 456 | // Add checking... valid username? username taken? |
457 | if(loginLineEdit->text().isEmpty()) | 457 | if(loginLineEdit->text().isEmpty()) |
458 | { | 458 | { |
459 | QMessageBox::information(0,"Empty Login","Please enter a login."); | 459 | QMessageBox::information(0,"Empty Login","Please enter a login."); |
460 | return; | 460 | return; |
461 | } | 461 | } |
462 | QDialog::accept(); | 462 | QDialog::accept(); |
463 | } | 463 | } |
464 | 464 | ||
465 | /** | 465 | /** |
466 | * This slot is called when the usericon is clicked, this loads (should) the iconselector. | 466 | * This slot is called when the usericon is clicked, this loads (should) the iconselector. |
467 | * | 467 | * |
468 | */ | 468 | */ |
469 | void UserDialog::clickedPicture() | 469 | void UserDialog::clickedPicture() |
470 | { | 470 | { |
471 | QString filename=OFileDialog::getOpenFileName(OFileSelector::EXTENDED, QString::null); | 471 | QString filename=OFileDialog::getOpenFileName(OFileSelector::EXTENDED, QString::null); |
472 | if(!(filename.isEmpty())) | 472 | if(!(filename.isEmpty())) |
473 | { | 473 | { |
474 | userImage.reset(); | 474 | userImage.reset(); |
475 | if(!(userImage.load(filename))) | 475 | if(!(userImage.load(filename))) |
476 | { | 476 | { |
477 | QMessageBox::information(0,"Sorry!","That icon could not be loaded.\nLoading failed on: "+filename); | 477 | QMessageBox::information(0,"Sorry!","That icon could not be loaded.\nLoading failed on: "+filename); |
478 | } | 478 | } |
479 | else | 479 | else |
480 | { | 480 | { |
481 | // userImage=userImage.smoothScale(48,48); | 481 | // userImage=userImage.smoothScale(48,48); |
482 | QPixmap *picture; | 482 | QPixmap *picture; |
483 | picture=(QPixmap *)picturePushButton->pixmap(); | 483 | picture=(QPixmap *)picturePushButton->pixmap(); |
484 | picture->convertFromImage(userImage,0); | 484 | picture->convertFromImage(userImage,0); |
485 | picturePushButton->update(); | 485 | picturePushButton->update(); |
486 | } | 486 | } |
487 | } | 487 | } |
488 | } | 488 | } |