Diffstat (limited to 'noncore/settings/usermanager') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/settings/usermanager/userdialog.cpp | 3 | ||||
-rw-r--r-- | noncore/settings/usermanager/usermanager.cpp | 44 |
2 files changed, 31 insertions, 16 deletions
diff --git a/noncore/settings/usermanager/userdialog.cpp b/noncore/settings/usermanager/userdialog.cpp index 9dfb2af..3654639 100644 --- a/noncore/settings/usermanager/userdialog.cpp +++ b/noncore/settings/usermanager/userdialog.cpp | |||
@@ -1,39 +1,40 @@ | |||
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" | 11 | #include "passwd.h" |
12 | 12 | ||
13 | /* OPIE */ | 13 | /* OPIE */ |
14 | #include <opie2/odebug.h> | 14 | #include <opie2/odebug.h> |
15 | #include <opie2/odevice.h> | 15 | #include <opie2/odevice.h> |
16 | #include <opie2/oresource.h> | ||
16 | #include <qpe/qpeapplication.h> | 17 | #include <qpe/qpeapplication.h> |
17 | using namespace Opie::Core; | 18 | using namespace Opie::Core; |
18 | using namespace Opie::Ui; | 19 | using namespace Opie::Ui; |
19 | 20 | ||
20 | /* QT */ | 21 | /* QT */ |
21 | #include <qlayout.h> | 22 | #include <qlayout.h> |
22 | #include <qlabel.h> | 23 | #include <qlabel.h> |
23 | #include <qmessagebox.h> | 24 | #include <qmessagebox.h> |
24 | #include <qfile.h> | 25 | #include <qfile.h> |
25 | 26 | ||
26 | /* STD */ | 27 | /* STD */ |
27 | #include <sys/types.h> | 28 | #include <sys/types.h> |
28 | #include <sys/wait.h> | 29 | #include <sys/wait.h> |
29 | #include <unistd.h> | 30 | #include <unistd.h> |
30 | #include <signal.h> | 31 | #include <signal.h> |
31 | 32 | ||
32 | /** | 33 | /** |
33 | * 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. |
34 | * | 35 | * |
35 | */ | 36 | */ |
36 | UserDialog::UserDialog(int viewmode, QWidget* parent, const char* name, bool modal, WFlags fl) : QDialog(parent, name, modal, fl) | 37 | UserDialog::UserDialog(int viewmode, QWidget* parent, const char* name, bool modal, WFlags fl) : QDialog(parent, name, modal, fl) |
37 | { | 38 | { |
38 | vm=viewmode; | 39 | vm=viewmode; |
39 | QVBoxLayout *layout = new QVBoxLayout(this); | 40 | QVBoxLayout *layout = new QVBoxLayout(this); |
@@ -57,49 +58,49 @@ UserDialog::UserDialog(int viewmode, QWidget* parent, const char* name, bool mod | |||
57 | } | 58 | } |
58 | 59 | ||
59 | /** | 60 | /** |
60 | * Empty destructor. | 61 | * Empty destructor. |
61 | * | 62 | * |
62 | */ | 63 | */ |
63 | UserDialog::~UserDialog() | 64 | UserDialog::~UserDialog() |
64 | {} | 65 | {} |
65 | 66 | ||
66 | /** | 67 | /** |
67 | * Creates the first tab, all userinfo is here. | 68 | * Creates the first tab, all userinfo is here. |
68 | * | 69 | * |
69 | */ | 70 | */ |
70 | void UserDialog::setupTab1() | 71 | void UserDialog::setupTab1() |
71 | { | 72 | { |
72 | QPixmap mypixmap; | 73 | QPixmap mypixmap; |
73 | QWidget *tabpage = new QWidget(myTabWidget,"page1"); | 74 | QWidget *tabpage = new QWidget(myTabWidget,"page1"); |
74 | QVBoxLayout *layout = new QVBoxLayout(tabpage); | 75 | QVBoxLayout *layout = new QVBoxLayout(tabpage); |
75 | layout->setMargin(5); | 76 | layout->setMargin(5); |
76 | 77 | ||
77 | // Picture | 78 | // Picture |
78 | picturePushButton = new QPushButton(tabpage,"Label"); | 79 | picturePushButton = new QPushButton(tabpage,"Label"); |
79 | picturePushButton->setMinimumSize(48,48); | 80 | picturePushButton->setMinimumSize(48,48); |
80 | picturePushButton->setMaximumSize(48,48); | 81 | picturePushButton->setMaximumSize(48,48); |
81 | picturePushButton->setPixmap(Resource::loadPixmap("usermanager/usericon")); // Load default usericon. | 82 | picturePushButton->setPixmap(Opie::Core::OResource::loadPixmap("usermanager/usericon")); // Load default usericon. |
82 | 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. |
83 | 84 | ||
84 | // Login | 85 | // Login |
85 | QLabel *loginLabel=new QLabel(tabpage,"Login: "); | 86 | QLabel *loginLabel=new QLabel(tabpage,"Login: "); |
86 | loginLabel->setText("Login: "); | 87 | loginLabel->setText("Login: "); |
87 | loginLineEdit=new QLineEdit(tabpage,"Login: "); | 88 | loginLineEdit=new QLineEdit(tabpage,"Login: "); |
88 | 89 | ||
89 | // UID | 90 | // UID |
90 | QLabel *uidLabel=new QLabel(tabpage,"uid: "); | 91 | QLabel *uidLabel=new QLabel(tabpage,"uid: "); |
91 | uidLabel->setText("UserID: "); | 92 | uidLabel->setText("UserID: "); |
92 | uidLineEdit=new QLineEdit(tabpage,"uid: "); | 93 | uidLineEdit=new QLineEdit(tabpage,"uid: "); |
93 | uidLineEdit->setEnabled(false); | 94 | uidLineEdit->setEnabled(false); |
94 | 95 | ||
95 | // Username (gecos) | 96 | // Username (gecos) |
96 | QLabel *gecosLabel=new QLabel(tabpage,"gecos"); | 97 | QLabel *gecosLabel=new QLabel(tabpage,"gecos"); |
97 | gecosLabel->setText("Username: "); | 98 | gecosLabel->setText("Username: "); |
98 | gecosLineEdit=new QLineEdit(tabpage,"gecos"); | 99 | gecosLineEdit=new QLineEdit(tabpage,"gecos"); |
99 | 100 | ||
100 | // Password | 101 | // Password |
101 | QLabel *passwordLabel=new QLabel(tabpage,"password"); | 102 | QLabel *passwordLabel=new QLabel(tabpage,"password"); |
102 | passwordLabel->setText("Password: "); | 103 | passwordLabel->setText("Password: "); |
103 | passwordLineEdit=new QLineEdit(tabpage,"password"); | 104 | passwordLineEdit=new QLineEdit(tabpage,"password"); |
104 | passwordLineEdit->setEchoMode(QLineEdit::Password); | 105 | passwordLineEdit->setEchoMode(QLineEdit::Password); |
105 | 106 | ||
diff --git a/noncore/settings/usermanager/usermanager.cpp b/noncore/settings/usermanager/usermanager.cpp index 1d345ee..2c046b1 100644 --- a/noncore/settings/usermanager/usermanager.cpp +++ b/noncore/settings/usermanager/usermanager.cpp | |||
@@ -1,75 +1,89 @@ | |||
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 | /* OPIE */ | 12 | /* OPIE */ |
13 | #include <opie2/odebug.h> | 13 | #include <opie2/odebug.h> |
14 | #include <qpe/resource.h> | 14 | #include <opie2/oresource.h> |
15 | using namespace Opie::Core; | 15 | using namespace Opie::Core; |
16 | 16 | #include <qpe/qpeapplication.h> | |
17 | /* QT */ | 17 | /* QT */ |
18 | #include <qlayout.h> | 18 | #include <qlayout.h> |
19 | #include <qmessagebox.h> | 19 | #include <qmessagebox.h> |
20 | #include <qfile.h> | 20 | #include <qfile.h> |
21 | #include <qregexp.h> | 21 | #include <qregexp.h> |
22 | 22 | ||
23 | /** | 23 | /** |
24 | * The mainwindow constructor. | 24 | * The mainwindow constructor. |
25 | * | 25 | * |
26 | * @param QWidget *parent | 26 | * @param QWidget *parent |
27 | * @param const char *name | 27 | * @param const char *name |
28 | * @ param WFlags fl | 28 | * @ param WFlags fl |
29 | * | 29 | * |
30 | */ | 30 | */ |
31 | UserConfig::UserConfig(QWidget* parent, const char* name, WFlags fl) : QMainWindow(parent, name, fl) { | 31 | UserConfig::UserConfig(QWidget* parent, const char* name, WFlags fl) : QMainWindow(parent, name, fl) { |
32 | setCaption(tr("Opie User Manager")); | 32 | setCaption(tr("Opie User Manager")); |
33 | 33 | ||
34 | // Create an instance of the global object 'accounts'. This holds all user/group info, and functions to modify them. | 34 | // Create an instance of the global object 'accounts'. This holds all user/group info, and functions to modify them. |
35 | accounts=new Passwd(); | 35 | accounts=new Passwd(); |
36 | accounts->open();// This actually loads the files /etc/passwd & /etc/group into memory. | 36 | accounts->open();// This actually loads the files /etc/passwd & /etc/group into memory. |
37 | 37 | ||
38 | // Create the toolbar. | 38 | // Create the toolbar. |
39 | setToolBarsMovable( false ); | ||
40 | bool useBigIcon = qApp->desktop()->size().width() > 330; | ||
39 | QToolBar *toolbar = new QToolBar(this,"Toolbar"); | 41 | QToolBar *toolbar = new QToolBar(this,"Toolbar"); |
40 | toolbar->setHorizontalStretchable(1); // Is there any other way to get the toolbar to stretch of the full screen!? | 42 | toolbar->setHorizontalStretchable( true ); |
41 | adduserToolButton = new QToolButton(Resource::loadPixmap("usermanager/adduser"),"Add User",0,this,SLOT(addUser()),toolbar,"Add User"); | 43 | adduserToolButton = new QToolButton(Opie::Core::OResource::loadPixmap("usermanager/adduser", Opie::Core::OResource::SmallIcon), |
42 | edituserToolButton = new QToolButton(Resource::loadPixmap("usermanager/edituser"),"Edit User",0,this,SLOT(editUser()),toolbar,"Edit User"); | 44 | "Add User",0,this,SLOT(addUser()),toolbar,"Add User"); |
43 | deleteuserToolButton = new QToolButton(Resource::loadPixmap("usermanager/deleteuser"),"Delete User",0,this,SLOT(delUser()),toolbar,"Delete User"); | 45 | adduserToolButton->setUsesBigPixmap( useBigIcon ); |
44 | QToolButton *userstext = new QToolButton(0,"User",0,0,0,toolbar,"User"); | 46 | edituserToolButton = new QToolButton(Opie::Core::OResource::loadPixmap("usermanager/edituser", Opie::Core::OResource::SmallIcon), |
45 | userstext->setUsesTextLabel(true); | 47 | "Edit User",0,this,SLOT(editUser()),toolbar,"Edit User"); |
48 | edituserToolButton->setUsesBigPixmap( useBigIcon ); | ||
49 | deleteuserToolButton = new QToolButton(Opie::Core::OResource::loadPixmap("usermanager/deleteuser", Opie::Core::OResource::SmallIcon), | ||
50 | "Delete User",0,this,SLOT(delUser()),toolbar,"Delete User"); | ||
51 | deleteuserToolButton->setUsesBigPixmap( useBigIcon ); | ||
52 | //QToolButton *userstext = new QToolButton(0,"User",0,0,0,toolbar,"User"); | ||
53 | //userstext->setUsesTextLabel(true); | ||
46 | toolbar->addSeparator(); | 54 | toolbar->addSeparator(); |
47 | addgroupToolButton = new QToolButton(Resource::loadPixmap("usermanager/addgroup"),"Add Group",0,this,SLOT(addGroup()),toolbar,"Add Group"); | 55 | addgroupToolButton = new QToolButton(Opie::Core::OResource::loadPixmap("usermanager/addgroup", Opie::Core::OResource::SmallIcon), |
48 | editgroupToolButton = new QToolButton(Resource::loadPixmap("usermanager/editgroup"),"Edit Group",0,this,SLOT(editGroup()),toolbar,"Edit Group"); | 56 | "Add Group",0,this,SLOT(addGroup()),toolbar,"Add Group"); |
49 | deletegroupToolButton = new QToolButton(Resource::loadPixmap("usermanager/deletegroup"),"Delete Group",0,this,SLOT(delGroup()),toolbar,"Delete Group"); | 57 | addgroupToolButton->setUsesBigPixmap( useBigIcon ); |
50 | QToolButton *groupstext = new QToolButton(0,"Group",0,0,0,toolbar,"Group"); | 58 | editgroupToolButton = new QToolButton(Opie::Core::OResource::loadPixmap("usermanager/editgroup", Opie::Core::OResource::SmallIcon), |
51 | groupstext->setUsesTextLabel(true); | 59 | "Edit Group",0,this,SLOT(editGroup()),toolbar,"Edit Group"); |
60 | editgroupToolButton->setUsesBigPixmap( useBigIcon ); | ||
61 | deletegroupToolButton = new QToolButton(Opie::Core::OResource::loadPixmap("usermanager/deletegroup", Opie::Core::OResource::SmallIcon), | ||
62 | "Delete Group",0,this,SLOT(delGroup()),toolbar,"Delete Group"); | ||
63 | deletegroupToolButton->setUsesBigPixmap( useBigIcon ); | ||
64 | //QToolButton *groupstext = new QToolButton(0,"Group",0,0,0,toolbar,"Group"); | ||
65 | //groupstext->setUsesTextLabel(true); | ||
52 | addToolBar(toolbar,"myToolBar"); | 66 | addToolBar(toolbar,"myToolBar"); |
53 | 67 | ||
54 | // Add a tabwidget and all the tabs. | 68 | // Add a tabwidget and all the tabs. |
55 | myTabWidget = new QTabWidget(this,"My Tab Widget"); | 69 | myTabWidget = new QTabWidget(this,"My Tab Widget"); |
56 | setupTabAccounts(); | 70 | setupTabAccounts(); |
57 | setupTabAllUsers(); | 71 | setupTabAllUsers(); |
58 | setupTabAllGroups(); | 72 | setupTabAllGroups(); |
59 | userPopupMenu.insertItem("Copy",0); | 73 | userPopupMenu.insertItem("Copy",0); |
60 | 74 | ||
61 | getUsers(); // Fill out the iconview & listview with all users. | 75 | getUsers(); // Fill out the iconview & listview with all users. |
62 | getGroups(); // Fill out the group listview with all groups. | 76 | getGroups(); // Fill out the group listview with all groups. |
63 | 77 | ||
64 | setCentralWidget(myTabWidget); | 78 | setCentralWidget(myTabWidget); |
65 | } | 79 | } |
66 | 80 | ||
67 | UserConfig::~UserConfig() { | 81 | UserConfig::~UserConfig() { |
68 | accounts->close(); | 82 | accounts->close(); |
69 | delete accounts; | 83 | delete accounts; |
70 | } | 84 | } |
71 | 85 | ||
72 | void UserConfig::setupTabAccounts() { | 86 | void UserConfig::setupTabAccounts() { |
73 | QWidget *tabpage = new QWidget(this); | 87 | QWidget *tabpage = new QWidget(this); |
74 | QVBoxLayout *layout = new QVBoxLayout(tabpage); | 88 | QVBoxLayout *layout = new QVBoxLayout(tabpage); |
75 | layout->setMargin(5); | 89 | layout->setMargin(5); |
@@ -111,50 +125,50 @@ void UserConfig::setupTabAllGroups() { | |||
111 | groupsListView->addColumn("Groupname"); | 125 | groupsListView->addColumn("Groupname"); |
112 | layout->addWidget(groupsListView); | 126 | layout->addWidget(groupsListView); |
113 | groupsListView->setSorting(1,1); | 127 | groupsListView->setSorting(1,1); |
114 | groupsListView->setAllColumnsShowFocus(true); | 128 | groupsListView->setAllColumnsShowFocus(true); |
115 | 129 | ||
116 | myTabWidget->addTab(tabpage,"All Groups"); | 130 | myTabWidget->addTab(tabpage,"All Groups"); |
117 | } | 131 | } |
118 | void UserConfig::getUsers() { | 132 | void UserConfig::getUsers() { |
119 | QString mytext; | 133 | QString mytext; |
120 | QPixmap mypixmap; | 134 | QPixmap mypixmap; |
121 | QListViewItem *listviewitem; | 135 | QListViewItem *listviewitem; |
122 | 136 | ||
123 | // Empty the iconview & the listview. | 137 | // Empty the iconview & the listview. |
124 | usersIconView->clear(); | 138 | usersIconView->clear(); |
125 | usersListView->clear(); | 139 | usersListView->clear(); |
126 | 140 | ||
127 | // availableUID is used as a deposite for the next available UID on the system, this should start at an ID over 500. | 141 | // availableUID is used as a deposite for the next available UID on the system, this should start at an ID over 500. |
128 | availableUID=500; | 142 | availableUID=500; |
129 | for(QStringList::Iterator it=accounts->passwdStringList.begin(); it!=accounts->passwdStringList.end(); ++it) { | 143 | for(QStringList::Iterator it=accounts->passwdStringList.begin(); it!=accounts->passwdStringList.end(); ++it) { |
130 | accounts->splitPasswdEntry(*it); // Split the string into it's components and store in variables in the accounts object. ("pr_name" and so on.) | 144 | accounts->splitPasswdEntry(*it); // Split the string into it's components and store in variables in the accounts object. ("pr_name" and so on.) |
131 | if(accounts->pw_name.find(QRegExp("^#"),0)) {// Skip commented lines. | 145 | if(accounts->pw_name.find(QRegExp("^#"),0)) {// Skip commented lines. |
132 | new QListViewItem(usersListView,QString::number(accounts->pw_uid),accounts->pw_name,accounts->pw_gecos); | 146 | new QListViewItem(usersListView,QString::number(accounts->pw_uid),accounts->pw_name,accounts->pw_gecos); |
133 | if((accounts->pw_uid>=500) && (accounts->pw_uid<65000)) {// Is this user a "normal" user ? | 147 | if((accounts->pw_uid>=500) && (accounts->pw_uid<65000)) {// Is this user a "normal" user ? |
134 | mytext=QString(accounts->pw_name)+" - ("+QString(accounts->pw_gecos)+")"; // The string displayed next to the icon. | 148 | mytext=QString(accounts->pw_name)+" - ("+QString(accounts->pw_gecos)+")"; // The string displayed next to the icon. |
135 | 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. | 149 | if(!(mypixmap.load("/opt/QtPalmtop/pics/users/"+accounts->pw_name+".png"))) { // Is there an icon for this user? Opie::Core::OResource::loadPixmap is caching, doesn't work. |
136 | mypixmap=Resource::loadPixmap(QString("usermanager/usericon"));// If this user has no icon, load the default icon. | 150 | mypixmap=Opie::Core::OResource::loadPixmap("usermanager/usericon", Opie::Core::OResource::SmallIcon);// If this user has no icon, load the default icon. |
137 | } | 151 | } |
138 | listviewitem=new QListViewItem(usersIconView,"",mytext);// Add the icon+text to the qiconview. | 152 | listviewitem=new QListViewItem(usersIconView,"",mytext);// Add the icon+text to the qiconview. |
139 | listviewitem->setPixmap(0,mypixmap); | 153 | listviewitem->setPixmap(0,mypixmap); |
140 | } | 154 | } |
141 | 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. | 155 | 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. |
142 | } | 156 | } |
143 | } | 157 | } |
144 | usersIconView->sort(); | 158 | usersIconView->sort(); |
145 | } | 159 | } |
146 | 160 | ||
147 | void UserConfig::addUser() { | 161 | void UserConfig::addUser() { |
148 | if(UserDialog::addUser(availableUID,availableGID)) {// Add the user to the system, also send next available UID and GID. | 162 | if(UserDialog::addUser(availableUID,availableGID)) {// Add the user to the system, also send next available UID and GID. |
149 | getUsers(); // Update users views. | 163 | getUsers(); // Update users views. |
150 | getGroups(); // Update groups view. | 164 | getGroups(); // Update groups view. |
151 | } | 165 | } |
152 | } | 166 | } |
153 | 167 | ||
154 | void UserConfig::editUser() { | 168 | void UserConfig::editUser() { |
155 | QString username; | 169 | QString username; |
156 | if(myTabWidget->currentPageIndex()==0) {// Users | 170 | if(myTabWidget->currentPageIndex()==0) {// Users |
157 | if(usersIconView->currentItem()) {// Any icon selected? | 171 | if(usersIconView->currentItem()) {// Any icon selected? |
158 | username=usersIconView->currentItem()->text(1);// Get the text associated with the icon. | 172 | username=usersIconView->currentItem()->text(1);// Get the text associated with the icon. |
159 | username=username.left(username.find(" - (",0,true));// Strip out the username. | 173 | username=username.left(username.find(" - (",0,true));// Strip out the username. |
160 | if(UserDialog::editUser(username)) {// Bring up the userinfo dialog. | 174 | if(UserDialog::editUser(username)) {// Bring up the userinfo dialog. |