summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/settings/usermanager/userdialog.cpp35
-rw-r--r--noncore/settings/usermanager/userdialog.h1
-rw-r--r--noncore/settings/usermanager/usermanager.cpp7
3 files changed, 38 insertions, 5 deletions
diff --git a/noncore/settings/usermanager/userdialog.cpp b/noncore/settings/usermanager/userdialog.cpp
index 6940a3b..c6b8a57 100644
--- a/noncore/settings/usermanager/userdialog.cpp
+++ b/noncore/settings/usermanager/userdialog.cpp
@@ -190,32 +190,42 @@ bool UserDialog::addUser(int uid, int gid) {
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()))) {
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 ) {
if ( it.current()->isSelected() )
accounts->addGroupMember(it.current()->text(0),adduserDialog->loginLineEdit->text());
}
+ // Copy image to pics/users/
+ if(!(adduserDialog->userImage.isNull())) {
+ QDir d;
+ if(!(d.exists("/opt/QtPalmtop/pics/users"))) {
+ d.mkdir("/opt/QtPalmtop/pics/users");
+ }
+ QString filename="/opt/QtPalmtop/pics/users/"+accounts->pw_name+".png";
+ adduserDialog->userImage=adduserDialog->userImage.smoothScale(48,48);
+ adduserDialog->userImage.save(filename,"PNG");
+ }
return true;
}
/**
* Deletes the user account.
*
* @param username User to be deleted.
*
* @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.
QMessageBox::information(0,"Ooops!","Something went wrong\nUnable to delete user: "+QString(username)+".");
}
@@ -283,43 +293,62 @@ bool UserDialog::editUser(const char *username) {
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);
// 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) {
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 ) {
if ( it.current()->isSelected() )
accounts->addGroupMember(it.current()->text(0),edituserDialog->loginLineEdit->text());
}
+
+ // Copy image to pics/users/
+ if(!(edituserDialog->userImage.isNull())) {
+ QDir d;
+ if(!(d.exists("/opt/QtPalmtop/pics/users"))) {
+ d.mkdir("/opt/QtPalmtop/pics/users");
+ }
+ QString filename="/opt/QtPalmtop/pics/users/"+accounts->pw_name+".png";
+ edituserDialog->userImage=edituserDialog->userImage.smoothScale(48,48);
+ edituserDialog->userImage.save(filename,"PNG");
+ }
return true;
}
/**
* "OK" has been clicked. Verify some information before closing the dialog.
*
*/
void UserDialog::accept() {
// Add checking... valid username? username taken?
if(loginLineEdit->text().isEmpty()) {
QMessageBox::information(0,"Empty Login","Please enter a login.");
return;
}
QDialog::accept();
}
/**
* This slot is called when the usericon is clicked, this loads (should) the iconselector.
*
*/
void UserDialog::clickedPicture() {
QString filename=OFileDialog::getOpenFileName(OFileSelector::EXTENDED,"/opt/QtPalmtop/pics");
- // OFileDialog *fd=new OFileDialog("Select Icon",this, OFileSelector::OPEN, OFileSelector::EXTENDED,"/");
- //fd->showMaximized();
- //fd->exec();
+ if(!(filename.isEmpty())) {
+ userImage.reset();
+ if(!(userImage.load(filename))) {
QMessageBox::information(0,"Sorry!","Icon selection not yet implemented.\nComming real soon now! (tm)\n"+filename);
+ } else {
+ userImage=userImage.smoothScale(48,48);
+ QPixmap *picture;
+ picture=(QPixmap *)picturePushButton->pixmap();
+ picture->convertFromImage(userImage,0);
+ picturePushButton->update();
+ }
+ }
}
diff --git a/noncore/settings/usermanager/userdialog.h b/noncore/settings/usermanager/userdialog.h
index df54269..a878588 100644
--- a/noncore/settings/usermanager/userdialog.h
+++ b/noncore/settings/usermanager/userdialog.h
@@ -23,32 +23,33 @@
class UserDialog : public QDialog
{
Q_OBJECT
private:
QTabWidget *myTabWidget;
QPushButton *picturePushButton;
QLineEdit *loginLineEdit;
QLineEdit *uidLineEdit;
QLineEdit *gecosLineEdit;
QLineEdit *passwordLineEdit;
QComboBox *shellComboBox;
QComboBox *groupComboBox;
QListView *groupsListView;
QStringList groupMembers;
QString pictureLocation;
+ QImage userImage;
int groupID;
int userID;
void setupTab1(void);
void setupTab2(void);
void accept(void);
private slots:
void clickedPicture(void);
public:
UserDialog( QWidget* parent = 0, const char* name = 0, bool modal=true, WFlags fl = 0 );
~UserDialog();
static bool addUser(int uid, int gid);
static bool editUser(const char *username);
static bool delUser(const char *username);
diff --git a/noncore/settings/usermanager/usermanager.cpp b/noncore/settings/usermanager/usermanager.cpp
index 87dd7f1..ed18b7f 100644
--- a/noncore/settings/usermanager/usermanager.cpp
+++ b/noncore/settings/usermanager/usermanager.cpp
@@ -60,32 +60,33 @@ UserConfig::UserConfig(QWidget* parent, const char* name, WFlags fl) : QMainWind
setCentralWidget(myTabWidget);
}
UserConfig::~UserConfig() {
accounts->close();
delete accounts;
}
void UserConfig::setupTabAccounts() {
QWidget *tabpage = new QWidget(this);
QVBoxLayout *layout = new QVBoxLayout(tabpage);
layout->setMargin(5);
usersIconView=new QIconView(tabpage,"users");
usersIconView->setItemTextPos(QIconView::Right);
+ usersIconView->setArrangement(QIconView::LeftToRight);
layout->addWidget(usersIconView);
myTabWidget->addTab(tabpage,"Users");
}
void UserConfig::setupTabAllUsers() {
QWidget *tabpage = new QWidget(this);
QVBoxLayout *layout = new QVBoxLayout(tabpage);
layout->setMargin(5);
usersListView=new QListView(tabpage,"allusers");
usersListView->addColumn("UID");
usersListView->addColumn("Login");
usersListView->addColumn("Username");
layout->addWidget(usersListView);
usersListView->setSorting(1,1);
@@ -110,40 +111,42 @@ void UserConfig::setupTabAllGroups() {
}
void UserConfig::getUsers() {
QString mytext;
QPixmap mypixmap;
// Empty the iconview & the listview.
usersIconView->clear();
usersListView->clear();
// availableUID is used as a deposite for the next available UID on the system, this should start at an ID over 500.
availableUID=500;
for(QStringList::Iterator it=accounts->passwdStringList.begin(); it!=accounts->passwdStringList.end(); ++it) {
accounts->splitPasswdEntry(*it); // Split the string into it's components and store in variables in the accounts object. ("pr_name" and so on.)
new QListViewItem(usersListView,QString::number(accounts->pw_uid),accounts->pw_name,accounts->pw_gecos);
if((accounts->pw_uid>=500) && (accounts->pw_uid<65000)) { // Is this user a "normal" user ?
mytext=QString(accounts->pw_name)+" - ("+QString(accounts->pw_gecos)+")"; // The string displayed next to the icon.
- mypixmap=Resource::loadPixmap(QString("users/"+accounts->pw_name)); // Is there an icon for this user?
- if(mypixmap.isNull()) {
+// mypixmap=Resource::loadPixmap(QString("users/"+accounts->pw_name)); // Is there an icon for this user? Resource::loadPixmap is caching, doesn't work.
+ if(!(mypixmap.load("/opt/QtPalmtop/pics/users/"+accounts->pw_name+".png"))) {
+// if(mypixmap.isNull()) {
mypixmap=Resource::loadPixmap(QString("usermanager/usericon")); // If this user has no icon, load the default icon.
}
new QIconViewItem(usersIconView,mytext,mypixmap); // Add the icon+text to the qiconview.
}
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.
}
+ usersIconView->sort();
}
void UserConfig::addUser() {
if(UserDialog::addUser(availableUID,availableGID)) { // Add the user to the system, also send next available UID and GID.
getUsers(); // Update users views.
getGroups(); // Update groups view.
}
}
void UserConfig::editUser() {
QString username;
if(myTabWidget->currentPageIndex()==0) { // Users
if(usersIconView->currentItem()) { // Any icon selected?
username=usersIconView->currentItem()->text(); // Get the text associated with the icon.
username=username.left(username.find(" - (",0,true)); // Strip out the username.
if(UserDialog::editUser(username)) { // Bring up the userinfo dialog.