summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/usermanager/groupdialog.cpp2
-rw-r--r--noncore/settings/usermanager/userdialog.cpp9
-rw-r--r--noncore/settings/usermanager/usermanager.cpp1
3 files changed, 3 insertions, 9 deletions
diff --git a/noncore/settings/usermanager/groupdialog.cpp b/noncore/settings/usermanager/groupdialog.cpp
index b595d31..76810be 100644
--- a/noncore/settings/usermanager/groupdialog.cpp
+++ b/noncore/settings/usermanager/groupdialog.cpp
@@ -1,106 +1,104 @@
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 "groupdialog.h" 10#include "groupdialog.h"
11 11
12#include <qlabel.h> 12#include <qlabel.h>
13#include <qlayout.h> 13#include <qlayout.h>
14#include <qmessagebox.h> 14#include <qmessagebox.h>
15 15
16#include <stdlib.h>
17
18#include "passwd.h" 16#include "passwd.h"
19 17
20GroupDialog::GroupDialog(QWidget* parent, const char* name, bool modal, WFlags fl) : QDialog(parent, name, modal, fl) { 18GroupDialog::GroupDialog(QWidget* parent, const char* name, bool modal, WFlags fl) : QDialog(parent, name, modal, fl) {
21 // GID 19 // GID
22 QLabel *gidLabel=new QLabel(this,"gid: "); 20 QLabel *gidLabel=new QLabel(this,"gid: ");
23 gidLabel->setText("GroupID: "); 21 gidLabel->setText("GroupID: ");
24 gidLineEdit=new QLineEdit(this,"gid: "); 22 gidLineEdit=new QLineEdit(this,"gid: ");
25 gidLineEdit->setEnabled(false); 23 gidLineEdit->setEnabled(false);
26 24
27 // Groupname 25 // Groupname
28 QLabel *groupnameLabel=new QLabel(this,"groupname"); 26 QLabel *groupnameLabel=new QLabel(this,"groupname");
29 groupnameLabel->setText("Groupname: "); 27 groupnameLabel->setText("Groupname: ");
30 groupnameLineEdit=new QLineEdit(this,"groupname"); 28 groupnameLineEdit=new QLineEdit(this,"groupname");
31 29
32 // Widget layout 30 // Widget layout
33 QVBoxLayout *layout=new QVBoxLayout(this); 31 QVBoxLayout *layout=new QVBoxLayout(this);
34 layout->setMargin(5); 32 layout->setMargin(5);
35 QHBoxLayout *hlayout=new QHBoxLayout(-1,"hlayout"); 33 QHBoxLayout *hlayout=new QHBoxLayout(-1,"hlayout");
36 layout->addLayout(hlayout); 34 layout->addLayout(hlayout);
37 QVBoxLayout *vlayout1=new QVBoxLayout(-1,"vlayout1"); 35 QVBoxLayout *vlayout1=new QVBoxLayout(-1,"vlayout1");
38 QVBoxLayout *vlayout2=new QVBoxLayout(-1,"vlayout2"); 36 QVBoxLayout *vlayout2=new QVBoxLayout(-1,"vlayout2");
39 // First column, labels 37 // First column, labels
40 vlayout1->addWidget(gidLabel); 38 vlayout1->addWidget(gidLabel);
41 vlayout1->addWidget(groupnameLabel); 39 vlayout1->addWidget(groupnameLabel);
42 // Second column, data 40 // Second column, data
43 vlayout2->addWidget(gidLineEdit); 41 vlayout2->addWidget(gidLineEdit);
44 vlayout2->addWidget(groupnameLineEdit); 42 vlayout2->addWidget(groupnameLineEdit);
45 hlayout->addLayout(vlayout1); 43 hlayout->addLayout(vlayout1);
46 hlayout->addLayout(vlayout2); 44 hlayout->addLayout(vlayout2);
47 layout->addSpacing(5); 45 layout->addSpacing(5);
48 46
49 //showMaximized(); 47 //showMaximized();
50} 48}
51 49
52GroupDialog::~GroupDialog() { 50GroupDialog::~GroupDialog() {
53} 51}
54 52
55bool GroupDialog::addGroup(int gid) { 53bool GroupDialog::addGroup(int gid) {
56 GroupDialog *addgroupDialog=new GroupDialog();// Make a groupinfo dialog. 54 GroupDialog *addgroupDialog=new GroupDialog();// Make a groupinfo dialog.
57 addgroupDialog->setCaption(tr("Add Group"));// Set the caption. 55 addgroupDialog->setCaption(tr("Add Group"));// Set the caption.
58 addgroupDialog->gidLineEdit->setText(QString::number(gid));// Set the next available gid. 56 addgroupDialog->gidLineEdit->setText(QString::number(gid));// Set the next available gid.
59 if(!(addgroupDialog->exec())) return false;// View the dialog, and only continue if 'ok' was pressed. 57 if(!(addgroupDialog->exec())) return false;// View the dialog, and only continue if 'ok' was pressed.
60 if(!(accounts->addGroup(addgroupDialog->groupnameLineEdit->text(),addgroupDialog->gidLineEdit->text().toInt()))) {// Try to add the group. 58 if(!(accounts->addGroup(addgroupDialog->groupnameLineEdit->text(),addgroupDialog->gidLineEdit->text().toInt()))) {// Try to add the group.
61 QMessageBox::information(0,"Ooops!","Something went wrong.\nUnable to add group."); 59 QMessageBox::information(0,"Ooops!","Something went wrong.\nUnable to add group.");
62 return false; 60 return false;
63 } 61 }
64 return true; 62 return true;
65} 63}
66 64
67bool GroupDialog::editGroup(int gid) { 65bool GroupDialog::editGroup(int gid) {
68 GroupDialog *addgroupDialog=new GroupDialog();// Create the groupinfo dialog. 66 GroupDialog *addgroupDialog=new GroupDialog();// Create the groupinfo dialog.
69 accounts->findGroup(gid);// Locate the group in the database, and fill out the variables in 'accounts'. 67 accounts->findGroup(gid);// Locate the group in the database, and fill out the variables in 'accounts'.
70 // Fill out the widgets with previous data for this group. 68 // Fill out the widgets with previous data for this group.
71 addgroupDialog->setCaption(tr("Edit Group")); 69 addgroupDialog->setCaption(tr("Edit Group"));
72 addgroupDialog->gidLineEdit->setText(QString::number(accounts->gr_gid)); 70 addgroupDialog->gidLineEdit->setText(QString::number(accounts->gr_gid));
73 addgroupDialog->groupnameLineEdit->setText(accounts->gr_name); 71 addgroupDialog->groupnameLineEdit->setText(accounts->gr_name);
74 if(!(addgroupDialog->exec())) return false;// View the dialog, and only continue if 'ok' was pressed. 72 if(!(addgroupDialog->exec())) return false;// View the dialog, and only continue if 'ok' was pressed.
75 accounts->findGroup(gid);// Locate the group, and fill out the variables in 'accounts' with all info about the group. 73 accounts->findGroup(gid);// Locate the group, and fill out the variables in 'accounts' with all info about the group.
76 accounts->gr_name=addgroupDialog->groupnameLineEdit->text();// Change the name 74 accounts->gr_name=addgroupDialog->groupnameLineEdit->text();// Change the name
77 accounts->gr_gid=addgroupDialog->gidLineEdit->text().toInt();// Change the GID. (Unneeded as its disabled right now.) 75 accounts->gr_gid=addgroupDialog->gidLineEdit->text().toInt();// Change the GID. (Unneeded as its disabled right now.)
78 accounts->updateGroup(gid);// Update the database with the variables (gr_name,gr_gid,gr_mem) in 'accounts'. 76 accounts->updateGroup(gid);// Update the database with the variables (gr_name,gr_gid,gr_mem) in 'accounts'.
79 return true; 77 return true;
80} 78}
81 79
82bool GroupDialog::delGroup(const char *groupname) { 80bool GroupDialog::delGroup(const char *groupname) {
83 if((accounts->findGroup(groupname))) {// Does this group exist? 81 if((accounts->findGroup(groupname))) {// Does this group exist?
84 if(!(accounts->delGroup(groupname))) {// Try to delete it. 82 if(!(accounts->delGroup(groupname))) {// Try to delete it.
85 QMessageBox::information(0,"Ooops!","Something went wrong\nUnable to delete group: "+QString(groupname)+"."); 83 QMessageBox::information(0,"Ooops!","Something went wrong\nUnable to delete group: "+QString(groupname)+".");
86 } 84 }
87 } else { 85 } else {
88 QMessageBox::information(0,"Invalid Groupname","That groupname ("+QString(groupname)+")does not exist."); 86 QMessageBox::information(0,"Invalid Groupname","That groupname ("+QString(groupname)+")does not exist.");
89 return false; 87 return false;
90 } 88 }
91 return true; 89 return true;
92} 90}
93 91
94void GroupDialog::accept() { 92void GroupDialog::accept() {
95 // Check if gid is already taken. 93 // Check if gid is already taken.
96 //if((accounts->findGroup(gidLineEdit->text().toInt()))) { 94 //if((accounts->findGroup(gidLineEdit->text().toInt()))) {
97 // QMessageBox::information(this,"GroupID taken","That GroupID is already taken."); 95 // QMessageBox::information(this,"GroupID taken","That GroupID is already taken.");
98 // return; 96 // return;
99 //} 97 //}
100 // Check if groupname is already taken. 98 // Check if groupname is already taken.
101 if((accounts->findGroup(groupnameLineEdit->text()))) { 99 if((accounts->findGroup(groupnameLineEdit->text()))) {
102 QMessageBox::information(0,"Groupname taken","That groupname is already taken."); 100 QMessageBox::information(0,"Groupname taken","That groupname is already taken.");
103 return;// Don't close the dialog. 101 return;// Don't close the dialog.
104 } 102 }
105 QDialog::accept(); 103 QDialog::accept();
106} 104}
diff --git a/noncore/settings/usermanager/userdialog.cpp b/noncore/settings/usermanager/userdialog.cpp
index 19b0e84..d87a005 100644
--- a/noncore/settings/usermanager/userdialog.cpp
+++ b/noncore/settings/usermanager/userdialog.cpp
@@ -1,250 +1,247 @@
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 11
12#include <qlayout.h> 12#include <qlayout.h>
13#include <qlabel.h> 13#include <qlabel.h>
14#include <qmessagebox.h> 14#include <qmessagebox.h>
15#include <qfile.h> 15#include <qfile.h>
16 16
17#include <stdlib.h>
18
19#include <stdio.h>
20#include <sys/types.h> 17#include <sys/types.h>
21#include <sys/wait.h> 18#include <sys/wait.h>
22#include <unistd.h> 19#include <unistd.h>
23#include <signal.h> 20#include <signal.h>
24 21
25#include "passwd.h" 22#include "passwd.h"
26 23
27#include <opie/odevice.h> 24#include <opie/odevice.h>
28using namespace Opie; 25using namespace Opie;
29 26
30 27
31/** 28/**
32 * UserDialog constructor. Setup the dialog, fill the groupComboBox & groupsListView with all groups. 29 * UserDialog constructor. Setup the dialog, fill the groupComboBox & groupsListView with all groups.
33 * 30 *
34 */ 31 */
35UserDialog::UserDialog(int viewmode, QWidget* parent, const char* name, bool modal, WFlags fl) : QDialog(parent, name, modal, fl) { 32UserDialog::UserDialog(int viewmode, QWidget* parent, const char* name, bool modal, WFlags fl) : QDialog(parent, name, modal, fl) {
36 vm=viewmode; 33 vm=viewmode;
37 QVBoxLayout *layout = new QVBoxLayout(this); 34 QVBoxLayout *layout = new QVBoxLayout(this);
38 myTabWidget=new QTabWidget(this,"User Tab Widget"); 35 myTabWidget=new QTabWidget(this,"User Tab Widget");
39 layout->addWidget(myTabWidget); 36 layout->addWidget(myTabWidget);
40 setupTab1(); 37 setupTab1();
41 setupTab2(); 38 setupTab2();
42 39
43 accounts->groupStringList.sort(); 40 accounts->groupStringList.sort();
44 // And also fill the listview & the combobox with all available groups. 41 // And also fill the listview & the combobox with all available groups.
45 for( QStringList::Iterator it = accounts->groupStringList.begin(); it!=accounts->groupStringList.end(); ++it) { 42 for( QStringList::Iterator it = accounts->groupStringList.begin(); it!=accounts->groupStringList.end(); ++it) {
46 accounts->splitGroupEntry(*it); 43 accounts->splitGroupEntry(*it);
47 if(accounts->gr_name.find(QRegExp("^#"),0)) {// Skip commented lines. 44 if(accounts->gr_name.find(QRegExp("^#"),0)) {// Skip commented lines.
48 new QCheckListItem(groupsListView,accounts->gr_name,QCheckListItem::CheckBox); 45 new QCheckListItem(groupsListView,accounts->gr_name,QCheckListItem::CheckBox);
49 groupComboBox->insertItem(accounts->gr_name); 46 groupComboBox->insertItem(accounts->gr_name);
50 } 47 }
51 } 48 }
52 showMaximized(); 49 showMaximized();
53} 50}
54 51
55/** 52/**
56 * Empty destructor. 53 * Empty destructor.
57 * 54 *
58 */ 55 */
59UserDialog::~UserDialog() { 56UserDialog::~UserDialog() {
60} 57}
61 58
62/** 59/**
63 * Creates the first tab, all userinfo is here. 60 * Creates the first tab, all userinfo is here.
64 * 61 *
65 */ 62 */
66void UserDialog::setupTab1() { 63void UserDialog::setupTab1() {
67 QPixmap mypixmap; 64 QPixmap mypixmap;
68 QWidget *tabpage = new QWidget(myTabWidget,"page1"); 65 QWidget *tabpage = new QWidget(myTabWidget,"page1");
69 QVBoxLayout *layout = new QVBoxLayout(tabpage); 66 QVBoxLayout *layout = new QVBoxLayout(tabpage);
70 layout->setMargin(5); 67 layout->setMargin(5);
71 68
72 // Picture 69 // Picture
73 picturePushButton = new QPushButton(tabpage,"Label"); 70 picturePushButton = new QPushButton(tabpage,"Label");
74 picturePushButton->setMinimumSize(48,48); 71 picturePushButton->setMinimumSize(48,48);
75 picturePushButton->setMaximumSize(48,48); 72 picturePushButton->setMaximumSize(48,48);
76 picturePushButton->setPixmap(Resource::loadPixmap("usermanager/usericon"));// Load default usericon. 73 picturePushButton->setPixmap(Resource::loadPixmap("usermanager/usericon"));// Load default usericon.
77 connect(picturePushButton,SIGNAL(clicked()),this,SLOT(clickedPicture()));// Clicking the picture should invoke pictureselector. 74 connect(picturePushButton,SIGNAL(clicked()),this,SLOT(clickedPicture()));// Clicking the picture should invoke pictureselector.
78 75
79 // Login 76 // Login
80 QLabel *loginLabel=new QLabel(tabpage,"Login: "); 77 QLabel *loginLabel=new QLabel(tabpage,"Login: ");
81 loginLabel->setText("Login: "); 78 loginLabel->setText("Login: ");
82 loginLineEdit=new QLineEdit(tabpage,"Login: "); 79 loginLineEdit=new QLineEdit(tabpage,"Login: ");
83 80
84 // UID 81 // UID
85 QLabel *uidLabel=new QLabel(tabpage,"uid: "); 82 QLabel *uidLabel=new QLabel(tabpage,"uid: ");
86 uidLabel->setText("UserID: "); 83 uidLabel->setText("UserID: ");
87 uidLineEdit=new QLineEdit(tabpage,"uid: "); 84 uidLineEdit=new QLineEdit(tabpage,"uid: ");
88 uidLineEdit->setEnabled(false); 85 uidLineEdit->setEnabled(false);
89 86
90 // Username (gecos) 87 // Username (gecos)
91 QLabel *gecosLabel=new QLabel(tabpage,"gecos"); 88 QLabel *gecosLabel=new QLabel(tabpage,"gecos");
92 gecosLabel->setText("Username: "); 89 gecosLabel->setText("Username: ");
93 gecosLineEdit=new QLineEdit(tabpage,"gecos"); 90 gecosLineEdit=new QLineEdit(tabpage,"gecos");
94 91
95 // Password 92 // Password
96 QLabel *passwordLabel=new QLabel(tabpage,"password"); 93 QLabel *passwordLabel=new QLabel(tabpage,"password");
97 passwordLabel->setText("Password: "); 94 passwordLabel->setText("Password: ");
98 passwordLineEdit=new QLineEdit(tabpage,"password"); 95 passwordLineEdit=new QLineEdit(tabpage,"password");
99 passwordLineEdit->setEchoMode(QLineEdit::Password); 96 passwordLineEdit->setEchoMode(QLineEdit::Password);
100 97
101 // Shell 98 // Shell
102 QLabel *shellLabel=new QLabel(tabpage,"shell"); 99 QLabel *shellLabel=new QLabel(tabpage,"shell");
103 shellLabel->setText("Shell: "); 100 shellLabel->setText("Shell: ");
104 shellComboBox=new QComboBox(tabpage,"shell"); 101 shellComboBox=new QComboBox(tabpage,"shell");
105 shellComboBox->setEditable(true); 102 shellComboBox->setEditable(true);
106 shellComboBox->insertItem("/bin/sh"); 103 shellComboBox->insertItem("/bin/sh");
107 shellComboBox->insertItem("/bin/ash"); 104 shellComboBox->insertItem("/bin/ash");
108 shellComboBox->insertItem("/bin/false"); 105 shellComboBox->insertItem("/bin/false");
109 106
110 // Primary Group 107 // Primary Group
111 QLabel *groupLabel=new QLabel(tabpage,"group"); 108 QLabel *groupLabel=new QLabel(tabpage,"group");
112 groupLabel->setText("Primary group: "); 109 groupLabel->setText("Primary group: ");
113 groupComboBox=new QComboBox(tabpage,"PrimaryGroup"); 110 groupComboBox=new QComboBox(tabpage,"PrimaryGroup");
114 111
115 if(vm==VIEWMODE_NEW) { 112 if(vm==VIEWMODE_NEW) {
116 // Copy /etc/skel 113 // Copy /etc/skel
117 skelLabel=new QLabel(tabpage,"skel"); 114 skelLabel=new QLabel(tabpage,"skel");
118 skelLabel->setText("Copy /etc/skel: "); 115 skelLabel->setText("Copy /etc/skel: ");
119 skelCheckBox=new QCheckBox(tabpage); 116 skelCheckBox=new QCheckBox(tabpage);
120 skelCheckBox->setChecked(true); 117 skelCheckBox->setChecked(true);
121 } 118 }
122 119
123 // Widget layout 120 // Widget layout
124 QHBoxLayout *hlayout=new QHBoxLayout(-1,"hlayout"); 121 QHBoxLayout *hlayout=new QHBoxLayout(-1,"hlayout");
125 layout->addWidget(picturePushButton); 122 layout->addWidget(picturePushButton);
126 layout->addSpacing(5); 123 layout->addSpacing(5);
127 layout->addLayout(hlayout); 124 layout->addLayout(hlayout);
128 QVBoxLayout *vlayout1=new QVBoxLayout(-1,"vlayout1"); 125 QVBoxLayout *vlayout1=new QVBoxLayout(-1,"vlayout1");
129 QVBoxLayout *vlayout2=new QVBoxLayout(-1,"vlayout2"); 126 QVBoxLayout *vlayout2=new QVBoxLayout(-1,"vlayout2");
130 // First column, labels 127 // First column, labels
131 vlayout1->addWidget(loginLabel); 128 vlayout1->addWidget(loginLabel);
132 vlayout1->addSpacing(5); 129 vlayout1->addSpacing(5);
133 vlayout1->addWidget(uidLabel); 130 vlayout1->addWidget(uidLabel);
134 vlayout1->addSpacing(5); 131 vlayout1->addSpacing(5);
135 vlayout1->addWidget(gecosLabel); 132 vlayout1->addWidget(gecosLabel);
136 vlayout1->addSpacing(5); 133 vlayout1->addSpacing(5);
137 vlayout1->addWidget(passwordLabel); 134 vlayout1->addWidget(passwordLabel);
138 vlayout1->addSpacing(5); 135 vlayout1->addSpacing(5);
139 vlayout1->addWidget(shellLabel); 136 vlayout1->addWidget(shellLabel);
140 vlayout1->addSpacing(5); 137 vlayout1->addSpacing(5);
141 vlayout1->addWidget(groupLabel); 138 vlayout1->addWidget(groupLabel);
142 if(vm==VIEWMODE_NEW) { 139 if(vm==VIEWMODE_NEW) {
143 vlayout1->addSpacing(5); 140 vlayout1->addSpacing(5);
144 vlayout1->addWidget(skelLabel); 141 vlayout1->addWidget(skelLabel);
145 } 142 }
146 // Second column, data 143 // Second column, data
147 vlayout2->addWidget(loginLineEdit); 144 vlayout2->addWidget(loginLineEdit);
148 vlayout2->addSpacing(5); 145 vlayout2->addSpacing(5);
149 vlayout2->addWidget(uidLineEdit); 146 vlayout2->addWidget(uidLineEdit);
150 vlayout2->addSpacing(5); 147 vlayout2->addSpacing(5);
151 vlayout2->addWidget(gecosLineEdit); 148 vlayout2->addWidget(gecosLineEdit);
152 vlayout2->addSpacing(5); 149 vlayout2->addSpacing(5);
153 vlayout2->addWidget(passwordLineEdit); 150 vlayout2->addWidget(passwordLineEdit);
154 vlayout2->addSpacing(5); 151 vlayout2->addSpacing(5);
155 vlayout2->addWidget(shellComboBox); 152 vlayout2->addWidget(shellComboBox);
156 vlayout2->addSpacing(5); 153 vlayout2->addSpacing(5);
157 vlayout2->addWidget(groupComboBox); 154 vlayout2->addWidget(groupComboBox);
158 if(vm==VIEWMODE_NEW) { 155 if(vm==VIEWMODE_NEW) {
159 vlayout2->addSpacing(5); 156 vlayout2->addSpacing(5);
160 vlayout2->addWidget(skelCheckBox); 157 vlayout2->addWidget(skelCheckBox);
161 } 158 }
162 hlayout->addLayout(vlayout1); 159 hlayout->addLayout(vlayout1);
163 hlayout->addLayout(vlayout2); 160 hlayout->addLayout(vlayout2);
164 161
165 myTabWidget->addTab(tabpage,"User Info"); 162 myTabWidget->addTab(tabpage,"User Info");
166} 163}
167 164
168/** 165/**
169 * Creates the second tab containing additional groups for the user. 166 * Creates the second tab containing additional groups for the user.
170 * 167 *
171 */ 168 */
172void UserDialog::setupTab2() { 169void UserDialog::setupTab2() {
173 QWidget *tabpage = new QWidget(myTabWidget,"page2"); 170 QWidget *tabpage = new QWidget(myTabWidget,"page2");
174 QVBoxLayout *layout = new QVBoxLayout(tabpage); 171 QVBoxLayout *layout = new QVBoxLayout(tabpage);
175 layout->setMargin(5); 172 layout->setMargin(5);
176 173
177 // Additional groups 174 // Additional groups
178 groupsListView=new QListView(tabpage,"groups"); 175 groupsListView=new QListView(tabpage,"groups");
179 groupsListView->addColumn("Additional groups"); 176 groupsListView->addColumn("Additional groups");
180 groupsListView->setColumnWidthMode(0,QListView::Maximum); 177 groupsListView->setColumnWidthMode(0,QListView::Maximum);
181 groupsListView->setMultiSelection(false); 178 groupsListView->setMultiSelection(false);
182 groupsListView->setAllColumnsShowFocus(false); 179 groupsListView->setAllColumnsShowFocus(false);
183 180
184 layout->addSpacing(5); 181 layout->addSpacing(5);
185 // Grouplist 182 // Grouplist
186 layout->addWidget(groupsListView); 183 layout->addWidget(groupsListView);
187 184
188 myTabWidget->addTab(tabpage,"User Groups"); 185 myTabWidget->addTab(tabpage,"User Groups");
189} 186}
190 187
191/** 188/**
192 * Static function that creates the userinfo dialog. 189 * Static function that creates the userinfo dialog.
193 * The user will be prompted to add a user. 190 * The user will be prompted to add a user.
194 * 191 *
195 * @param uid This is a suggested available UID. 192 * @param uid This is a suggested available UID.
196 * @param gid This is a suggested available GID. 193 * @param gid This is a suggested available GID.
197 * 194 *
198 * @return <code>true</code> if the user was successfully added, otherwise <code>false</code>. 195 * @return <code>true</code> if the user was successfully added, otherwise <code>false</code>.
199 * 196 *
200 */ 197 */
201bool UserDialog::addUser(int uid, int gid) { 198bool UserDialog::addUser(int uid, int gid) {
202 QCheckListItem *temp; 199 QCheckListItem *temp;
203 QFile ozTest; 200 QFile ozTest;
204 int oz=false; 201 int oz=false;
205 if(ODevice::inst()->system()==System_OpenZaurus) oz=true; 202 if(ODevice::inst()->system()==System_OpenZaurus) oz=true;
206 // viewmode is a workaround for a bug in qte-2.3.4 that gives bus error on manipulating adduserDialog's widgets here. 203 // viewmode is a workaround for a bug in qte-2.3.4 that gives bus error on manipulating adduserDialog's widgets here.
207 UserDialog *adduserDialog=new UserDialog(VIEWMODE_NEW); 204 UserDialog *adduserDialog=new UserDialog(VIEWMODE_NEW);
208 adduserDialog->setCaption(tr("Add User")); 205 adduserDialog->setCaption(tr("Add User"));
209 adduserDialog->userID=uid;// Set next available UID as default uid. 206 adduserDialog->userID=uid;// Set next available UID as default uid.
210 adduserDialog->groupID=gid;// Set next available GID as default gid. 207 adduserDialog->groupID=gid;// Set next available GID as default gid.
211 // Insert default group into groupComboBox 208 // Insert default group into groupComboBox
212 adduserDialog->groupComboBox->insertItem("<create new group>",0); 209 adduserDialog->groupComboBox->insertItem("<create new group>",0);
213 adduserDialog->uidLineEdit->setText(QString::number(uid)); 210 adduserDialog->uidLineEdit->setText(QString::number(uid));
214 // If we're running on OZ, add new users to some default groups. 211 // If we're running on OZ, add new users to some default groups.
215 if(oz) { 212 if(oz) {
216 QListViewItemIterator iter( adduserDialog->groupsListView ); 213 QListViewItemIterator iter( adduserDialog->groupsListView );
217 for ( ; iter.current(); ++iter ) { 214 for ( ; iter.current(); ++iter ) {
218 temp=(QCheckListItem*)iter.current(); 215 temp=(QCheckListItem*)iter.current();
219 if (temp->text()=="video") temp->setOn(true); 216 if (temp->text()=="video") temp->setOn(true);
220 if (temp->text()=="audio") temp->setOn(true); 217 if (temp->text()=="audio") temp->setOn(true);
221 if (temp->text()=="time") temp->setOn(true); 218 if (temp->text()=="time") temp->setOn(true);
222 if (temp->text()=="power") temp->setOn(true); 219 if (temp->text()=="power") temp->setOn(true);
223 if (temp->text()=="input") temp->setOn(true); 220 if (temp->text()=="input") temp->setOn(true);
224 if (temp->text()=="sharp") temp->setOn(true); 221 if (temp->text()=="sharp") temp->setOn(true);
225 if (temp->text()=="tty") temp->setOn(true); 222 if (temp->text()=="tty") temp->setOn(true);
226 } 223 }
227 } 224 }
228 // Show the dialog! 225 // Show the dialog!
229 if(!(adduserDialog->exec())) return false; 226 if(!(adduserDialog->exec())) return false;
230 if((adduserDialog->groupComboBox->currentItem()!=0)) { 227 if((adduserDialog->groupComboBox->currentItem()!=0)) {
231 accounts->findGroup(adduserDialog->groupComboBox->currentText()); 228 accounts->findGroup(adduserDialog->groupComboBox->currentText());
232 adduserDialog->groupID=accounts->gr_gid; 229 adduserDialog->groupID=accounts->gr_gid;
233 qWarning(QString::number(accounts->gr_gid)); 230 qWarning(QString::number(accounts->gr_gid));
234 } 231 }
235 if(!(accounts->addUser(adduserDialog->loginLineEdit->text(), adduserDialog->passwordLineEdit->text(), 232 if(!(accounts->addUser(adduserDialog->loginLineEdit->text(), adduserDialog->passwordLineEdit->text(),
236 adduserDialog->uidLineEdit->text().toInt(), adduserDialog->groupID, adduserDialog->gecosLineEdit->text(), 233 adduserDialog->uidLineEdit->text().toInt(), adduserDialog->groupID, adduserDialog->gecosLineEdit->text(),
237 QString("/home/")+adduserDialog->loginLineEdit->text() , adduserDialog->shellComboBox->currentText()))) { 234 QString("/home/")+adduserDialog->loginLineEdit->text() , adduserDialog->shellComboBox->currentText()))) {
238 QMessageBox::information(0,"Ooops!","Something went wrong!\nUnable to add user."); 235 QMessageBox::information(0,"Ooops!","Something went wrong!\nUnable to add user.");
239 return false; 236 return false;
240 } 237 }
241 238
242 // Add User to additional groups. 239 // Add User to additional groups.
243 QListViewItemIterator it( adduserDialog->groupsListView ); 240 QListViewItemIterator it( adduserDialog->groupsListView );
244 for ( ; it.current(); ++it ) { 241 for ( ; it.current(); ++it ) {
245 temp=(QCheckListItem*)it.current(); 242 temp=(QCheckListItem*)it.current();
246 if (temp->isOn() ) 243 if (temp->isOn() )
247 accounts->addGroupMember(it.current()->text(0),adduserDialog->loginLineEdit->text()); 244 accounts->addGroupMember(it.current()->text(0),adduserDialog->loginLineEdit->text());
248 } 245 }
249 // Copy image to pics/users/ 246 // Copy image to pics/users/
250 if(!(adduserDialog->userImage.isNull())) { 247 if(!(adduserDialog->userImage.isNull())) {
diff --git a/noncore/settings/usermanager/usermanager.cpp b/noncore/settings/usermanager/usermanager.cpp
index 5c90525..5411995 100644
--- a/noncore/settings/usermanager/usermanager.cpp
+++ b/noncore/settings/usermanager/usermanager.cpp
@@ -1,141 +1,140 @@
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 "usermanager.h" 10#include "usermanager.h"
11 11
12#include <qlayout.h> 12#include <qlayout.h>
13#include <stdio.h>
14 13
15#include <qmessagebox.h> 14#include <qmessagebox.h>
16#include <qfile.h> 15#include <qfile.h>
17#include <qpe/resource.h> 16#include <qpe/resource.h>
18 17
19#include <qregexp.h> 18#include <qregexp.h>
20 19
21/** 20/**
22 * The mainwindow constructor. 21 * The mainwindow constructor.
23 * 22 *
24 * @param QWidget *parent 23 * @param QWidget *parent
25 * @param const char *name 24 * @param const char *name
26 * @ param WFlags fl 25 * @ param WFlags fl
27 * 26 *
28 */ 27 */
29UserConfig::UserConfig(QWidget* parent, const char* name, WFlags fl) : QMainWindow(parent, name, fl) { 28UserConfig::UserConfig(QWidget* parent, const char* name, WFlags fl) : QMainWindow(parent, name, fl) {
30 setCaption(tr("Opie User Manager")); 29 setCaption(tr("Opie User Manager"));
31 30
32 // Create an instance of the global object 'accounts'. This holds all user/group info, and functions to modify them. 31 // Create an instance of the global object 'accounts'. This holds all user/group info, and functions to modify them.
33 accounts=new Passwd(); 32 accounts=new Passwd();
34 accounts->open();// This actually loads the files /etc/passwd & /etc/group into memory. 33 accounts->open();// This actually loads the files /etc/passwd & /etc/group into memory.
35 34
36 // Create the toolbar. 35 // Create the toolbar.
37 QToolBar *toolbar = new QToolBar(this,"Toolbar"); 36 QToolBar *toolbar = new QToolBar(this,"Toolbar");
38 toolbar->setHorizontalStretchable(1); // Is there any other way to get the toolbar to stretch of the full screen!? 37 toolbar->setHorizontalStretchable(1); // Is there any other way to get the toolbar to stretch of the full screen!?
39 adduserToolButton = new QToolButton(Resource::loadPixmap("usermanager/adduser"),"Add User",0,this,SLOT(addUser()),toolbar,"Add User"); 38 adduserToolButton = new QToolButton(Resource::loadPixmap("usermanager/adduser"),"Add User",0,this,SLOT(addUser()),toolbar,"Add User");
40 edituserToolButton = new QToolButton(Resource::loadPixmap("usermanager/edituser"),"Edit User",0,this,SLOT(editUser()),toolbar,"Edit User"); 39 edituserToolButton = new QToolButton(Resource::loadPixmap("usermanager/edituser"),"Edit User",0,this,SLOT(editUser()),toolbar,"Edit User");
41 deleteuserToolButton = new QToolButton(Resource::loadPixmap("usermanager/deleteuser"),"Delete User",0,this,SLOT(delUser()),toolbar,"Delete User"); 40 deleteuserToolButton = new QToolButton(Resource::loadPixmap("usermanager/deleteuser"),"Delete User",0,this,SLOT(delUser()),toolbar,"Delete User");
42 QToolButton *userstext = new QToolButton(0,"User",0,0,0,toolbar,"User"); 41 QToolButton *userstext = new QToolButton(0,"User",0,0,0,toolbar,"User");
43 userstext->setUsesTextLabel(true); 42 userstext->setUsesTextLabel(true);
44 toolbar->addSeparator(); 43 toolbar->addSeparator();
45 addgroupToolButton = new QToolButton(Resource::loadPixmap("usermanager/addgroup"),"Add Group",0,this,SLOT(addGroup()),toolbar,"Add Group"); 44 addgroupToolButton = new QToolButton(Resource::loadPixmap("usermanager/addgroup"),"Add Group",0,this,SLOT(addGroup()),toolbar,"Add Group");
46 editgroupToolButton = new QToolButton(Resource::loadPixmap("usermanager/editgroup"),"Edit Group",0,this,SLOT(editGroup()),toolbar,"Edit Group"); 45 editgroupToolButton = new QToolButton(Resource::loadPixmap("usermanager/editgroup"),"Edit Group",0,this,SLOT(editGroup()),toolbar,"Edit Group");
47 deletegroupToolButton = new QToolButton(Resource::loadPixmap("usermanager/deletegroup"),"Delete Group",0,this,SLOT(delGroup()),toolbar,"Delete Group"); 46 deletegroupToolButton = new QToolButton(Resource::loadPixmap("usermanager/deletegroup"),"Delete Group",0,this,SLOT(delGroup()),toolbar,"Delete Group");
48 QToolButton *groupstext = new QToolButton(0,"Group",0,0,0,toolbar,"Group"); 47 QToolButton *groupstext = new QToolButton(0,"Group",0,0,0,toolbar,"Group");
49 groupstext->setUsesTextLabel(true); 48 groupstext->setUsesTextLabel(true);
50 addToolBar(toolbar,"myToolBar"); 49 addToolBar(toolbar,"myToolBar");
51 50
52 // Add a tabwidget and all the tabs. 51 // Add a tabwidget and all the tabs.
53 myTabWidget = new QTabWidget(this,"My Tab Widget"); 52 myTabWidget = new QTabWidget(this,"My Tab Widget");
54 setupTabAccounts(); 53 setupTabAccounts();
55 setupTabAllUsers(); 54 setupTabAllUsers();
56 setupTabAllGroups(); 55 setupTabAllGroups();
57 userPopupMenu.insertItem("Copy",0); 56 userPopupMenu.insertItem("Copy",0);
58 57
59 getUsers(); // Fill out the iconview & listview with all users. 58 getUsers(); // Fill out the iconview & listview with all users.
60 getGroups(); // Fill out the group listview with all groups. 59 getGroups(); // Fill out the group listview with all groups.
61 60
62 setCentralWidget(myTabWidget); 61 setCentralWidget(myTabWidget);
63} 62}
64 63
65UserConfig::~UserConfig() { 64UserConfig::~UserConfig() {
66 accounts->close(); 65 accounts->close();
67 delete accounts; 66 delete accounts;
68} 67}
69 68
70void UserConfig::setupTabAccounts() { 69void UserConfig::setupTabAccounts() {
71 QWidget *tabpage = new QWidget(this); 70 QWidget *tabpage = new QWidget(this);
72 QVBoxLayout *layout = new QVBoxLayout(tabpage); 71 QVBoxLayout *layout = new QVBoxLayout(tabpage);
73 layout->setMargin(5); 72 layout->setMargin(5);
74 73
75 usersIconView=new QListView(tabpage,"users"); 74 usersIconView=new QListView(tabpage,"users");
76 usersIconView->addColumn("Icon"); 75 usersIconView->addColumn("Icon");
77 usersIconView->addColumn("Username"); 76 usersIconView->addColumn("Username");
78 usersIconView->setAllColumnsShowFocus(true); 77 usersIconView->setAllColumnsShowFocus(true);
79 layout->addWidget(usersIconView); 78 layout->addWidget(usersIconView);
80 79
81 connect(usersIconView,SIGNAL(returnPressed(QListViewItem *)),this,SLOT(showUserMenu(QListViewItem *))); 80 connect(usersIconView,SIGNAL(returnPressed(QListViewItem *)),this,SLOT(showUserMenu(QListViewItem *)));
82 81
83 myTabWidget->addTab(tabpage,"Users"); 82 myTabWidget->addTab(tabpage,"Users");
84} 83}
85 84
86void UserConfig::setupTabAllUsers() { 85void UserConfig::setupTabAllUsers() {
87 QWidget *tabpage = new QWidget(this); 86 QWidget *tabpage = new QWidget(this);
88 QVBoxLayout *layout = new QVBoxLayout(tabpage); 87 QVBoxLayout *layout = new QVBoxLayout(tabpage);
89 layout->setMargin(5); 88 layout->setMargin(5);
90 89
91 usersListView=new QListView(tabpage,"allusers"); 90 usersListView=new QListView(tabpage,"allusers");
92 usersListView->addColumn("UID"); 91 usersListView->addColumn("UID");
93 usersListView->addColumn("Login"); 92 usersListView->addColumn("Login");
94 usersListView->addColumn("Username"); 93 usersListView->addColumn("Username");
95 layout->addWidget(usersListView); 94 layout->addWidget(usersListView);
96 usersListView->setSorting(1,1); 95 usersListView->setSorting(1,1);
97 usersListView->setAllColumnsShowFocus(true); 96 usersListView->setAllColumnsShowFocus(true);
98 97
99 myTabWidget->addTab(tabpage,"All Users"); 98 myTabWidget->addTab(tabpage,"All Users");
100} 99}
101 100
102void UserConfig::setupTabAllGroups() { 101void UserConfig::setupTabAllGroups() {
103 QWidget *tabpage = new QWidget(this); 102 QWidget *tabpage = new QWidget(this);
104 QVBoxLayout *layout = new QVBoxLayout(tabpage); 103 QVBoxLayout *layout = new QVBoxLayout(tabpage);
105 layout->setMargin(5); 104 layout->setMargin(5);
106 105
107 groupsListView=new QListView(tabpage,"groups"); 106 groupsListView=new QListView(tabpage,"groups");
108 groupsListView->addColumn("GID"); 107 groupsListView->addColumn("GID");
109 groupsListView->addColumn("Groupname"); 108 groupsListView->addColumn("Groupname");
110 layout->addWidget(groupsListView); 109 layout->addWidget(groupsListView);
111 groupsListView->setSorting(1,1); 110 groupsListView->setSorting(1,1);
112 groupsListView->setAllColumnsShowFocus(true); 111 groupsListView->setAllColumnsShowFocus(true);
113 112
114 myTabWidget->addTab(tabpage,"All Groups"); 113 myTabWidget->addTab(tabpage,"All Groups");
115} 114}
116void UserConfig::getUsers() { 115void UserConfig::getUsers() {
117 QString mytext; 116 QString mytext;
118 QPixmap mypixmap; 117 QPixmap mypixmap;
119 QListViewItem *listviewitem; 118 QListViewItem *listviewitem;
120 119
121 // Empty the iconview & the listview. 120 // Empty the iconview & the listview.
122 usersIconView->clear(); 121 usersIconView->clear();
123 usersListView->clear(); 122 usersListView->clear();
124 123
125 // availableUID is used as a deposite for the next available UID on the system, this should start at an ID over 500. 124 // availableUID is used as a deposite for the next available UID on the system, this should start at an ID over 500.
126 availableUID=500; 125 availableUID=500;
127 for(QStringList::Iterator it=accounts->passwdStringList.begin(); it!=accounts->passwdStringList.end(); ++it) { 126 for(QStringList::Iterator it=accounts->passwdStringList.begin(); it!=accounts->passwdStringList.end(); ++it) {
128 accounts->splitPasswdEntry(*it); // Split the string into it's components and store in variables in the accounts object. ("pr_name" and so on.) 127 accounts->splitPasswdEntry(*it); // Split the string into it's components and store in variables in the accounts object. ("pr_name" and so on.)
129 if(accounts->pw_name.find(QRegExp("^#"),0)) {// Skip commented lines. 128 if(accounts->pw_name.find(QRegExp("^#"),0)) {// Skip commented lines.
130 new QListViewItem(usersListView,QString::number(accounts->pw_uid),accounts->pw_name,accounts->pw_gecos); 129 new QListViewItem(usersListView,QString::number(accounts->pw_uid),accounts->pw_name,accounts->pw_gecos);
131 if((accounts->pw_uid>=500) && (accounts->pw_uid<65000)) {// Is this user a "normal" user ? 130 if((accounts->pw_uid>=500) && (accounts->pw_uid<65000)) {// Is this user a "normal" user ?
132 mytext=QString(accounts->pw_name)+" - ("+QString(accounts->pw_gecos)+")"; // The string displayed next to the icon. 131 mytext=QString(accounts->pw_name)+" - ("+QString(accounts->pw_gecos)+")"; // The string displayed next to the icon.
133 if(!(mypixmap.load("/opt/QtPalmtop/pics/users/"+accounts->pw_name+".png"))) { // Is there an icon for this user? Resource::loadPixmap is caching, doesn't work. 132 if(!(mypixmap.load("/opt/QtPalmtop/pics/users/"+accounts->pw_name+".png"))) { // Is there an icon for this user? Resource::loadPixmap is caching, doesn't work.
134 mypixmap=Resource::loadPixmap(QString("usermanager/usericon"));// If this user has no icon, load the default icon. 133 mypixmap=Resource::loadPixmap(QString("usermanager/usericon"));// If this user has no icon, load the default icon.
135 } 134 }
136 listviewitem=new QListViewItem(usersIconView,"",mytext);// Add the icon+text to the qiconview. 135 listviewitem=new QListViewItem(usersIconView,"",mytext);// Add the icon+text to the qiconview.
137 listviewitem->setPixmap(0,mypixmap); 136 listviewitem->setPixmap(0,mypixmap);
138 } 137 }
139 if((accounts->pw_uid>=availableUID) && (accounts->pw_uid<65000)) availableUID=accounts->pw_uid+1; // Increase 1 to the latest know UID to get a free uid. 138 if((accounts->pw_uid>=availableUID) && (accounts->pw_uid<65000)) availableUID=accounts->pw_uid+1; // Increase 1 to the latest know UID to get a free uid.
140 } 139 }
141 } 140 }