summaryrefslogtreecommitdiff
path: root/noncore/settings/usermanager/userdialog.cpp
Side-by-side diff
Diffstat (limited to 'noncore/settings/usermanager/userdialog.cpp') (more/less context) (show whitespace changes)
-rw-r--r--noncore/settings/usermanager/userdialog.cpp149
1 files changed, 100 insertions, 49 deletions
diff --git a/noncore/settings/usermanager/userdialog.cpp b/noncore/settings/usermanager/userdialog.cpp
index d87a005..08de352 100644
--- a/noncore/settings/usermanager/userdialog.cpp
+++ b/noncore/settings/usermanager/userdialog.cpp
@@ -8,20 +8,25 @@
***************************************************************************/
#include "userdialog.h"
+#include "passwd.h"
+
+/* OPIE */
+#include <opie/odevice.h>
+#include <qpe/qpeapplication.h>
+/* QT */
#include <qlayout.h>
#include <qlabel.h>
#include <qmessagebox.h>
#include <qfile.h>
+/* STD */
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <signal.h>
-#include "passwd.h"
-#include <opie/odevice.h>
using namespace Opie;
@@ -29,7 +34,8 @@ using namespace Opie;
* UserDialog constructor. Setup the dialog, fill the groupComboBox & groupsListView with all groups.
*
*/
-UserDialog::UserDialog(int viewmode, QWidget* parent, const char* name, bool modal, WFlags fl) : QDialog(parent, name, modal, fl) {
+UserDialog::UserDialog(int viewmode, QWidget* parent, const char* name, bool modal, WFlags fl) : QDialog(parent, name, modal, fl)
+{
vm=viewmode;
QVBoxLayout *layout = new QVBoxLayout(this);
myTabWidget=new QTabWidget(this,"User Tab Widget");
@@ -39,28 +45,31 @@ UserDialog::UserDialog(int viewmode, QWidget* parent, const char* name, bool mod
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) {
+ for( QStringList::Iterator it = accounts->groupStringList.begin(); it!=accounts->groupStringList.end(); ++it)
+ {
accounts->splitGroupEntry(*it);
- if(accounts->gr_name.find(QRegExp("^#"),0)) { // Skip commented lines.
+ if(accounts->gr_name.find(QRegExp("^#"),0))
+ { // Skip commented lines.
new QCheckListItem(groupsListView,accounts->gr_name,QCheckListItem::CheckBox);
groupComboBox->insertItem(accounts->gr_name);
}
}
- showMaximized();
+ QPEApplication::showDialog( this );
}
/**
* Empty destructor.
*
*/
-UserDialog::~UserDialog() {
-}
+UserDialog::~UserDialog()
+{}
/**
* Creates the first tab, all userinfo is here.
*
*/
-void UserDialog::setupTab1() {
+void UserDialog::setupTab1()
+{
QPixmap mypixmap;
QWidget *tabpage = new QWidget(myTabWidget,"page1");
QVBoxLayout *layout = new QVBoxLayout(tabpage);
@@ -109,7 +118,8 @@ void UserDialog::setupTab1() {
groupLabel->setText("Primary group: ");
groupComboBox=new QComboBox(tabpage,"PrimaryGroup");
- if(vm==VIEWMODE_NEW) {
+ if(vm==VIEWMODE_NEW)
+ {
// Copy /etc/skel
skelLabel=new QLabel(tabpage,"skel");
skelLabel->setText("Copy /etc/skel: ");
@@ -136,7 +146,8 @@ void UserDialog::setupTab1() {
vlayout1->addWidget(shellLabel);
vlayout1->addSpacing(5);
vlayout1->addWidget(groupLabel);
- if(vm==VIEWMODE_NEW) {
+ if(vm==VIEWMODE_NEW)
+ {
vlayout1->addSpacing(5);
vlayout1->addWidget(skelLabel);
}
@@ -152,7 +163,8 @@ void UserDialog::setupTab1() {
vlayout2->addWidget(shellComboBox);
vlayout2->addSpacing(5);
vlayout2->addWidget(groupComboBox);
- if(vm==VIEWMODE_NEW) {
+ if(vm==VIEWMODE_NEW)
+ {
vlayout2->addSpacing(5);
vlayout2->addWidget(skelCheckBox);
}
@@ -166,7 +178,8 @@ void UserDialog::setupTab1() {
* Creates the second tab containing additional groups for the user.
*
*/
-void UserDialog::setupTab2() {
+void UserDialog::setupTab2()
+{
QWidget *tabpage = new QWidget(myTabWidget,"page2");
QVBoxLayout *layout = new QVBoxLayout(tabpage);
layout->setMargin(5);
@@ -195,7 +208,8 @@ void UserDialog::setupTab2() {
* @return <code>true</code> if the user was successfully added, otherwise <code>false</code>.
*
*/
-bool UserDialog::addUser(int uid, int gid) {
+bool UserDialog::addUser(int uid, int gid)
+{
QCheckListItem *temp;
QFile ozTest;
int oz=false;
@@ -209,9 +223,11 @@ bool UserDialog::addUser(int uid, int gid) {
adduserDialog->groupComboBox->insertItem("<create new group>",0);
adduserDialog->uidLineEdit->setText(QString::number(uid));
// If we're running on OZ, add new users to some default groups.
- if(oz) {
+ if(oz)
+ {
QListViewItemIterator iter( adduserDialog->groupsListView );
- for ( ; iter.current(); ++iter ) {
+ for ( ; iter.current(); ++iter )
+ {
temp=(QCheckListItem*)iter.current();
if (temp->text()=="video") temp->setOn(true);
if (temp->text()=="audio") temp->setOn(true);
@@ -224,29 +240,34 @@ bool UserDialog::addUser(int uid, int gid) {
}
// Show the dialog!
if(!(adduserDialog->exec())) return false;
- if((adduserDialog->groupComboBox->currentItem()!=0)) {
+ if((adduserDialog->groupComboBox->currentItem()!=0))
+ {
accounts->findGroup(adduserDialog->groupComboBox->currentText());
adduserDialog->groupID=accounts->gr_gid;
qWarning(QString::number(accounts->gr_gid));
}
if(!(accounts->addUser(adduserDialog->loginLineEdit->text(), adduserDialog->passwordLineEdit->text(),
adduserDialog->uidLineEdit->text().toInt(), adduserDialog->groupID, adduserDialog->gecosLineEdit->text(),
- QString("/home/")+adduserDialog->loginLineEdit->text() , adduserDialog->shellComboBox->currentText()))) {
+ QString("/home/")+adduserDialog->loginLineEdit->text() , adduserDialog->shellComboBox->currentText())))
+ {
QMessageBox::information(0,"Ooops!","Something went wrong!\nUnable to add user.");
return false;
}
// Add User to additional groups.
QListViewItemIterator it( adduserDialog->groupsListView );
- for ( ; it.current(); ++it ) {
+ for ( ; it.current(); ++it )
+ {
temp=(QCheckListItem*)it.current();
if (temp->isOn() )
accounts->addGroupMember(it.current()->text(0),adduserDialog->loginLineEdit->text());
}
// Copy image to pics/users/
- if(!(adduserDialog->userImage.isNull())) {
+ if(!(adduserDialog->userImage.isNull()))
+ {
QDir d;
- if(!(d.exists("/opt/QtPalmtop/pics/users"))) {
+ if(!(d.exists("/opt/QtPalmtop/pics/users")))
+ {
d.mkdir("/opt/QtPalmtop/pics/users");
}
QString filename="/opt/QtPalmtop/pics/users/"+accounts->pw_name+".png";
@@ -256,7 +277,8 @@ bool UserDialog::addUser(int uid, int gid) {
// Should we copy the skeleton homedirectory /etc/skel to the user's homedirectory?
accounts->findUser(adduserDialog->loginLineEdit->text());
- if(adduserDialog->skelCheckBox->isChecked()) {
+ if(adduserDialog->skelCheckBox->isChecked())
+ {
QString command_cp;
QString command_chown;
command_cp.sprintf("cp -a /etc/skel/* %s/",accounts->pw_dir.latin1());
@@ -280,12 +302,17 @@ bool UserDialog::addUser(int uid, int gid) {
* @return <code>true</code> if the user was successfully deleted, otherwise <code>false</code>.
*
*/
-bool UserDialog::delUser(const char *username) {
- if((accounts->findUser(username))) { // Does that user exist?
- if(!(accounts->delUser(username))) { // Delete the user.
+bool UserDialog::delUser(const char *username)
+{
+ if((accounts->findUser(username)))
+ { // Does that user exist?
+ if(!(accounts->delUser(username)))
+ { // Delete the user.
QMessageBox::information(0,"Ooops!","Something went wrong\nUnable to delete user: "+QString(username)+".");
}
- } else {
+ }
+ else
+ {
QMessageBox::information(0,"Invalid Username","That username ("+QString(username)+")does not exist.");
return false;
}
@@ -301,13 +328,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) {
+bool UserDialog::editUser(const char *username)
+{
int invalid_group=0;
// viewmode is a workaround for a bug in qte-2.3.4 that gives bus error on manipulating edituserDialog's widgets here.
UserDialog *edituserDialog=new UserDialog(VIEWMODE_EDIT); // Create Dialog
edituserDialog->setCaption(tr("Edit User"));
accounts->findUser(username); // Locate user in database and fill variables in 'accounts' object.
- if(!(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.
@@ -317,18 +346,22 @@ bool UserDialog::editUser(const char *username) {
// Set password to '........', we will later check if this still is the contents, if not, the password has been changed.
edituserDialog->passwordLineEdit->setText("........");
// If this user is not using /bin/sh,/bin/ash or /bin/false as shell, add that entry to the shell-combobox.
- if(accounts->pw_shell!="/bin/sh" && accounts->pw_shell!="/bin/ash" && accounts->pw_shell!="/bin/false") {
+ if(accounts->pw_shell!="/bin/sh" && accounts->pw_shell!="/bin/ash" && accounts->pw_shell!="/bin/false")
+ {
edituserDialog->shellComboBox->insertItem(accounts->pw_shell,0);
edituserDialog->shellComboBox->setCurrentItem(0);
}
// Select the primary group for this user.
- for(int i=0;i<edituserDialog->groupComboBox->count();++i) {
- if(accounts->gr_name==edituserDialog->groupComboBox->text(i)) {
+ 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) {
+ if(invalid_group)
+ {
edituserDialog->groupComboBox->insertItem("<Undefined group>",0);
edituserDialog->groupComboBox->setCurrentItem(0);
}
@@ -338,11 +371,14 @@ bool UserDialog::editUser(const char *username) {
// 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.
QRegExp userRegExp(QString("[:,]%1$").arg(username)); // The end of line variant.
QStringList tempList=accounts->groupStringList.grep(userRegExp); // Find all entries in the group database, that the user is a member of.
- for(QStringList::Iterator it=tempList.begin(); it!=tempList.end(); ++it) { // Iterate over all of them.
+ for(QStringList::Iterator it=tempList.begin(); it!=tempList.end(); ++it)
+ { // Iterate over all of them.
qWarning(*it);
QListViewItemIterator lvit( edituserDialog->groupsListView ); // Compare to all groups.
- for ( ; lvit.current(); ++lvit ) {
- if(lvit.current()->text(0)==(*it).left((*it).find(":"))) {
+ for ( ; lvit.current(); ++lvit )
+ {
+ if(lvit.current()->text(0)==(*it).left((*it).find(":")))
+ {
temp=(QCheckListItem*)lvit.current();
temp->setOn(true); // If we find a line with that groupname, select it.;
}
@@ -350,11 +386,14 @@ bool UserDialog::editUser(const char *username) {
}
userRegExp=QRegExp(QString("[:,]%1,").arg(username)); // And the other one. (not end of line.)
tempList=accounts->groupStringList.grep(userRegExp); // Find all entries in the group database, that the user is a member of.
- for(QStringList::Iterator it=tempList.begin(); it!=tempList.end(); ++it) { // Iterate over all of them.
+ for(QStringList::Iterator it=tempList.begin(); it!=tempList.end(); ++it)
+ { // Iterate over all of them.
qWarning(*it);
QListViewItemIterator lvit( edituserDialog->groupsListView ); // Compare to all groups.
- for ( ; lvit.current(); ++lvit ) {
- if(lvit.current()->text(0)==(*it).left((*it).find(":"))) {
+ for ( ; lvit.current(); ++lvit )
+ {
+ if(lvit.current()->text(0)==(*it).left((*it).find(":")))
+ {
temp=(QCheckListItem*)lvit.current();
temp->setOn(true); // If we find a line with that groupname, select it.;
}
@@ -370,7 +409,8 @@ bool UserDialog::editUser(const char *username) {
// Set all variables in accounts object, that will be used when calling 'updateUser()'
accounts->pw_uid=edituserDialog->uidLineEdit->text().toInt();
- if(accounts->findGroup(edituserDialog->groupComboBox->currentText())) { // Fill all group variables in 'accounts' object.
+ 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();
@@ -379,22 +419,26 @@ bool UserDialog::editUser(const char *username) {
accounts->updateUser(username);
// Remove user from all groups he/she is a member of. (could be done in a better way I guess, this was simple though.)
- for(QStringList::Iterator it=tempList.begin(); it!=tempList.end(); ++it) {
+ for(QStringList::Iterator it=tempList.begin(); it!=tempList.end(); ++it)
+ {
accounts->delGroupMember((*it).left((*it).find(":")),username);
}
// Add User to additional groups that he/she is a member of.
QListViewItemIterator it( edituserDialog->groupsListView );
- for ( ; it.current(); ++it ) {
+ for ( ; it.current(); ++it )
+ {
temp=(QCheckListItem*)it.current();
if ( temp->isOn() )
accounts->addGroupMember(it.current()->text(0),edituserDialog->loginLineEdit->text());
}
// Copy image to pics/users/
- if(!(edituserDialog->userImage.isNull())) {
+ if(!(edituserDialog->userImage.isNull()))
+ {
QDir d;
- if(!(d.exists("/opt/QtPalmtop/pics/users"))) {
+ if(!(d.exists("/opt/QtPalmtop/pics/users")))
+ {
d.mkdir("/opt/QtPalmtop/pics/users");
}
QString filename="/opt/QtPalmtop/pics/users/"+accounts->pw_name+".png";
@@ -408,9 +452,11 @@ bool UserDialog::editUser(const char *username) {
* "OK" has been clicked. Verify some information before closing the dialog.
*
*/
-void UserDialog::accept() {
+void UserDialog::accept()
+{
// Add checking... valid username? username taken?
- if(loginLineEdit->text().isEmpty()) {
+ if(loginLineEdit->text().isEmpty())
+ {
QMessageBox::information(0,"Empty Login","Please enter a login.");
return;
}
@@ -421,13 +467,18 @@ void UserDialog::accept() {
* This slot is called when the usericon is clicked, this loads (should) the iconselector.
*
*/
-void UserDialog::clickedPicture() {
+void UserDialog::clickedPicture()
+{
QString filename=OFileDialog::getOpenFileName(OFileSelector::EXTENDED, QString::null);
- if(!(filename.isEmpty())) {
+ if(!(filename.isEmpty()))
+ {
userImage.reset();
- if(!(userImage.load(filename))) {
+ if(!(userImage.load(filename)))
+ {
QMessageBox::information(0,"Sorry!","That icon could not be loaded.\nLoading failed on: "+filename);
- } else {
+ }
+ else
+ {
// userImage=userImage.smoothScale(48,48);
QPixmap *picture;
picture=(QPixmap *)picturePushButton->pixmap();