summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/usermanager/userdialog.cpp32
-rw-r--r--noncore/settings/usermanager/userdialog.h3
-rw-r--r--noncore/settings/usermanager/usermanager.cpp8
-rw-r--r--noncore/settings/usermanager/usermanager.h9
4 files changed, 42 insertions, 10 deletions
diff --git a/noncore/settings/usermanager/userdialog.cpp b/noncore/settings/usermanager/userdialog.cpp
index b7827a4..90e27d5 100644
--- a/noncore/settings/usermanager/userdialog.cpp
+++ b/noncore/settings/usermanager/userdialog.cpp
@@ -33,16 +33,15 @@ UserDialog::UserDialog(QWidget* parent, const char* name, bool modal, WFlags fl)
layout->addWidget(myTabWidget);
setupTab1();
setupTab2();
+ accounts->groupStringList.sort();
// And also fill the listview & the combobox with all available groups.
for( QStringList::Iterator it = accounts->groupStringList.begin(); it!=accounts->groupStringList.end(); ++it) {
accounts->splitGroupEntry(*it);
- //new QListViewItem(groupsListView,accounts->gr_name);
new QCheckListItem(groupsListView,accounts->gr_name,QCheckListItem::CheckBox);
groupComboBox->insertItem(accounts->gr_name);
}
-
showMaximized();
}
/**
@@ -104,9 +103,17 @@ void UserDialog::setupTab1() {
QLabel *groupLabel=new QLabel(tabpage,"group");
groupLabel->setText("Primary group: ");
groupComboBox=new QComboBox(tabpage,"PrimaryGroup");
- // Widget layout
+ // Copy /etc/skel
+ QLabel *skelLabel=new QLabel(tabpage,"skel");
+ skelLabel->setText("Copy /etc/skel: ");
+ skelCheckBox=new QCheckBox(tabpage);
+ skelCheckBox->setChecked(true);
+ skelLabel->setDisabled(true);
+ skelCheckBox->setDisabled(true);
+
+ // Widget layout
QHBoxLayout *hlayout=new QHBoxLayout(-1,"hlayout");
layout->addWidget(picturePushButton);
layout->addSpacing(5);
layout->addLayout(hlayout);
@@ -123,8 +130,10 @@ void UserDialog::setupTab1() {
vlayout1->addSpacing(5);
vlayout1->addWidget(shellLabel);
vlayout1->addSpacing(5);
vlayout1->addWidget(groupLabel);
+ vlayout1->addSpacing(5);
+ vlayout1->addWidget(skelLabel);
// Second column, data
vlayout2->addWidget(loginLineEdit);
vlayout2->addSpacing(5);
vlayout2->addWidget(uidLineEdit);
@@ -135,8 +144,10 @@ void UserDialog::setupTab1() {
vlayout2->addSpacing(5);
vlayout2->addWidget(shellComboBox);
vlayout2->addSpacing(5);
vlayout2->addWidget(groupComboBox);
+ vlayout2->addSpacing(5);
+ vlayout2->addWidget(skelCheckBox);
hlayout->addLayout(vlayout1);
hlayout->addLayout(vlayout2);
myTabWidget->addTab(tabpage,"User Info");
@@ -247,12 +258,15 @@ bool UserDialog::delUser(const char *username) {
* @return <code>true</code> if the user was successfully deleted, otherwise <code>false</code>.
*
*/
bool UserDialog::editUser(const char *username) {
+ int invalid_group=0;
UserDialog *edituserDialog=new UserDialog(); // Create Dialog
edituserDialog->setCaption(tr("Edit User"));
accounts->findUser(username); // Locate user in database and fill variables in 'accounts' object.
- accounts->findGroup(accounts->pw_gid); // Locate the user's primary group, and fill group variables in 'accounts' object.
+ if(!(accounts->findGroup(accounts->pw_gid))) { // Locate the user's primary group, and fill group variables in 'accounts' object.
+ invalid_group=1;
+ }
// Fill widgets with userinfo.
edituserDialog->loginLineEdit->setText(accounts->pw_name);
edituserDialog->uidLineEdit->setText(QString::number(accounts->pw_uid));
edituserDialog->gecosLineEdit->setText(accounts->pw_gecos);
@@ -266,10 +280,15 @@ bool UserDialog::editUser(const char *username) {
// Select the primary group for this user.
for(int i=0;i<edituserDialog->groupComboBox->count();++i) {
if(accounts->gr_name==edituserDialog->groupComboBox->text(i)) {
edituserDialog->groupComboBox->setCurrentItem(i);
+ break;
}
}
+ if(invalid_group) {
+ edituserDialog->groupComboBox->insertItem("<Undefined group>",0);
+ edituserDialog->groupComboBox->setCurrentItem(0);
+ }
// Select the groups in the listview, to which the user belongs.
QCheckListItem *temp;
QRegExp userRegExp(QString("[:\\s]%1\\s").arg(username));
QStringList tempList=accounts->groupStringList.grep(userRegExp); // Find all entries in the group database, that the user is a member of.
@@ -291,10 +310,11 @@ bool UserDialog::editUser(const char *username) {
if(edituserDialog->passwordLineEdit->text()!="........") accounts->pw_passwd=crypt(edituserDialog->passwordLineEdit->text(), accounts->crypt_make_salt());
// Set all variables in accounts object, that will be used when calling 'updateUser()'
accounts->pw_uid=edituserDialog->uidLineEdit->text().toInt();
- accounts->findGroup(edituserDialog->groupComboBox->currentText()); // Fill all group variables in 'accounts' object.
- accounts->pw_gid=accounts->gr_gid;
+ if(accounts->findGroup(edituserDialog->groupComboBox->currentText())) { // Fill all group variables in 'accounts' object.
+ accounts->pw_gid=accounts->gr_gid; // Only do this if the group is a valid group (ie. "<Undefined group>"), otherwise keep the old group.
+ }
accounts->pw_gecos=edituserDialog->gecosLineEdit->text();
accounts->pw_shell=edituserDialog->shellComboBox->currentText();
// Update userinfo, using the information stored in the user variables stored in the accounts object.
accounts->updateUser(username);
diff --git a/noncore/settings/usermanager/userdialog.h b/noncore/settings/usermanager/userdialog.h
index a878588..133b35d 100644
--- a/noncore/settings/usermanager/userdialog.h
+++ b/noncore/settings/usermanager/userdialog.h
@@ -14,8 +14,9 @@
#include <qcombobox.h>
#include <qlistview.h>
#include <qtabwidget.h>
#include <qpushbutton.h>
+#include <qcheckbox.h>
#include <qpe/resource.h>
#include <opie/ofiledialog.h>
@@ -31,8 +32,10 @@ private:
QLineEdit *gecosLineEdit;
QLineEdit *passwordLineEdit;
QComboBox *shellComboBox;
QComboBox *groupComboBox;
+ QLabel *skelLabel;
+ QCheckBox *skelCheckBox;
QListView *groupsListView;
QStringList groupMembers;
QString pictureLocation;
diff --git a/noncore/settings/usermanager/usermanager.cpp b/noncore/settings/usermanager/usermanager.cpp
index 2735e6a..57efa71 100644
--- a/noncore/settings/usermanager/usermanager.cpp
+++ b/noncore/settings/usermanager/usermanager.cpp
@@ -53,8 +53,9 @@ UserConfig::UserConfig(QWidget* parent, const char* name, WFlags fl) : QMainWind
myTabWidget = new QTabWidget(this,"My Tab Widget");
setupTabAccounts();
setupTabAllUsers();
setupTabAllGroups();
+ userPopupMenu.insertItem("Copy",0);
getUsers(); // Fill out the iconview & listview with all users.
getGroups(); // Fill out the group listview with all groups.
@@ -76,8 +77,10 @@ void UserConfig::setupTabAccounts() {
usersIconView->addColumn("Username");
usersIconView->setAllColumnsShowFocus(true);
layout->addWidget(usersIconView);
+ connect(usersIconView,SIGNAL(returnPressed(QListViewItem *)),this,SLOT(showUserMenu(QListViewItem *)));
+
myTabWidget->addTab(tabpage,"Users");
}
void UserConfig::setupTabAllUsers() {
@@ -243,4 +246,9 @@ void UserConfig::delGroup() {
} else {
QMessageBox::information(this,"No selection","No group has been selected.");
}
}
+
+void UserConfig::showUserMenu(QListViewItem *item) {
+// userPopupMenu.exec(item->mapToGlobal(QPoint(0,0)));
+ qWarning("Pressed!");
+}
diff --git a/noncore/settings/usermanager/usermanager.h b/noncore/settings/usermanager/usermanager.h
index 9909242..6782923 100644
--- a/noncore/settings/usermanager/usermanager.h
+++ b/noncore/settings/usermanager/usermanager.h
@@ -12,15 +12,13 @@
#include <qmainwindow.h>
#include <qtabwidget.h>
#include <qlistview.h>
-//#include <qiconview.h>
-
-#include <qpe/qpemenubar.h>
#include <qpopupmenu.h>
-#include <qpe/qpetoolbar.h>
#include <qtoolbutton.h>
+#include <qpe/qpetoolbar.h>
+
#include "userdialog.h"
#include "groupdialog.h"
#include "passwd.h"
@@ -42,8 +40,10 @@ private:
QTabWidget *myTabWidget;
QListView *usersIconView;
QListView *usersListView;
QListView *groupsListView;
+ QPopupMenu userPopupMenu;
+ QPopupMenu groupPopupMenu;
int availableUID;
int availableGID;
void setupTabAccounts();
void setupTabAllUsers();
@@ -59,7 +59,8 @@ private slots:
void delUser();
void addGroup();
void editGroup();
void delGroup();
+ void showUserMenu(QListViewItem *item);
};
#endif // USERCONFIG_H