[PC-BSD Commits] r2754 - pcbsd/trunk/pcbsdusermanager

svn at pcbsd.org svn at pcbsd.org
Thu Sep 11 09:46:14 PDT 2008


Author: kris
Date: 2008-09-11 09:46:13 -0700 (Thu, 11 Sep 2008)
New Revision: 2754

Added:
   pcbsd/trunk/pcbsdusermanager/notroot.cpp
   pcbsd/trunk/pcbsdusermanager/notroot.h
   pcbsd/trunk/pcbsdusermanager/pcbsdusermanager.pro
   pcbsd/trunk/pcbsdusermanager/pcbsdusermanager.qrc
Removed:
   pcbsd/trunk/pcbsdusermanager/CMakeLists.txt
Modified:
   pcbsd/trunk/pcbsdusermanager/SimpleDlg.ui
   pcbsd/trunk/pcbsdusermanager/adddlgcode.cpp
   pcbsd/trunk/pcbsdusermanager/adddlgcode.h
   pcbsd/trunk/pcbsdusermanager/adduser.ui
   pcbsd/trunk/pcbsdusermanager/changepasscode.cpp
   pcbsd/trunk/pcbsdusermanager/changepasscode.h
   pcbsd/trunk/pcbsdusermanager/changepassdialog.ui
   pcbsd/trunk/pcbsdusermanager/mainDlg.ui
   pcbsd/trunk/pcbsdusermanager/maindlgcode.cpp
   pcbsd/trunk/pcbsdusermanager/maindlgcode.h
   pcbsd/trunk/pcbsdusermanager/notroot.ui
   pcbsd/trunk/pcbsdusermanager/pcbsdusermanager.cpp
   pcbsd/trunk/pcbsdusermanager/pcbsdusermanager.h
   pcbsd/trunk/pcbsdusermanager/simpleaddcode.cpp
   pcbsd/trunk/pcbsdusermanager/simpleaddcode.h
   pcbsd/trunk/pcbsdusermanager/simpleadddlg.ui
   pcbsd/trunk/pcbsdusermanager/simpledlgcode.cpp
   pcbsd/trunk/pcbsdusermanager/simpledlgcode.h
   pcbsd/trunk/pcbsdusermanager/user.cpp
   pcbsd/trunk/pcbsdusermanager/usermanagerback.cpp
   pcbsd/trunk/pcbsdusermanager/usermanagerback.h
Log:

Added the QT4 version of pcbsdusermanager



Modified: pcbsd/trunk/pcbsdusermanager/SimpleDlg.ui
===================================================================
--- pcbsd/trunk/pcbsdusermanager/SimpleDlg.ui	2008-09-11 15:33:50 UTC (rev 2753)
+++ pcbsd/trunk/pcbsdusermanager/SimpleDlg.ui	2008-09-11 16:46:13 UTC (rev 2754)
@@ -1,289 +1,249 @@
-<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
-<class>SimpleDlg</class>
-<widget class="QDialog">
-    <property name="name">
-        <cstring>SimpleDlg</cstring>
-    </property>
-    <property name="geometry">
-        <rect>
-            <x>0</x>
-            <y>0</y>
-            <width>577</width>
-            <height>188</height>
-        </rect>
-    </property>
-    <property name="caption">
-        <string>PC-BSD User Manager</string>
-    </property>
-    <grid>
-        <property name="name">
-            <cstring>unnamed</cstring>
-        </property>
-        <widget class="QLayoutWidget" row="0" column="0" rowspan="1" colspan="2">
-            <property name="name">
-                <cstring>layout6</cstring>
-            </property>
-            <vbox>
-                <property name="name">
-                    <cstring>unnamed</cstring>
-                </property>
-                <widget class="QLayoutWidget">
-                    <property name="name">
-                        <cstring>layout5</cstring>
-                    </property>
-                    <hbox>
-                        <property name="name">
-                            <cstring>unnamed</cstring>
-                        </property>
-                        <widget class="QPushButton">
-                            <property name="name">
-                                <cstring>addUserBut</cstring>
-                            </property>
-                            <property name="text">
-                                <string>&amp;Add</string>
-                            </property>
-                            <property name="accel">
-                                <string>Alt+A</string>
-                            </property>
-                            <property name="iconSet">
-                                <iconset>image0</iconset>
-                            </property>
-                        </widget>
-                        <widget class="QPushButton">
-                            <property name="name">
-                                <cstring>removeUserBut</cstring>
-                            </property>
-                            <property name="text">
-                                <string>&amp;Remove</string>
-                            </property>
-                            <property name="accel">
-                                <string>Alt+R</string>
-                            </property>
-                            <property name="iconSet">
-                                <iconset>image1</iconset>
-                            </property>
-                        </widget>
-                        <spacer>
-                            <property name="name">
-                                <cstring>spacer10</cstring>
-                            </property>
-                            <property name="orientation">
-                                <enum>Horizontal</enum>
-                            </property>
-                            <property name="sizeType">
-                                <enum>Expanding</enum>
-                            </property>
-                            <property name="sizeHint">
-                                <size>
-                                    <width>40</width>
-                                    <height>31</height>
-                                </size>
-                            </property>
-                        </spacer>
-                        <widget class="QPushButton">
-                            <property name="name">
-                                <cstring>rootPasswordBut</cstring>
-                            </property>
-                            <property name="text">
-                                <string>&amp;Change Admin Password...</string>
-                            </property>
-                            <property name="accel">
-                                <string>Alt+C</string>
-                            </property>
-                            <property name="iconSet">
-                                <iconset>image2</iconset>
-                            </property>
-                        </widget>
-                        <widget class="QPushButton">
-                            <property name="name">
-                                <cstring>advancedBut</cstring>
-                            </property>
-                            <property name="minimumSize">
-                                <size>
-                                    <width>0</width>
-                                    <height>31</height>
-                                </size>
-                            </property>
-                            <property name="text">
-                                <string>A&amp;dvanced View</string>
-                            </property>
-                            <property name="accel">
-                                <string>Alt+D</string>
-                            </property>
-                        </widget>
-                    </hbox>
-                </widget>
-                <widget class="Line">
-                    <property name="name">
-                        <cstring>line2</cstring>
-                    </property>
-                    <property name="frameShape">
-                        <enum>HLine</enum>
-                    </property>
-                    <property name="frameShadow">
-                        <enum>Sunken</enum>
-                    </property>
-                    <property name="orientation">
-                        <enum>Horizontal</enum>
-                    </property>
-                </widget>
-            </vbox>
+<ui version="4.0" >
+ <class>SimpleDlg</class>
+ <widget class="QDialog" name="SimpleDlg" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>577</width>
+    <height>188</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>PC-BSD User Manager</string>
+  </property>
+  <property name="windowIcon" >
+   <iconset resource="pcbsdusermanager.qrc" >
+    <normaloff>:/add_user.png</normaloff>:/add_user.png</iconset>
+  </property>
+  <layout class="QGridLayout" >
+   <item row="0" column="0" colspan="2" >
+    <layout class="QVBoxLayout" >
+     <item>
+      <layout class="QHBoxLayout" >
+       <item>
+        <widget class="QPushButton" name="addUserBut" >
+         <property name="text" >
+          <string>&amp;Add</string>
+         </property>
+         <property name="icon" >
+          <iconset resource="pcbsdusermanager.qrc" >
+           <normaloff>:/add_user.png</normaloff>:/add_user.png</iconset>
+         </property>
+         <property name="shortcut" >
+          <string>Alt+A</string>
+         </property>
         </widget>
-        <widget class="KListBox" row="1" column="0">
-            <property name="name">
-                <cstring>userList</cstring>
-            </property>
-            <property name="sizePolicy">
-                <sizepolicy>
-                    <hsizetype>0</hsizetype>
-                    <vsizetype>7</vsizetype>
-                    <horstretch>0</horstretch>
-                    <verstretch>0</verstretch>
-                </sizepolicy>
-            </property>
-            <property name="minimumSize">
-                <size>
-                    <width>200</width>
-                    <height>0</height>
-                </size>
-            </property>
+       </item>
+       <item>
+        <widget class="QPushButton" name="removeUserBut" >
+         <property name="text" >
+          <string>&amp;Remove</string>
+         </property>
+         <property name="icon" >
+          <iconset resource="pcbsdusermanager.qrc" >
+           <normaloff>:/delete_user.png</normaloff>:/delete_user.png</iconset>
+         </property>
+         <property name="shortcut" >
+          <string>Alt+R</string>
+         </property>
         </widget>
-        <widget class="QLayoutWidget" row="1" column="1">
-            <property name="name">
-                <cstring>layout9</cstring>
-            </property>
-            <vbox>
-                <property name="name">
-                    <cstring>unnamed</cstring>
-                </property>
-                <widget class="QFrame">
-                    <property name="name">
-                        <cstring>frame8</cstring>
-                    </property>
-                    <property name="sizePolicy">
-                        <sizepolicy>
-                            <hsizetype>5</hsizetype>
-                            <vsizetype>0</vsizetype>
-                            <horstretch>0</horstretch>
-                            <verstretch>0</verstretch>
-                        </sizepolicy>
-                    </property>
-                    <property name="frameShape">
-                        <enum>StyledPanel</enum>
-                    </property>
-                    <property name="frameShadow">
-                        <enum>Raised</enum>
-                    </property>
-                    <property name="lineWidth">
-                        <number>0</number>
-                    </property>
-                    <grid>
-                        <property name="name">
-                            <cstring>unnamed</cstring>
-                        </property>
-                        <widget class="QCheckBox" row="1" column="1">
-                            <property name="name">
-                                <cstring>canAdminCheck</cstring>
-                            </property>
-                            <property name="text">
-                                <string>Can administrate s&amp;ystem</string>
-                            </property>
-                            <property name="accel">
-                                <string>Alt+Y</string>
-                            </property>
-                        </widget>
-                        <widget class="QPushButton" row="2" column="1">
-                            <property name="name">
-                                <cstring>changePasswordBut</cstring>
-                            </property>
-                            <property name="text">
-                                <string>C&amp;hange Password...</string>
-                            </property>
-                            <property name="accel">
-                                <string>Alt+H</string>
-                            </property>
-                            <property name="iconSet">
-                                <iconset>image3</iconset>
-                            </property>
-                        </widget>
-                        <widget class="QLineEdit" row="0" column="1">
-                            <property name="name">
-                                <cstring>fullnameBox</cstring>
-                            </property>
-                            <property name="sizePolicy">
-                                <sizepolicy>
-                                    <hsizetype>1</hsizetype>
-                                    <vsizetype>0</vsizetype>
-                                    <horstretch>1</horstretch>
-                                    <verstretch>0</verstretch>
-                                </sizepolicy>
-                            </property>
-                        </widget>
-                        <widget class="QLabel" row="0" column="0">
-                            <property name="name">
-                                <cstring>fullnameLbl</cstring>
-                            </property>
-                            <property name="sizePolicy">
-                                <sizepolicy>
-                                    <hsizetype>1</hsizetype>
-                                    <vsizetype>5</vsizetype>
-                                    <horstretch>0</horstretch>
-                                    <verstretch>0</verstretch>
-                                </sizepolicy>
-                            </property>
-                            <property name="text">
-                                <string>Full Name:</string>
-                            </property>
-                        </widget>
-                    </grid>
-                </widget>
-                <spacer>
-                    <property name="name">
-                        <cstring>spacer17</cstring>
-                    </property>
-                    <property name="orientation">
-                        <enum>Vertical</enum>
-                    </property>
-                    <property name="sizeType">
-                        <enum>Expanding</enum>
-                    </property>
-                    <property name="sizeHint">
-                        <size>
-                            <width>21</width>
-                            <height>20</height>
-                        </size>
-                    </property>
-                </spacer>
-            </vbox>
+       </item>
+       <item>
+        <spacer name="spacer10" >
+         <property name="orientation" >
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeType" >
+          <enum>QSizePolicy::Expanding</enum>
+         </property>
+         <property name="sizeHint" stdset="0" >
+          <size>
+           <width>40</width>
+           <height>31</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QPushButton" name="rootPasswordBut" >
+         <property name="text" >
+          <string>&amp;Change Admin Password...</string>
+         </property>
+         <property name="icon" >
+          <iconset resource="pcbsdusermanager.qrc" >
+           <normaloff>:/admin_password.png</normaloff>:/admin_password.png</iconset>
+         </property>
+         <property name="shortcut" >
+          <string>Alt+C</string>
+         </property>
         </widget>
-    </grid>
-</widget>
-<images>
-    <image name="image0">
-        <data format="PNG" length="1328">89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b000004f749444154388d75954b6c5c6719869fff72ce9c33638f676c8f6fe35b9a98a414bb418814042844102115da74512965d122402c90000936850d42824a5524565db02865c1020955a92a05814a4a2a959686a46daa366d5ae3d476d3c4f1d81e7baee7feff2c429c10bbeff293be47eff7eafbbf5f586b79e278814f529a82ebf060a9d73ea9dda17db99c8350c5ad389117c77adefa469ccae4ce9e634f466880d5bad8156a0cecad9a7210f2fbf52d53e929d4c028068765a53c3872647efef34b43feb9aa106a47af0668b4770727197a36677e373de654966afdacd5d6087b21351b1855e4ae99bee10f2e1d7aa7df79735608b1136c3f3108beb4d94abf559d9ce4f80f7fce3f4fbfc0f9979f2708da185943eabcb2d656dff8004f6b19de6c7ae42658ef9c040021a8375b595bfa5385b199833c3c790ffd43639cf9cb9fb8fce155507956d602bdb822c71d472eec70bc77d8ec801a01c6da77a41e7d7f60e4d3c374d6505672f4a14798b9fb5e2e5e38cbfc85d3f4f8c5eb797f6349c95d325e0eeea80ae8492c61142274e38924b287e9d4c048885a4cdf35c9f4817d3c7df98d7fa7f5f844a518a7771ad300278bce76c!
 15ac04bf972e2f2d0c06789b0af3b426c11344a2431387908ea404a6fcfe8d6e6c6a5e72626f680354861b0e636f0ed115b405bc1f962ccec88cbe1fc449045d1151cbf441cdc804a0d6e8e280856ca0333205d5a728a153b434f6f7c0b8cbd31fe6d492053c3d30baff26c4e87df193e7c347bc979ed0b73237b1c5793a531cfbef0fe8b9b72dff7ea668af9da1007f60f50bbba4992bfcdb15060338b9002a01246ce09c73a028bd83061fb8fd7377e23836361a172856b1faf7060f600ff5838a8c7ee9ecb77b6d63b51b08a94162dd2ede935c0f42187ce7a4cb7d1263189de5b993bfae8838f55a5d49c7af194292d1ef9eec1afdde7573f771c716d8d81a951be5fbcf6d5332ffda7d6352ce4fdfcc5304c9eca8c790b54b80d767d4defcc001b1fd669ae37acd48eb1be07cac12a25eff94cd9afd79b9c3b378fd28a562b464ab8ff9bfbf385bc379773f5dc33cf9cfff6f050f6ab6edc38018412c064068164fc5393fce0e06f074bfee0c4626381e5e6329da44da95066b8344c7f6180d1f20839d7c1f772602541901227861fffe42be2ca479dc7ad3587b61dbf779657fafabb428938dcc89d1ceb1b97ac76d751ca211596d3574ff2eadadfb1ca60b2889f1ef925bed7871016a5255966f8d7d94bb839e3e47def5ee0650d501af5f6eeb9af3a62a520a549e278a!
 c461f01166fbfe27abc8431062115cde56584fa0505df27cd62ba41cce5c51!
 5ae5ddf60b45a702ebcbefe28f0d48deb963579bbf52ee814cf8df1acc15137d62e361059459838245653c2d09b2fa094a2d18e595f6f628ca5a7e053194c29975be5ed2832dd89da4b96820fcac3a6816bab5fec48012cbe564078295918d18a22b435acd63ab4b547a3dda1d38d09ba29dd4e4ad035a4898db6c17d6bcee33d899cb286205b999d2b1e7ef3d8c420152161536571f3b9fbcf141b835e515801829f9dfa5b5de2628c012cc6582c166b6cdaeda6b7d6cd0afe6c0124a4236f8f2be40363fd2025ccbb22b15f7ffe47cdabfee5b0e520158c777f8d6b8ba459429a19d234c518439a19daad88ffa16ebd63e5189008d7418e57607c085c6d25c2e6cad35dbcde049bedfedbdc297df33628c7222448658d4c4dfdaf7f289440583f17355b924c00e5a92e9b4b021bfcff6dd94dff0572343bc587ec53bc0000000049454e44ae426082</data>
-    </image>
-    <image name="image1">
-        <data format="PNG" length="1416">89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b0000054f49444154388d6d95696c5c5719869f73b7997b6773bcc4769c4ce2384d4cc0c4a2c42ea484525ab136aa2050a48aa86a5a01554154080581042ab4f0075554024758fc406a555a55a52a4554858ab489d32a891b992c36a91d6fb163cfd878c6e3b9fbdc7bf8e12c4aedf7df91ce79cefb2de73b424a49df2326eb4900ae2f40f2b86572c44ad298c9a6643a6d9d5209fb7da7f462588be4eace9b3af01b1f0da03e2bd7052b0acc1695ee8a2d9ff5c258096a0aa10c51adec5dd9ba86bb5439ba33ac149f148ab2e6ac061045eb728922ccd686dab39b9a2de5f2559de2d232d920248a1788950ce94ce78fc38a7d3c0ae263885b5d6b002bceda1bafe933446eef6d1ffb24bdf71fe6f517fb99ba3488e783d41690ad6d293b48dd6b97178e09455d0b2e57c5ba5429b189f113b9f6c4b6dbf771b835cfabcf1fe5ccc03fa83ad344988848cbbb814028eb382e7b82eb595624a8727515c7f19061e4a65a36efee62710acb3278f03b3fe2a3ddbd7c70f12c33970771574a45a4ca870ba801dc73de4551c15061a02dc17c5225114ba2185b6ae66b1b728d5d54e74031414fd2fda97d74f7ece50fbfbc305ca8ac3ca3ebc69a6!
 83580063b46d357c1f74efafcb54165560522b05241ffccf8d8cf1a3a5b048a019a05ee12c43e1b9b3a4e572bee8ca62928446bc1910228800a1927e68e3d5f427eb19b96709c48d157a4942514b31eaf0ca20aaacac8e88c4ce8f4e7dbbbb0653d73caed08d5e57a4eb50f87508bc1d8b089a9f4e7a90f2566ec962dadf8d0b973de5f3efe91f614482acbcb9c3833f996d5bce7bdb2d180ad7752592a23a48d94abb9beb5cf249a0041ecb3ec4a4ef9f730767517cef1b1b7f52ded2363f32b0cfc679ae9e580e1ca1d17fe36dca55c2ad461a8118a0c518850a8ddea58488c738ef186f482729350bfa1a8ca1659f376e9c5cb3da36f8d3edc73b06b6bfaeefd88c2026d6d4dfca07bf1bb7d47dfbb6f6e3e7cbfad25eef783daf9842617ae77c77570d3d0b278ee73873e7d77540a827f9f1f1a72ba0e987563833bc4d97fb2ef91c7197ceae7e40e3d8193dfcdc2a2431c47e6c387f7ee0802b9e3dd81c907ec6aed4aac961e0dc3e0cd55a352f25c569cfef21377ee5574157f456379bcc607be496bb8c4e63bf743be135c9b99d75fc1fef611b4ed9d18224255557443259749625a26afbc36303236317bf0b7bf7a745801e830f8f3a5df0f2cc6159ba45ea1b12da067a34bbe6b2b9a11a13bf3f8a3e7a1792b567333565227913048183a86a6118631c3ff9d626a726!
 99b40e9bd513c017d71ccd7275f18bc128d4f63254ad46dac924d7b987211f!
 7c219e60b15c4e19f606dca63ea2a66224132a923258c4f14b878719a2892663261ecbe01f65c08438effafc8efbcf102e6dc1889c208c9e00a896091e2f02cca37bf4fddf60eb249954cda4437343cafc6d5b9124be52ac9a44e5dce240c64cf8de2390e08d8bfa543fcb0b92b079b1a21938628423323b6eda967e2e53fe2e7dbb1932984e7e0fa01b6ede138213216d46a82a4a9535e5636dc000b453cb6b9437d72f767ad46b56333e4b7e22e05a8291d23f6a9ef4ca30e8d71eab107bd3fe50e9ef6cdeca2a8859a65e9c4714410d608c39a301222eeddd778f426d850be52bfdd6a543766a0ad15bb1473e6a993ff4aed6cbeed13dfdbb34d2d2f91db99213f345cfbda3b4ffff4c2a15f9f74d3cdd46575a25a88e305388e8795165c1b8cab3976bce8a1578f55df2c2ea670661d5ef8c5db274a05e70bd327261e78bfef6c31b66d8ebd7c568e0ece1fc9d8f32777fdfd19223db166a2ad19422a2cb404f181979e9f7843d326934d95e0ab3ac8084e4f9dbcf2ad914b859736b8d1d34118f525afbdfdf5bf869bfa3f375962a8bcfef4a50000000049454e44ae426082</data>
-    </image>
-    <image name="image2">
-        <data format="PNG" length="781">89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b000002d449444154388d9d94c14b1b4114c6bf4d8c51239a1a287a33888242a1a0f86f782978e825f7524b05f152b0f62088221e1415f4a2505b68a9a5a7de4af5543dd45aaae6621b15d2c468e226d99d999d793d6c6292756d4d3f78306fe7bddf7cfb76198d8800009aa6c1a99999d7f7350d4ffcfeda4828d4042282ae1bc8668d0d221a1f1e1efceaec29f24044a5a44c13136b9185857774781823a5141525a5a468f417cdcfbfa58989b5881b9888dcc16363cb91c5c50dcae74d925292aeeb944aa5289148d0d9d91971ce29973368696983c6c696236e60cd398ad1d1f9604343ddd1c8c8c3a0d7ab2195bac0e6e637241269101102013ffafa3ad0d9d901ce2dccccbc4a3326c293938fd2e5a3f0385f450811e9efef0efafd3e249329acae7ec4f6f6c1782cf6fbced0d0a0b6bf1f7bbabefe39bdbbbb8740a01ebdbd5d4121c4b5915c033326067a7ac2d0751d3b3bfb383e4ecc4e4f0f3d9f9a7a9c0680e9e9a1d96c363fbeb5f503272727e8e909833131f04fb06932b4b585601806a2d11398267befac999b1b993d3fd7914c26d1d2d208d364ce1237c71c8c31e47239643259acac3cfb74adab5027a58410028cf1db81!
 0dc300e71c9c5f6f284a080b524a98a6e90aae294fac46efcb17a178307ffa054ad7d15a7b0a76b7f6831b78b6210e9f7e001e4fa03b140f8a60cd1b5fda7a50dcbffadd32f79a8e54d0df5e535f77a3cbbfc9324c78d2ec67f3de65b8c271ceef6d6fedea82c77309800150558195d58cf8de697b7321bf029b1cf05012b032d5db5580e72c0e93fbae1e95c00c80600055e71404e0220f700593b981390196aa0e4c045c32804b80c86638c15c0090ca8edbc892405e008aec20b2194eb05dac00291daecadc0136442abb5691bd5f0097cb05ac008f568290a359150e21aa02acc886122a1b89cac00ed8adc05e0f60b9c1ca5dde7090035c7157e4587de9635484ba615d8a1cabbc76ae1c37312bbaf7fda20bf0e17fd5c4ac6871fd07292c0f8737c2e84b0000000049454e44ae426082</data>
-    </image>
-    <image name="image3">
-        <data format="PNG" length="804">89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b000002eb49444154388da594cd4b545118c69feb388e3a129382e42e11037591a0b80bfa0fb4958b36b3adc8c8103781b9114433093f41c1746141a12d5b15292d52280d3f63083f19efccd599eeccfd3867ce7d5b8c338d77ee98d2039773df7bdef7779ff372ce91880800204912ec1a1878532f4978e4f114f8cbcaae8088a0aa3a62317d9e88badbdb5bbfdb6b523c10d1df20433d3d33fed1d139dadada25cbb2282521046d6fefd0f0f03beae999f13b8189c819dcd535e11f1b9b274d33480841aaaa92a22824cb3285c361628c513caed3f8f83c75754df89dc092bd159d9dc3bee2e2c25f1d1d777d2e97044539c1c2c22a6439022282d7eb41636315aaababc058020303af23a6c92b7b7b1f44325b91675f0ae7dcdfd454e3f378dc0885144c4f7fc0d2d266f7eeeed1d5b6b656696363f7f1ecece7c8caca0f78bd456868b8e1e39c67b5240b6c9abcb9b6b612aaaa627979037b7bf2607f7fdbb3bebe871100e8ef6f1b8cc5b4eec5c575ecefefa3b6b612a6c99bff09360c13151565d0751ddbdbfb300cf3bd3d6768a863f0f858452814426969090cc3b4a7383966304d13f1781cd1680c93934f3f65559de60921c03987!
 69b28b81755d07630c8c6517a4c4790242081886e108cecf0c022375d75fad067ddac15758aa8a6b0507088cd4dd7602bfdd09c2ad6e820565d494057d8191bafaaafb6be90393de6e2bcfebe63cc5852d45e5e5395d9e275d96616ac6fccd276b77ce383e51d172eb9e1f2e7700c03180dc6d709288576161f0634b2a4e83c351824b2c03ece7e5ed262cb8be7d41385a92fe94062b1102e22780e097830a0b583b027e9b50225e077094008d03894bb440584040015406082bc9b083233102740e386c1d47690c08aa001340c202849564d8c144a7c9860d4c04502a01001749031a4f03932321f3923cb38fa173c0e0803b2f09cb283a0bb19ce7900bccac24d4a2dcc0f448b61f9c072eca07b40b029d5690a13377c5e17139c0ad641fb31eebdcb9c313774ec7532f5eaefb012ffe4353a9973fdc0c23d7d8c95ff30000000049454e44ae426082</data>
-    </image>
-</images>
-<tabstops>
-    <tabstop>addUserBut</tabstop>
-    <tabstop>removeUserBut</tabstop>
-    <tabstop>rootPasswordBut</tabstop>
-    <tabstop>advancedBut</tabstop>
-    <tabstop>userList</tabstop>
-    <tabstop>fullnameBox</tabstop>
-    <tabstop>canAdminCheck</tabstop>
-    <tabstop>changePasswordBut</tabstop>
-</tabstops>
-<layoutdefaults spacing="6" margin="11"/>
-<includehints>
-    <includehint>klistbox.h</includehint>
-</includehints>
-</UI>
+       </item>
+       <item>
+        <widget class="QPushButton" name="advancedBut" >
+         <property name="minimumSize" >
+          <size>
+           <width>0</width>
+           <height>31</height>
+          </size>
+         </property>
+         <property name="text" >
+          <string>A&amp;dvanced View</string>
+         </property>
+         <property name="shortcut" >
+          <string>Alt+D</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <widget class="Line" name="line2" >
+       <property name="frameShape" >
+        <enum>QFrame::HLine</enum>
+       </property>
+       <property name="frameShadow" >
+        <enum>QFrame::Sunken</enum>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item row="1" column="0" >
+    <widget class="Q3ListBox" name="userList" >
+     <property name="sizePolicy" >
+      <sizepolicy vsizetype="Expanding" hsizetype="Fixed" >
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize" >
+      <size>
+       <width>200</width>
+       <height>0</height>
+      </size>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="1" >
+    <layout class="QVBoxLayout" >
+     <item>
+      <widget class="Q3Frame" name="frame8" >
+       <property name="sizePolicy" >
+        <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="frameShape" >
+        <enum>QFrame::StyledPanel</enum>
+       </property>
+       <property name="frameShadow" >
+        <enum>QFrame::Raised</enum>
+       </property>
+       <property name="lineWidth" >
+        <number>0</number>
+       </property>
+       <layout class="QGridLayout" >
+        <item row="1" column="1" >
+         <widget class="QCheckBox" name="canAdminCheck" >
+          <property name="text" >
+           <string>Can administrate s&amp;ystem</string>
+          </property>
+          <property name="shortcut" >
+           <string>Alt+Y</string>
+          </property>
+         </widget>
+        </item>
+        <item row="2" column="1" >
+         <widget class="QPushButton" name="changePasswordBut" >
+          <property name="text" >
+           <string>C&amp;hange Password...</string>
+          </property>
+          <property name="icon" >
+           <iconset resource="pcbsdusermanager.qrc" >
+            <normaloff>:/change_password.png</normaloff>:/change_password.png</iconset>
+          </property>
+          <property name="shortcut" >
+           <string>Alt+H</string>
+          </property>
+         </widget>
+        </item>
+        <item row="0" column="1" >
+         <widget class="QLineEdit" name="fullnameBox" >
+          <property name="sizePolicy" >
+           <sizepolicy vsizetype="Fixed" hsizetype="Minimum" >
+            <horstretch>1</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+         </widget>
+        </item>
+        <item row="0" column="0" >
+         <widget class="QLabel" name="fullnameLbl" >
+          <property name="sizePolicy" >
+           <sizepolicy vsizetype="Preferred" hsizetype="Minimum" >
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="text" >
+           <string>Full Name:</string>
+          </property>
+          <property name="wordWrap" >
+           <bool>false</bool>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+     </item>
+     <item>
+      <spacer name="spacer17" >
+       <property name="orientation" >
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeType" >
+        <enum>QSizePolicy::Expanding</enum>
+       </property>
+       <property name="sizeHint" stdset="0" >
+        <size>
+         <width>21</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11" />
+ <customwidgets>
+  <customwidget>
+   <class>Q3Frame</class>
+   <extends>QFrame</extends>
+   <header>Qt3Support/Q3Frame</header>
+   <container>1</container>
+  </customwidget>
+  <customwidget>
+   <class>Q3ListBox</class>
+   <extends>Q3Frame</extends>
+   <header>q3listbox.h</header>
+  </customwidget>
+ </customwidgets>
+ <tabstops>
+  <tabstop>addUserBut</tabstop>
+  <tabstop>removeUserBut</tabstop>
+  <tabstop>rootPasswordBut</tabstop>
+  <tabstop>advancedBut</tabstop>
+  <tabstop>userList</tabstop>
+  <tabstop>fullnameBox</tabstop>
+  <tabstop>canAdminCheck</tabstop>
+  <tabstop>changePasswordBut</tabstop>
+ </tabstops>
+ <resources>
+  <include location="pcbsdusermanager.qrc" />
+ </resources>
+ <connections/>
+</ui>

Modified: pcbsd/trunk/pcbsdusermanager/adddlgcode.cpp
===================================================================
--- pcbsd/trunk/pcbsdusermanager/adddlgcode.cpp	2008-09-11 15:33:50 UTC (rev 2753)
+++ pcbsd/trunk/pcbsdusermanager/adddlgcode.cpp	2008-09-11 16:46:13 UTC (rev 2754)
@@ -29,13 +29,11 @@
 #include <qlineedit.h>
 #include <qtooltip.h>
         
-#include <kurlrequester.h>
 #include <klineedit.h>
 #include <kmessagebox.h>
 #include <klocale.h>
 
-AddDlgCode::AddDlgCode(UserManagerBackend *back, QWidget *parent, const char *name)
-    :AddUserUI(parent, name)
+void AddDlgCode::programInit(UserManagerBackend *back)
 {
     this->back = back;
     white = QColor(255, 255, 255);
@@ -89,7 +87,7 @@
     if (username != "") {
 	homeDir+="/";
     }
-    homeBox->lineEdit()->setText(homeDir);
+    homeBox->setText(homeDir);
     
     //Validate
     int usernameError = back->validateUsername(username);
@@ -161,7 +159,7 @@
 
 void AddDlgCode::homeChanged()
 {
-    int homeError = back->validateHome(homeBox->lineEdit()->text());
+    int homeError = back->validateHome(homeBox->text());
     
     QColor homeBoxColour = white;
     QToolTip::add(homeBox, tr("Directory will be used"));
@@ -188,7 +186,7 @@
 	break;
     }
     
-    homeBox->lineEdit()->setPaletteBackgroundColor(homeBoxColour);
+    homeBox->setPaletteBackgroundColor(homeBoxColour);
 }
 
 void AddDlgCode::submit()
@@ -234,7 +232,7 @@
     }
     
     //Home directory validation
-    QString home = homeBox->lineEdit()->text();
+    QString home = homeBox->text();
     int homeError = back->validateHome(home);
 	    
     switch (homeError)
@@ -266,7 +264,7 @@
     switch (passError)
     {
     case 0:
-	back->changePassword(username, password);
+	//back->changePassword(username, password);
 	close();
 	break;
     case 1:
@@ -296,7 +294,7 @@
        int abortAdd = 0;
        if (warnError)
        {
-	   abortAdd = KMessageBox::warningYesNo(this, warnText, tr("Warning!"), tr("&Yes"), tr("&No"));
+	   abortAdd = QMessageBox::warning(this, tr("Warning!"), warnText, QMessageBox::Yes | QMessageBox::No, QMessageBox::No);
        }
        //Check we didn't abort the operation
        if (abortAdd == 0)
@@ -304,8 +302,8 @@
 	   QString group = groupBox->currentText();
 	   if (groupRadioNew->isChecked() == true) { group = QString::null; }
 	   back->addUser(username, fullname, home, shellBox->currentText(), group, password);
+	   back->changePassword(username, password);
        }
    }
 }
 
-#include "adddlgcode.moc"

Modified: pcbsd/trunk/pcbsdusermanager/adddlgcode.h
===================================================================
--- pcbsd/trunk/pcbsdusermanager/adddlgcode.h	2008-09-11 15:33:50 UTC (rev 2753)
+++ pcbsd/trunk/pcbsdusermanager/adddlgcode.h	2008-09-11 16:46:13 UTC (rev 2754)
@@ -24,15 +24,20 @@
 #ifndef ADDDLGCODE_H
 #define ADDDLGCODE_H
 
-#include "adduser.h"
+#include "ui_adduser.h"
 #include "usermanagerback.h"
         
-#include <qcolor.h>
 
-class AddDlgCode: public AddUserUI {
+class AddDlgCode: public QDialog, private Ui::AddUserUI 
+{
 Q_OBJECT
 public:
-    AddDlgCode(UserManagerBackend *back, QWidget *parent = 0, const char *name = 0);
+    AddDlgCode() : QDialog()
+    {
+      setupUi(this);
+    }
+
+    void programInit(UserManagerBackend *back);
     
 public slots:
     void changeGroupBox();

Modified: pcbsd/trunk/pcbsdusermanager/adduser.ui
===================================================================
--- pcbsd/trunk/pcbsdusermanager/adduser.ui	2008-09-11 15:33:50 UTC (rev 2753)
+++ pcbsd/trunk/pcbsdusermanager/adduser.ui	2008-09-11 16:46:13 UTC (rev 2754)
@@ -1,447 +1,411 @@
-<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
-<class>AddUserUI</class>
-<widget class="QDialog">
-    <property name="name">
-        <cstring>AddUserUI</cstring>
-    </property>
-    <property name="geometry">
-        <rect>
-            <x>0</x>
-            <y>0</y>
-            <width>472</width>
-            <height>367</height>
-        </rect>
-    </property>
-    <property name="caption">
-        <string>Add User</string>
-    </property>
-    <property name="modal">
-        <bool>true</bool>
-    </property>
-    <grid>
-        <property name="name">
-            <cstring>unnamed</cstring>
+<ui version="4.0" >
+ <class>AddUserUI</class>
+ <widget class="QDialog" name="AddUserUI" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>472</width>
+    <height>367</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Add User</string>
+  </property>
+  <property name="windowIcon" >
+   <iconset resource="pcbsdusermanager.qrc" >
+    <normaloff>:/add_user.png</normaloff>:/add_user.png</iconset>
+  </property>
+  <property name="modal" >
+   <bool>true</bool>
+  </property>
+  <layout class="QGridLayout" >
+   <item row="0" column="0" >
+    <widget class="Q3Frame" name="frame7" >
+     <property name="sizePolicy" >
+      <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="frameShape" >
+      <enum>QFrame::StyledPanel</enum>
+     </property>
+     <property name="frameShadow" >
+      <enum>QFrame::Raised</enum>
+     </property>
+     <property name="lineWidth" >
+      <number>0</number>
+     </property>
+     <layout class="QGridLayout" >
+      <item row="3" column="1" >
+       <widget class="QComboBox" name="shellBox" >
+        <property name="editable" >
+         <bool>true</bool>
         </property>
-        <widget class="QFrame" row="0" column="0">
-            <property name="name">
-                <cstring>frame7</cstring>
-            </property>
-            <property name="sizePolicy">
-                <sizepolicy>
-                    <hsizetype>5</hsizetype>
-                    <vsizetype>0</vsizetype>
-                    <horstretch>0</horstretch>
-                    <verstretch>0</verstretch>
-                </sizepolicy>
-            </property>
-            <property name="frameShape">
-                <enum>StyledPanel</enum>
-            </property>
-            <property name="frameShadow">
-                <enum>Raised</enum>
-            </property>
-            <property name="lineWidth">
-                <number>0</number>
-            </property>
-            <grid>
-                <property name="name">
-                    <cstring>unnamed</cstring>
-                </property>
-                <widget class="QComboBox" row="3" column="1">
-                    <property name="name">
-                        <cstring>shellBox</cstring>
-                    </property>
-                    <property name="editable">
-                        <bool>true</bool>
-                    </property>
-                </widget>
-                <widget class="QLineEdit" row="1" column="1">
-                    <property name="name">
-                        <cstring>fullnameBox</cstring>
-                    </property>
-                </widget>
-                <widget class="QLineEdit" row="0" column="1">
-                    <property name="name">
-                        <cstring>usernameBox</cstring>
-                    </property>
-                    <property name="maxLength">
-                        <number>16</number>
-                    </property>
-                    <property name="toolTip" stdset="0">
-                        <string>The field is empty</string>
-                    </property>
-                </widget>
-                <widget class="QLineEdit" row="5" column="1">
-                    <property name="name">
-                        <cstring>passBox</cstring>
-                    </property>
-                    <property name="echoMode">
-                        <enum>Password</enum>
-                    </property>
-                </widget>
-                <widget class="QLineEdit" row="6" column="1">
-                    <property name="name">
-                        <cstring>confirmPassBox</cstring>
-                    </property>
-                    <property name="echoMode">
-                        <enum>Password</enum>
-                    </property>
-                </widget>
-                <widget class="QLabel" row="2" column="0">
-                    <property name="name">
-                        <cstring>homeLabel</cstring>
-                    </property>
-                    <property name="enabled">
-                        <bool>true</bool>
-                    </property>
-                    <property name="frameShape">
-                        <enum>NoFrame</enum>
-                    </property>
-                    <property name="frameShadow">
-                        <enum>Plain</enum>
-                    </property>
-                    <property name="text">
-                        <string>Home Directory:</string>
-                    </property>
-                    <property name="alignment">
-                        <set>AlignVCenter|AlignRight</set>
-                    </property>
-                </widget>
-                <widget class="QLabel" row="3" column="0">
-                    <property name="name">
-                        <cstring>shellLabel</cstring>
-                    </property>
-                    <property name="enabled">
-                        <bool>true</bool>
-                    </property>
-                    <property name="text">
-                        <string>Shell:</string>
-                    </property>
-                    <property name="alignment">
-                        <set>AlignVCenter|AlignRight</set>
-                    </property>
-                </widget>
-                <widget class="QLabel" row="1" column="0">
-                    <property name="name">
-                        <cstring>fullnameLabel</cstring>
-                    </property>
-                    <property name="enabled">
-                        <bool>true</bool>
-                    </property>
-                    <property name="frameShape">
-                        <enum>NoFrame</enum>
-                    </property>
-                    <property name="frameShadow">
-                        <enum>Plain</enum>
-                    </property>
-                    <property name="text">
-                        <string>Full Name:</string>
-                    </property>
-                    <property name="alignment">
-                        <set>AlignVCenter|AlignRight</set>
-                    </property>
-                </widget>
-                <widget class="QButtonGroup" row="4" column="1">
-                    <property name="name">
-                        <cstring>groupGroup</cstring>
-                    </property>
-                    <property name="lineWidth">
-                        <number>0</number>
-                    </property>
-                    <property name="title">
-                        <string></string>
-                    </property>
-                    <grid>
-                        <property name="name">
-                            <cstring>unnamed</cstring>
-                        </property>
-                        <widget class="QRadioButton" row="1" column="0">
-                            <property name="name">
-                                <cstring>groupRadioOld</cstring>
-                            </property>
-                            <property name="sizePolicy">
-                                <sizepolicy>
-                                    <hsizetype>0</hsizetype>
-                                    <vsizetype>0</vsizetype>
-                                    <horstretch>0</horstretch>
-                                    <verstretch>0</verstretch>
-                                </sizepolicy>
-                            </property>
-                            <property name="text">
-                                <string></string>
-                            </property>
-                        </widget>
-                        <widget class="QComboBox" row="1" column="1">
-                            <property name="name">
-                                <cstring>groupBox</cstring>
-                            </property>
-                            <property name="enabled">
-                                <bool>false</bool>
-                            </property>
-                            <property name="sizePolicy">
-                                <sizepolicy>
-                                    <hsizetype>5</hsizetype>
-                                    <vsizetype>0</vsizetype>
-                                    <horstretch>0</horstretch>
-                                    <verstretch>0</verstretch>
-                                </sizepolicy>
-                            </property>
-                        </widget>
-                        <widget class="QRadioButton" row="0" column="0" rowspan="1" colspan="2">
-                            <property name="name">
-                                <cstring>groupRadioNew</cstring>
-                            </property>
-                            <property name="sizePolicy">
-                                <sizepolicy>
-                                    <hsizetype>5</hsizetype>
-                                    <vsizetype>0</vsizetype>
-                                    <horstretch>0</horstretch>
-                                    <verstretch>0</verstretch>
-                                </sizepolicy>
-                            </property>
-                            <property name="text">
-                                <string>New &amp;Group</string>
-                            </property>
-                            <property name="accel">
-                                <string>Alt+G</string>
-                            </property>
-                            <property name="checked">
-                                <bool>true</bool>
-                            </property>
-                        </widget>
-                    </grid>
-                </widget>
-                <widget class="QLabel" row="0" column="0">
-                    <property name="name">
-                        <cstring>usernameLabel</cstring>
-                    </property>
-                    <property name="text">
-                        <string>Username:</string>
-                    </property>
-                    <property name="alignment">
-                        <set>AlignVCenter|AlignRight</set>
-                    </property>
-                </widget>
-                <widget class="QLabel" row="6" column="0">
-                    <property name="name">
-                        <cstring>confirmPassLabel</cstring>
-                    </property>
-                    <property name="enabled">
-                        <bool>true</bool>
-                    </property>
-                    <property name="text">
-                        <string>Confirm Password:</string>
-                    </property>
-                    <property name="alignment">
-                        <set>AlignVCenter|AlignRight</set>
-                    </property>
-                </widget>
-                <widget class="KURLRequester" row="2" column="1">
-                    <property name="name">
-                        <cstring>homeBox</cstring>
-                    </property>
-                    <property name="mode">
-                        <number>18</number>
-                    </property>
-                </widget>
-                <widget class="QLabel" row="4" column="0">
-                    <property name="name">
-                        <cstring>groupLabel</cstring>
-                    </property>
-                    <property name="enabled">
-                        <bool>true</bool>
-                    </property>
-                    <property name="text">
-                        <string>Primary Group:</string>
-                    </property>
-                    <property name="alignment">
-                        <set>AlignVCenter|AlignRight</set>
-                    </property>
-                </widget>
-                <widget class="QLabel" row="5" column="0">
-                    <property name="name">
-                        <cstring>passLabel</cstring>
-                    </property>
-                    <property name="enabled">
-                        <bool>true</bool>
-                    </property>
-                    <property name="frameShape">
-                        <enum>NoFrame</enum>
-                    </property>
-                    <property name="frameShadow">
-                        <enum>Plain</enum>
-                    </property>
-                    <property name="text">
-                        <string>Password:</string>
-                    </property>
-                    <property name="alignment">
-                        <set>AlignVCenter|AlignRight</set>
-                    </property>
-                </widget>
-            </grid>
+       </widget>
+      </item>
+      <item row="1" column="1" >
+       <widget class="QLineEdit" name="fullnameBox" />
+      </item>
+      <item row="0" column="1" >
+       <widget class="QLineEdit" name="usernameBox" >
+        <property name="toolTip" >
+         <string>The field is empty</string>
+        </property>
+        <property name="maxLength" >
+         <number>16</number>
+        </property>
+       </widget>
+      </item>
+      <item row="5" column="1" >
+       <widget class="QLineEdit" name="passBox" >
+        <property name="echoMode" >
+         <enum>QLineEdit::Password</enum>
+        </property>
+       </widget>
+      </item>
+      <item row="6" column="1" >
+       <widget class="QLineEdit" name="confirmPassBox" >
+        <property name="echoMode" >
+         <enum>QLineEdit::Password</enum>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="0" >
+       <widget class="QLabel" name="homeLabel" >
+        <property name="enabled" >
+         <bool>true</bool>
+        </property>
+        <property name="frameShape" >
+         <enum>QFrame::NoFrame</enum>
+        </property>
+        <property name="frameShadow" >
+         <enum>QFrame::Plain</enum>
+        </property>
+        <property name="text" >
+         <string>Home Directory:</string>
+        </property>
+        <property name="alignment" >
+         <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+        </property>
+        <property name="wordWrap" >
+         <bool>false</bool>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="0" >
+       <widget class="QLabel" name="shellLabel" >
+        <property name="enabled" >
+         <bool>true</bool>
+        </property>
+        <property name="text" >
+         <string>Shell:</string>
+        </property>
+        <property name="alignment" >
+         <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+        </property>
+        <property name="wordWrap" >
+         <bool>false</bool>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="0" >
+       <widget class="QLabel" name="fullnameLabel" >
+        <property name="enabled" >
+         <bool>true</bool>
+        </property>
+        <property name="frameShape" >
+         <enum>QFrame::NoFrame</enum>
+        </property>
+        <property name="frameShadow" >
+         <enum>QFrame::Plain</enum>
+        </property>
+        <property name="text" >
+         <string>Full Name:</string>
+        </property>
+        <property name="alignment" >
+         <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+        </property>
+        <property name="wordWrap" >
+         <bool>false</bool>
+        </property>
+       </widget>
+      </item>
+      <item row="4" column="1" >
+       <widget class="Q3ButtonGroup" name="groupGroup" >
+        <property name="title" >
+         <string/>
+        </property>
+        <property name="lineWidth" >
+         <number>0</number>
+        </property>
+        <layout class="QGridLayout" >
+         <item row="1" column="0" >
+          <widget class="QRadioButton" name="groupRadioOld" >
+           <property name="sizePolicy" >
+            <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="text" >
+            <string/>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="1" >
+          <widget class="QComboBox" name="groupBox" >
+           <property name="enabled" >
+            <bool>false</bool>
+           </property>
+           <property name="sizePolicy" >
+            <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+          </widget>
+         </item>
+         <item row="0" column="0" colspan="2" >
+          <widget class="QRadioButton" name="groupRadioNew" >
+           <property name="sizePolicy" >
+            <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="text" >
+            <string>New &amp;Group</string>
+           </property>
+           <property name="shortcut" >
+            <string>Alt+G</string>
+           </property>
+           <property name="checked" >
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </widget>
+      </item>
+      <item row="0" column="0" >
+       <widget class="QLabel" name="usernameLabel" >
+        <property name="text" >
+         <string>Username:</string>
+        </property>
+        <property name="alignment" >
+         <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+        </property>
+        <property name="wordWrap" >
+         <bool>false</bool>
+        </property>
+       </widget>
+      </item>
+      <item row="6" column="0" >
+       <widget class="QLabel" name="confirmPassLabel" >
+        <property name="enabled" >
+         <bool>true</bool>
+        </property>
+        <property name="text" >
+         <string>Confirm Password:</string>
+        </property>
+        <property name="alignment" >
+         <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+        </property>
+        <property name="wordWrap" >
+         <bool>false</bool>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="1" >
+       <widget class="QLineEdit" native="1" name="homeBox" >
+        <property name="mode" stdset="0" >
+         <number>18</number>
+        </property>
+       </widget>
+      </item>
+      <item row="4" column="0" >
+       <widget class="QLabel" name="groupLabel" >
+        <property name="enabled" >
+         <bool>true</bool>
+        </property>
+        <property name="text" >
+         <string>Primary Group:</string>
+        </property>
+        <property name="alignment" >
+         <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+        </property>
+        <property name="wordWrap" >
+         <bool>false</bool>
+        </property>
+       </widget>
+      </item>
+      <item row="5" column="0" >
+       <widget class="QLabel" name="passLabel" >
+        <property name="enabled" >
+         <bool>true</bool>
+        </property>
+        <property name="frameShape" >
+         <enum>QFrame::NoFrame</enum>
+        </property>
+        <property name="frameShadow" >
+         <enum>QFrame::Plain</enum>
+        </property>
+        <property name="text" >
+         <string>Password:</string>
+        </property>
+        <property name="alignment" >
+         <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+        </property>
+        <property name="wordWrap" >
+         <bool>false</bool>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="2" column="0" >
+    <layout class="QVBoxLayout" >
+     <item>
+      <widget class="Line" name="line1" >
+       <property name="frameShape" >
+        <enum>QFrame::HLine</enum>
+       </property>
+       <property name="frameShadow" >
+        <enum>QFrame::Sunken</enum>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <layout class="QHBoxLayout" >
+       <item>
+        <spacer name="spacer12" >
+         <property name="orientation" >
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeType" >
+          <enum>QSizePolicy::Expanding</enum>
+         </property>
+         <property name="sizeHint" stdset="0" >
+          <size>
+           <width>244</width>
+           <height>31</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QPushButton" name="okButton" >
+         <property name="text" >
+          <string>&amp;Ok</string>
+         </property>
+         <property name="icon" >
+          <iconset>
+           <normaloff>image0</normaloff>image0</iconset>
+         </property>
+         <property name="shortcut" >
+          <string>Alt+O</string>
+         </property>
+         <property name="default" >
+          <bool>true</bool>
+         </property>
         </widget>
-        <widget class="QLayoutWidget" row="2" column="0">
-            <property name="name">
-                <cstring>layout14</cstring>
-            </property>
-            <vbox>
-                <property name="name">
-                    <cstring>unnamed</cstring>
-                </property>
-                <widget class="Line">
-                    <property name="name">
-                        <cstring>line1</cstring>
-                    </property>
-                    <property name="frameShape">
-                        <enum>HLine</enum>
-                    </property>
-                    <property name="frameShadow">
-                        <enum>Sunken</enum>
-                    </property>
-                    <property name="orientation">
-                        <enum>Horizontal</enum>
-                    </property>
-                </widget>
-                <widget class="QLayoutWidget">
-                    <property name="name">
-                        <cstring>layout3</cstring>
-                    </property>
-                    <hbox>
-                        <property name="name">
-                            <cstring>unnamed</cstring>
-                        </property>
-                        <spacer>
-                            <property name="name">
-                                <cstring>spacer12</cstring>
-                            </property>
-                            <property name="orientation">
-                                <enum>Horizontal</enum>
-                            </property>
-                            <property name="sizeType">
-                                <enum>Expanding</enum>
-                            </property>
-                            <property name="sizeHint">
-                                <size>
-                                    <width>244</width>
-                                    <height>31</height>
-                                </size>
-                            </property>
-                        </spacer>
-                        <widget class="QPushButton">
-                            <property name="name">
-                                <cstring>okButton</cstring>
-                            </property>
-                            <property name="text">
-                                <string>&amp;Ok</string>
-                            </property>
-                            <property name="accel">
-                                <string>Alt+O</string>
-                            </property>
-                            <property name="default">
-                                <bool>true</bool>
-                            </property>
-                            <property name="iconSet">
-                                <iconset>image0</iconset>
-                            </property>
-                        </widget>
-                        <widget class="QPushButton">
-                            <property name="name">
-                                <cstring>cancelButton</cstring>
-                            </property>
-                            <property name="text">
-                                <string>&amp;Cancel</string>
-                            </property>
-                            <property name="accel">
-                                <string>Alt+C</string>
-                            </property>
-                            <property name="default">
-                                <bool>false</bool>
-                            </property>
-                            <property name="iconSet">
-                                <iconset>image1</iconset>
-                            </property>
-                        </widget>
-                    </hbox>
-                </widget>
-            </vbox>
+       </item>
+       <item>
+        <widget class="QPushButton" name="cancelButton" >
+         <property name="text" >
+          <string>&amp;Cancel</string>
+         </property>
+         <property name="icon" >
+          <iconset>
+           <normaloff>image1</normaloff>image1</iconset>
+         </property>
+         <property name="shortcut" >
+          <string>Alt+C</string>
+         </property>
+         <property name="default" >
+          <bool>false</bool>
+         </property>
         </widget>
-        <spacer row="1" column="0">
-            <property name="name">
-                <cstring>spacer9</cstring>
-            </property>
-            <property name="orientation">
-                <enum>Vertical</enum>
-            </property>
-            <property name="sizeType">
-                <enum>Expanding</enum>
-            </property>
-            <property name="sizeHint">
-                <size>
-                    <width>450</width>
-                    <height>16</height>
-                </size>
-            </property>
-        </spacer>
-    </grid>
-</widget>
-<images>
-    <image name="image0">
-        <data format="PNG" length="627">89504e470d0a1a0a0000000d49484452000000100000001008060000001ff3ff610000023a49444154388dbdd24d4893011cc7f1efb367af32dd4a27be355b2d337b1332d144ba58748a8228bca40519294105b9b4a09232914204f590bd2164d0a13292428bf450190965d2c044d3dc16c39736739adbb3e7e9b4882eb50e7def9f3fffc30ffe734272c5929b96a34bef02eaa8757289f94a8fb75b79e2ea54e24bcd5701ed5fe39403b17577265a154f6042f1ce7b94666783a2d9255cfcf946fc7e9543d0cae2d4356a7fc76965860b67aa4e3a3262d630ea1f22284bbc7077231b95ad6a00d34eedf1c3c74aeb64f5775ae7dba4e976ea2338fd88ee5c45e5c1d356bd9df1b98f48b2c2834f6ddcebed25dcc7235157c4a1ed959b9bf2130b89d72560c913b78df9477c81415edbcad5d5258edd35e99a4cfcc14966251f4f27db79deff0adf6dea19a2464cde47632875da3a1b9c412586498c492231472822fb6bce8ee22de5293a1bbea09729c9c3c0dc33de7d788feb3a0dd2000e401611c8b46c940aa6b52edca1217c8a0b8d415159b34cabb582066f6884d1e05bdce141bcc333381ba4da857eaa0019405cfccccbf03c692b7375d9425c886f829fb0da8f5188452faa51a9640c3a350b13027d977c9767fba88e!
 600011080586e90a2ecab6acbc84f57a938a24ed32ec3159a41bec2c376630e30ad071d6d938d52357fe8a230700427e275d41495a955b605f9b6ab261d5ad609d2997f12f63349d7ad8e2792c9d00c27fda4bdc8672fdfd66f75ee58d7c43e9f09e57ecc5dae81607980b1dc6ce16d71e655399e116a08f06474ab2e45301c4fe0b8eaa1f7495df7eb70a4be70000000049454e44ae426082</data>
-    </image>
-    <image name="image1">
-        <data format="PNG" length="826">89504e470d0a1a0a0000000d49484452000000100000001008060000001ff3ff610000030149444154388d75935d485b0714c77fb9f7c69bbbdc25242e3a8a51a7f12338a6a50f4aab2dcd32df8acc8652d681d0c1dab03d14194cba0fb6b76d6c8c0e0663035fda52a453462dd52e8c69fb50192d16a6d6a55a66496a6b2434bdc96e3eeec71e5c3b61f3ff780ebf3fe77f0e07b65495e8eb1bbb16898c03323b280c2d6b478fdefc28181cde5e7ffee76874c24e246c3b91b0af1e38f013a0fc1ffc673c7ed79e9bb3ed73e7eccf42a11140105e869ea8cff73a9a06d92cfdf1f8c0746fefd8769330b44c0d0d5d69e8ef0fb1b6064e2731aff743e005518036dfd2d2b196274f909b9aa05824d4d9d9b62f9379e56c3a3dde0af5578f1c996e884643681a681a0fce9ce187f9f9d275f856cc832ec26b959595da9642013918846291e6f6f6b6839b9b7b4f7475bdddb47f7f3b9a06f93ca9d1512e2c2c70057e4cc1050780133a0661ec10740c7477a3462260dbe0706c65b06d300c1e5cbac47832c94598b80e6f018f45000b328bf0ab1b7aad74fac5c64201b9b6168a452895a058647d7292c9d555266062068e03390061dba2ef9c854329495a1654f55fb85c864a053910605e92a67f81634f610071fba90e5755ed!
 fbb8a7e70d6f28e4c6b2b646ff2782e2f5d2512e5bbfe572b329cb7af81f83932ed7d06875f57955923ce4f3003c4a262967b328b60de9343e41a88ea96a6c41d76f272b95d56706238a72eaeb9a9aef04af57c4e502bf9f47990cbfdfbac5e6c6069eba3a945dbb401070c9f27331b73b96d6f57bb74ba505715896dff92210f8068f073c1e686860b350e0ee8d1b7c659adfdf31cd7badebeb1dae5008251804c3401404e780aa0e2e69daa21430cd88ed74e25055686c249bcbb13233c3a795cae709380d28655dd7debf7cf9388383f89b9be1fe7dac42c151532e1f145fb2ac573b757d4f5538cc5f86c11f5353e67ba6f9c10c7c02d8406511a65386a1ec5e5edeabd4d7638a226bb3b35c2c95a65021fc25cce7babbed39b75bdf0d27767846471f8cdcf4788c8dae2efb345c03824f9badc37eff585810dedc017ea63d92147fd7e73b0fd401fc0d47f9344798e448190000000049454e44ae426082</data>
-    </image>
-</images>
-<connections>
-    <connection>
-        <sender>cancelButton</sender>
-        <signal>clicked()</signal>
-        <receiver>AddUserUI</receiver>
-        <slot>close()</slot>
-    </connection>
-</connections>
-<tabstops>
-    <tabstop>usernameBox</tabstop>
-    <tabstop>fullnameBox</tabstop>
-    <tabstop>homeBox</tabstop>
-    <tabstop>shellBox</tabstop>
-    <tabstop>groupRadioNew</tabstop>
-    <tabstop>groupBox</tabstop>
-    <tabstop>passBox</tabstop>
-    <tabstop>confirmPassBox</tabstop>
-    <tabstop>okButton</tabstop>
-    <tabstop>cancelButton</tabstop>
-    <tabstop>groupRadioOld</tabstop>
-</tabstops>
-<includes>
-    <include location="global" impldecl="in declaration">qfiledialog.h</include>
-    <include location="global" impldecl="in declaration">usermanagerback.h</include>
-    <include location="global" impldecl="in declaration">qmessagebox.h</include>
-</includes>
-<variables>
-    <variable access="private">UserManagerBackend *back;</variable>
-</variables>
-<signals>
-    <signal>addUser();</signal>
-</signals>
-<slots>
-    <slot>getFileDialog()</slot>
-    <slot>reset( UserManagerBackend * back )</slot>
-    <slot>groupRadioSlot()</slot>
-    <slot>usernameChangedSlot()</slot>
-    <slot>fullnameChangedSlot()</slot>
-    <slot>homeCheckSlot()</slot>
-    <slot>passwordChanged()</slot>
-    <slot>resetSlot()</slot>
-    <slot>submitSlot()</slot>
-</slots>
-<functions>
-    <function access="private" specifier="non virtual">init()</function>
-</functions>
-<layoutdefaults spacing="6" margin="11"/>
-<includehints>
-    <includehint>kurlrequester.h</includehint>
-    <includehint>klineedit.h</includehint>
-    <includehint>kpushbutton.h</includehint>
-</includehints>
-</UI>
+       </item>
+      </layout>
+     </item>
+    </layout>
+   </item>
+   <item row="1" column="0" >
+    <spacer name="spacer9" >
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeType" >
+      <enum>QSizePolicy::Expanding</enum>
+     </property>
+     <property name="sizeHint" stdset="0" >
+      <size>
+       <width>450</width>
+       <height>16</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11" />
+ <customwidgets>
+  <customwidget>
+   <class>Q3Frame</class>
+   <extends>QFrame</extends>
+   <header>Qt3Support/Q3Frame</header>
+   <container>1</container>
+  </customwidget>
+  <customwidget>
+   <class>Q3ButtonGroup</class>
+   <extends>Q3GroupBox</extends>
+   <header>Qt3Support/Q3ButtonGroup</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
+ <tabstops>
+  <tabstop>usernameBox</tabstop>
+  <tabstop>fullnameBox</tabstop>
+  <tabstop>homeBox</tabstop>
+  <tabstop>shellBox</tabstop>
+  <tabstop>groupRadioNew</tabstop>
+  <tabstop>groupBox</tabstop>
+  <tabstop>passBox</tabstop>
+  <tabstop>confirmPassBox</tabstop>
+  <tabstop>okButton</tabstop>
+  <tabstop>cancelButton</tabstop>
+  <tabstop>groupRadioOld</tabstop>
+ </tabstops>
+ <includes>
+  <include location="global" >q3filedialog.h</include>
+  <include location="global" >usermanagerback.h</include>
+  <include location="global" >qmessagebox.h</include>
+  <include location="local" >klineedit.h</include>
+  <include location="local" >kpushbutton.h</include>
+ </includes>
+ <resources>
+  <include location="pcbsdusermanager.qrc" />
+ </resources>
+ <connections>
+  <connection>
+   <sender>cancelButton</sender>
+   <signal>clicked()</signal>
+   <receiver>AddUserUI</receiver>
+   <slot>close()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>

Modified: pcbsd/trunk/pcbsdusermanager/changepasscode.cpp
===================================================================
--- pcbsd/trunk/pcbsdusermanager/changepasscode.cpp	2008-09-11 15:33:50 UTC (rev 2753)
+++ pcbsd/trunk/pcbsdusermanager/changepasscode.cpp	2008-09-11 16:46:13 UTC (rev 2754)
@@ -30,8 +30,7 @@
 
 #include "changepasscode.h"
 
-ChangePassCode::ChangePassCode(QString username, UserManagerBackend *back, QWidget *parent, const char *name)
-    :ChangePassDialog(parent, name)
+void ChangePassCode::programInit(QString username, UserManagerBackend *back)
 {
     this->username = username;
     this->back = back;
@@ -92,4 +91,3 @@
     passBox->setPaletteBackgroundColor(passBoxColour);
 }
 
-#include "changepasscode.moc"

Modified: pcbsd/trunk/pcbsdusermanager/changepasscode.h
===================================================================
--- pcbsd/trunk/pcbsdusermanager/changepasscode.h	2008-09-11 15:33:50 UTC (rev 2753)
+++ pcbsd/trunk/pcbsdusermanager/changepasscode.h	2008-09-11 16:46:13 UTC (rev 2754)
@@ -24,15 +24,19 @@
 #ifndef CHANGEPASSCODE_H
 #define CHANGEPASSCODE_H
 
-#include "changepassdialog.h"
+#include "ui_changepassdialog.h"
 #include "usermanagerback.h"
         
 #include <qcolor.h>
 
-class ChangePassCode: public ChangePassDialog {
+class ChangePassCode: public QDialog, private Ui::ChangePassDialog {
 Q_OBJECT
 public:
-    ChangePassCode(QString username, UserManagerBackend *back, QWidget *parent = 0, const char *name = 0);
+    ChangePassCode() : QDialog ()
+    {
+      setupUi(this);
+    }
+    void programInit(QString username, UserManagerBackend *back);
     
 public slots:
     void commit();

Modified: pcbsd/trunk/pcbsdusermanager/changepassdialog.ui
===================================================================
--- pcbsd/trunk/pcbsdusermanager/changepassdialog.ui	2008-09-11 15:33:50 UTC (rev 2753)
+++ pcbsd/trunk/pcbsdusermanager/changepassdialog.ui	2008-09-11 16:46:13 UTC (rev 2754)
@@ -1,222 +1,190 @@
-<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
-<class>ChangePassDialog</class>
-<widget class="QDialog">
-    <property name="name">
-        <cstring>ChangePassDialog</cstring>
-    </property>
-    <property name="geometry">
-        <rect>
-            <x>0</x>
-            <y>0</y>
-            <width>366</width>
-            <height>123</height>
-        </rect>
-    </property>
-    <property name="caption">
-        <string>Change Password</string>
-    </property>
-    <property name="modal">
-        <bool>true</bool>
-    </property>
-    <grid>
-        <property name="name">
-            <cstring>unnamed</cstring>
-        </property>
-        <widget class="QLineEdit" row="0" column="1">
-            <property name="name">
-                <cstring>passBox</cstring>
-            </property>
-            <property name="frameShape">
-                <enum>LineEditPanel</enum>
-            </property>
-            <property name="frameShadow">
-                <enum>Sunken</enum>
-            </property>
-            <property name="echoMode">
-                <enum>Password</enum>
-            </property>
+<ui version="4.0" >
+ <class>ChangePassDialog</class>
+ <widget class="QDialog" name="ChangePassDialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>366</width>
+    <height>123</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Change Password</string>
+  </property>
+  <property name="windowIcon" >
+   <iconset resource="pcbsdusermanager.qrc" >
+    <normaloff>:/change_password.png</normaloff>:/change_password.png</iconset>
+  </property>
+  <property name="modal" >
+   <bool>true</bool>
+  </property>
+  <layout class="QGridLayout" >
+   <item row="0" column="1" >
+    <widget class="QLineEdit" name="passBox" >
+     <property name="echoMode" >
+      <enum>QLineEdit::Password</enum>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="1" >
+    <widget class="QLineEdit" name="confirmPassBox" >
+     <property name="echoMode" >
+      <enum>QLineEdit::Password</enum>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="0" >
+    <widget class="QLabel" name="passLabel" >
+     <property name="enabled" >
+      <bool>true</bool>
+     </property>
+     <property name="frameShape" >
+      <enum>QFrame::NoFrame</enum>
+     </property>
+     <property name="frameShadow" >
+      <enum>QFrame::Plain</enum>
+     </property>
+     <property name="text" >
+      <string>Password:</string>
+     </property>
+     <property name="alignment" >
+      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+     </property>
+     <property name="wordWrap" >
+      <bool>false</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="0" >
+    <widget class="QLabel" name="confirmPassLabel" >
+     <property name="enabled" >
+      <bool>true</bool>
+     </property>
+     <property name="text" >
+      <string>Confirm Password:</string>
+     </property>
+     <property name="alignment" >
+      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+     </property>
+     <property name="wordWrap" >
+      <bool>false</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="3" column="0" colspan="2" >
+    <layout class="QVBoxLayout" >
+     <item>
+      <widget class="Line" name="line2" >
+       <property name="frameShape" >
+        <enum>QFrame::HLine</enum>
+       </property>
+       <property name="frameShadow" >
+        <enum>QFrame::Sunken</enum>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <layout class="QHBoxLayout" >
+       <item>
+        <spacer name="spacer11" >
+         <property name="orientation" >
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeType" >
+          <enum>QSizePolicy::Expanding</enum>
+         </property>
+         <property name="sizeHint" stdset="0" >
+          <size>
+           <width>172</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QPushButton" name="okButton" >
+         <property name="text" >
+          <string>O&amp;k</string>
+         </property>
+         <property name="icon" >
+          <iconset>
+           <normaloff>image0</normaloff>image0</iconset>
+         </property>
+         <property name="shortcut" >
+          <string>Alt+K</string>
+         </property>
+         <property name="default" >
+          <bool>true</bool>
+         </property>
         </widget>
-        <widget class="QLineEdit" row="1" column="1">
-            <property name="name">
-                <cstring>confirmPassBox</cstring>
-            </property>
-            <property name="echoMode">
-                <enum>Password</enum>
-            </property>
+       </item>
+       <item>
+        <widget class="QPushButton" name="cancelButton" >
+         <property name="text" >
+          <string>&amp;Cancel</string>
+         </property>
+         <property name="icon" >
+          <iconset>
+           <normaloff>image1</normaloff>image1</iconset>
+         </property>
+         <property name="shortcut" >
+          <string>Alt+C</string>
+         </property>
         </widget>
-        <widget class="QLabel" row="0" column="0">
-            <property name="name">
-                <cstring>passLabel</cstring>
-            </property>
-            <property name="enabled">
-                <bool>true</bool>
-            </property>
-            <property name="frameShape">
-                <enum>NoFrame</enum>
-            </property>
-            <property name="frameShadow">
-                <enum>Plain</enum>
-            </property>
-            <property name="text">
-                <string>Password:</string>
-            </property>
-            <property name="alignment">
-                <set>AlignVCenter|AlignRight</set>
-            </property>
-        </widget>
-        <widget class="QLabel" row="1" column="0">
-            <property name="name">
-                <cstring>confirmPassLabel</cstring>
-            </property>
-            <property name="enabled">
-                <bool>true</bool>
-            </property>
-            <property name="text">
-                <string>Confirm Password:</string>
-            </property>
-            <property name="alignment">
-                <set>AlignVCenter|AlignRight</set>
-            </property>
-        </widget>
-        <widget class="QLayoutWidget" row="3" column="0" rowspan="1" colspan="2">
-            <property name="name">
-                <cstring>layout7</cstring>
-            </property>
-            <vbox>
-                <property name="name">
-                    <cstring>unnamed</cstring>
-                </property>
-                <widget class="Line">
-                    <property name="name">
-                        <cstring>line2</cstring>
-                    </property>
-                    <property name="frameShape">
-                        <enum>HLine</enum>
-                    </property>
-                    <property name="frameShadow">
-                        <enum>Sunken</enum>
-                    </property>
-                    <property name="orientation">
-                        <enum>Horizontal</enum>
-                    </property>
-                </widget>
-                <widget class="QLayoutWidget">
-                    <property name="name">
-                        <cstring>layout3</cstring>
-                    </property>
-                    <hbox>
-                        <property name="name">
-                            <cstring>unnamed</cstring>
-                        </property>
-                        <spacer>
-                            <property name="name">
-                                <cstring>spacer11</cstring>
-                            </property>
-                            <property name="orientation">
-                                <enum>Horizontal</enum>
-                            </property>
-                            <property name="sizeType">
-                                <enum>Expanding</enum>
-                            </property>
-                            <property name="sizeHint">
-                                <size>
-                                    <width>172</width>
-                                    <height>20</height>
-                                </size>
-                            </property>
-                        </spacer>
-                        <widget class="QPushButton">
-                            <property name="name">
-                                <cstring>okButton</cstring>
-                            </property>
-                            <property name="text">
-                                <string>O&amp;k</string>
-                            </property>
-                            <property name="accel">
-                                <string>Alt+K</string>
-                            </property>
-                            <property name="default">
-                                <bool>true</bool>
-                            </property>
-                            <property name="iconSet">
-                                <iconset>image0</iconset>
-                            </property>
-                        </widget>
-                        <widget class="QPushButton">
-                            <property name="name">
-                                <cstring>cancelButton</cstring>
-                            </property>
-                            <property name="text">
-                                <string>&amp;Cancel</string>
-                            </property>
-                            <property name="accel">
-                                <string>Alt+C</string>
-                            </property>
-                            <property name="iconSet">
-                                <iconset>image1</iconset>
-                            </property>
-                        </widget>
-                    </hbox>
-                </widget>
-            </vbox>
-        </widget>
-        <spacer row="2" column="0" rowspan="1" colspan="2">
-            <property name="name">
-                <cstring>spacer20</cstring>
-            </property>
-            <property name="orientation">
-                <enum>Vertical</enum>
-            </property>
-            <property name="sizeType">
-                <enum>Expanding</enum>
-            </property>
-            <property name="sizeHint">
-                <size>
-                    <width>340</width>
-                    <height>41</height>
-                </size>
-            </property>
-        </spacer>
-    </grid>
-</widget>
-<images>
-    <image name="image0">
-        <data format="PNG" length="627">89504e470d0a1a0a0000000d49484452000000100000001008060000001ff3ff610000023a49444154388dbdd24d4893011cc7f1efb367af32dd4a27be355b2d337b1332d144ba58748a8228bca40519294105b9b4a09232914204f590bd2164d0a13292428bf450190965d2c044d3dc16c39736739adbb3e7e9b4882eb50e7def9f3fffc30ffe734272c5929b96a34bef02eaa8757289f94a8fb75b79e2ea54e24bcd5701ed5fe39403b17577265a154f6042f1ce7b94666783a2d9255cfcf946fc7e9543d0cae2d4356a7fc76965860b67aa4e3a3262d630ea1f22284bbc7077231b95ad6a00d34eedf1c3c74aeb64f5775ae7dba4e976ea2338fd88ee5c45e5c1d356bd9df1b98f48b2c2834f6ddcebed25dcc7235157c4a1ed959b9bf2130b89d72560c913b78df9477c81415edbcad5d5258edd35e99a4cfcc14966251f4f27db79deff0adf6dea19a2464cde47632875da3a1b9c412586498c492231472822fb6bce8ee22de5293a1bbea09729c9c3c0dc33de7d788feb3a0dd2000e401611c8b46c940aa6b52edca1217c8a0b8d415159b34cabb582066f6884d1e05bdce141bcc333381ba4da857eaa0019405cfccccbf03c692b7375d9425c886f829fb0da8f5188452faa51a9640c3a350b13027d977c9767fba88e!
 600011080586e90a2ecab6acbc84f57a938a24ed32ec3159a41bec2c376630e30ad071d6d938d52357fe8a230700427e275d41495a955b605f9b6ab261d5ad609d2997f12f63349d7ad8e2792c9d00c27fda4bdc8672fdfd66f75ee58d7c43e9f09e57ecc5dae81607980b1dc6ce16d71e655399e116a08f06474ab2e45301c4fe0b8eaa1f7495df7eb70a4be70000000049454e44ae426082</data>
-    </image>
-    <image name="image1">
-        <data format="PNG" length="826">89504e470d0a1a0a0000000d49484452000000100000001008060000001ff3ff610000030149444154388d75935d485b0714c77fb9f7c69bbbdc25242e3a8a51a7f12338a6a50f4aab2dcd32df8acc8652d681d0c1dab03d14194cba0fb6b76d6c8c0e0663035fda52a453462dd52e8c69fb50192d16a6d6a55a66496a6b2434bdc96e3eeec71e5c3b61f3ff780ebf3fe77f0e07b65495e8eb1bbb16898c03323b280c2d6b478fdefc28181cde5e7ffee76874c24e246c3b91b0af1e38f013a0fc1ffc673c7ed79e9bb3ed73e7eccf42a11140105e869ea8cff73a9a06d92cfdf1f8c0746fefd8769330b44c0d0d5d69e8ef0fb1b6064e2731aff743e005518036dfd2d2b196274f909b9aa05824d4d9d9b62f9379e56c3a3dde0af5578f1c996e884643681a681a0fce9ce187f9f9d275f856cc832ec26b959595da9642013918846291e6f6f6b6839b9b7b4f7475bdddb47f7f3b9a06f93ca9d1512e2c2c70057e4cc1050780133a0661ec10740c7477a3462260dbe0706c65b06d300c1e5cbac47832c94598b80e6f018f45000b328bf0ab1b7aad74fac5c64201b9b6168a452895a058647d7292c9d555266062068e03390061dba2ef9c854329495a1654f55fb85c864a053910605e92a67f81634f610071fba90e5755ed!
 fbb8a7e70d6f28e4c6b2b646ff2782e2f5d2512e5bbfe572b329cb7af81f83932ed7d06875f57955923ce4f3003c4a262967b328b60de9343e41a88ea96a6c41d76f272b95d56706238a72eaeb9a9aef04af57c4e502bf9f47990cbfdfbac5e6c6069eba3a945dbb401070c9f27331b73b96d6f57bb74ba505715896dff92210f8068f073c1e686860b350e0ee8d1b7c659adfdf31cd7badebeb1dae5008251804c3401404e780aa0e2e69daa21430cd88ed74e25055686c249bcbb13233c3a795cae709380d28655dd7debf7cf9388383f89b9be1fe7dac42c151532e1f145fb2ac573b757d4f5538cc5f86c11f5353e67ba6f9c10c7c02d8406511a65386a1ec5e5edeabd4d7638a226bb3b35c2c95a65021fc25cce7babbed39b75bdf0d27767846471f8cdcf4788c8dae2efb345c03824f9badc37eff585810dedc017ea63d92147fd7e73b0fd401fc0d47f9344798e448190000000049454e44ae426082</data>
-    </image>
-</images>
-<connections>
-    <connection>
-        <sender>cancelButton</sender>
-        <signal>clicked()</signal>
-        <receiver>ChangePassDialog</receiver>
-        <slot>close()</slot>
-    </connection>
-</connections>
-<tabstops>
-    <tabstop>passBox</tabstop>
-    <tabstop>confirmPassBox</tabstop>
-    <tabstop>okButton</tabstop>
-    <tabstop>cancelButton</tabstop>
-</tabstops>
-<includes>
-    <include location="global" impldecl="in declaration">qmessagebox.h</include>
-    <include location="global" impldecl="in declaration">usermanagerback.h</include>
-</includes>
-<variables>
-    <variable access="private">QString username;</variable>
-    <variable access="private">UserManagerBackend *back;</variable>
-</variables>
-<slots>
-    <slot access="private">passwordChanged()</slot>
-    <slot access="private">resetSlot()</slot>
-    <slot access="private">okSlot()</slot>
-    <slot access="private">cancelSlot()</slot>
-</slots>
-<functions>
-    <function>start( QString username, UserManagerBackend * back )</function>
-</functions>
-<layoutdefaults spacing="6" margin="11"/>
-</UI>
+       </item>
+      </layout>
+     </item>
+    </layout>
+   </item>
+   <item row="2" column="0" colspan="2" >
+    <spacer name="spacer20" >
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeType" >
+      <enum>QSizePolicy::Expanding</enum>
+     </property>
+     <property name="sizeHint" stdset="0" >
+      <size>
+       <width>340</width>
+       <height>41</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11" />
+ <tabstops>
+  <tabstop>passBox</tabstop>
+  <tabstop>confirmPassBox</tabstop>
+  <tabstop>okButton</tabstop>
+  <tabstop>cancelButton</tabstop>
+ </tabstops>
+ <includes>
+  <include location="global" >qmessagebox.h</include>
+  <include location="global" >usermanagerback.h</include>
+ </includes>
+ <resources>
+  <include location="pcbsdusermanager.qrc" />
+ </resources>
+ <connections>
+  <connection>
+   <sender>cancelButton</sender>
+   <signal>clicked()</signal>
+   <receiver>ChangePassDialog</receiver>
+   <slot>close()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>

Modified: pcbsd/trunk/pcbsdusermanager/mainDlg.ui
===================================================================
--- pcbsd/trunk/pcbsdusermanager/mainDlg.ui	2008-09-11 15:33:50 UTC (rev 2753)
+++ pcbsd/trunk/pcbsdusermanager/mainDlg.ui	2008-09-11 16:46:13 UTC (rev 2754)
@@ -1,684 +1,613 @@
-<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
-<class>MainDlg</class>
-<widget class="QDialog">
-    <property name="name">
-        <cstring>MainDlg</cstring>
-    </property>
-    <property name="geometry">
-        <rect>
-            <x>0</x>
-            <y>0</y>
-            <width>646</width>
-            <height>361</height>
-        </rect>
-    </property>
-    <property name="caption">
-        <string>PC-BSD User Manager</string>
-    </property>
-    <grid>
-        <property name="name">
-            <cstring>unnamed</cstring>
-        </property>
-        <widget class="QTabWidget" row="1" column="0">
-            <property name="name">
-                <cstring>mainTab</cstring>
+<ui version="4.0" >
+ <class>MainDlg</class>
+ <widget class="QDialog" name="MainDlg" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>646</width>
+    <height>361</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>PC-BSD User Manager</string>
+  </property>
+  <property name="windowIcon" >
+   <iconset resource="pcbsdusermanager.qrc" >
+    <normaloff>:/add_group.png</normaloff>:/add_group.png</iconset>
+  </property>
+  <layout class="QGridLayout" >
+   <item row="1" column="0" >
+    <widget class="QTabWidget" name="mainTab" >
+     <property name="enabled" >
+      <bool>true</bool>
+     </property>
+     <property name="currentIndex" >
+      <number>0</number>
+     </property>
+     <widget class="QWidget" name="userTab" >
+      <attribute name="title" >
+       <string>&amp;Users</string>
+      </attribute>
+      <layout class="QGridLayout" >
+       <item rowspan="2" row="0" column="0" >
+        <widget class="Q3ListBox" name="userList" >
+         <property name="sizePolicy" >
+          <sizepolicy vsizetype="Expanding" hsizetype="Fixed" >
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize" >
+          <size>
+           <width>200</width>
+           <height>0</height>
+          </size>
+         </property>
+        </widget>
+       </item>
+       <item row="2" column="0" colspan="2" >
+        <layout class="QHBoxLayout" >
+         <item>
+          <widget class="QPushButton" name="newButton" >
+           <property name="text" >
+            <string>&amp;Add</string>
+           </property>
+           <property name="icon" >
+            <iconset resource="pcbsdusermanager.qrc" >
+             <normaloff>:/add_user.png</normaloff>:/add_user.png</iconset>
+           </property>
+           <property name="shortcut" >
+            <string>Alt+A</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QPushButton" name="deleteButton" >
+           <property name="text" >
+            <string>&amp;Remove</string>
+           </property>
+           <property name="icon" >
+            <iconset resource="pcbsdusermanager.qrc" >
+             <normaloff>:/delete_user.png</normaloff>:/delete_user.png</iconset>
+           </property>
+           <property name="shortcut" >
+            <string>Alt+R</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <spacer name="spacer1" >
+           <property name="orientation" >
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeType" >
+            <enum>QSizePolicy::Expanding</enum>
+           </property>
+           <property name="sizeHint" stdset="0" >
+            <size>
+             <width>231</width>
+             <height>30</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+        </layout>
+       </item>
+       <item row="1" column="1" >
+        <spacer name="spacer22" >
+         <property name="orientation" >
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeType" >
+          <enum>QSizePolicy::Expanding</enum>
+         </property>
+         <property name="sizeHint" stdset="0" >
+          <size>
+           <width>50</width>
+           <height>60</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item row="0" column="1" >
+        <widget class="Q3Frame" name="frame10" >
+         <property name="sizePolicy" >
+          <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="frameShape" >
+          <enum>QFrame::StyledPanel</enum>
+         </property>
+         <property name="frameShadow" >
+          <enum>QFrame::Raised</enum>
+         </property>
+         <property name="lineWidth" >
+          <number>0</number>
+         </property>
+         <layout class="QGridLayout" >
+          <item row="2" column="0" >
+           <widget class="QLabel" name="homeLabel" >
+            <property name="text" >
+             <string>Home Directory:</string>
             </property>
-            <property name="enabled">
-                <bool>true</bool>
+            <property name="alignment" >
+             <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
             </property>
-            <widget class="QWidget">
-                <property name="name">
-                    <cstring>userTab</cstring>
-                </property>
-                <attribute name="title">
-                    <string>&amp;Users</string>
-                </attribute>
-                <grid>
-                    <property name="name">
-                        <cstring>unnamed</cstring>
-                    </property>
-                    <widget class="QListBox" row="0" column="0" rowspan="2" colspan="1">
-                        <property name="name">
-                            <cstring>userList</cstring>
-                        </property>
-                        <property name="sizePolicy">
-                            <sizepolicy>
-                                <hsizetype>0</hsizetype>
-                                <vsizetype>7</vsizetype>
-                                <horstretch>0</horstretch>
-                                <verstretch>0</verstretch>
-                            </sizepolicy>
-                        </property>
-                        <property name="minimumSize">
-                            <size>
-                                <width>200</width>
-                                <height>0</height>
-                            </size>
-                        </property>
-                    </widget>
-                    <widget class="QLayoutWidget" row="2" column="0" rowspan="1" colspan="2">
-                        <property name="name">
-                            <cstring>layout10</cstring>
-                        </property>
-                        <hbox>
-                            <property name="name">
-                                <cstring>unnamed</cstring>
-                            </property>
-                            <widget class="QPushButton">
-                                <property name="name">
-                                    <cstring>newButton</cstring>
-                                </property>
-                                <property name="text">
-                                    <string>&amp;Add</string>
-                                </property>
-                                <property name="accel">
-                                    <string>Alt+A</string>
-                                </property>
-                                <property name="iconSet">
-                                    <iconset>image0</iconset>
-                                </property>
-                            </widget>
-                            <widget class="QPushButton">
-                                <property name="name">
-                                    <cstring>deleteButton</cstring>
-                                </property>
-                                <property name="text">
-                                    <string>&amp;Remove</string>
-                                </property>
-                                <property name="accel">
-                                    <string>Alt+R</string>
-                                </property>
-                                <property name="iconSet">
-                                    <iconset>image1</iconset>
-                                </property>
-                            </widget>
-                            <spacer>
-                                <property name="name">
-                                    <cstring>spacer1</cstring>
-                                </property>
-                                <property name="orientation">
-                                    <enum>Horizontal</enum>
-                                </property>
-                                <property name="sizeType">
-                                    <enum>Expanding</enum>
-                                </property>
-                                <property name="sizeHint">
-                                    <size>
-                                        <width>231</width>
-                                        <height>30</height>
-                                    </size>
-                                </property>
-                            </spacer>
-                        </hbox>
-                    </widget>
-                    <spacer row="1" column="1">
-                        <property name="name">
-                            <cstring>spacer22</cstring>
-                        </property>
-                        <property name="orientation">
-                            <enum>Vertical</enum>
-                        </property>
-                        <property name="sizeType">
-                            <enum>Expanding</enum>
-                        </property>
-                        <property name="sizeHint">
-                            <size>
-                                <width>50</width>
-                                <height>60</height>
-                            </size>
-                        </property>
-                    </spacer>
-                    <widget class="QFrame" row="0" column="1">
-                        <property name="name">
-                            <cstring>frame10</cstring>
-                        </property>
-                        <property name="sizePolicy">
-                            <sizepolicy>
-                                <hsizetype>5</hsizetype>
-                                <vsizetype>0</vsizetype>
-                                <horstretch>0</horstretch>
-                                <verstretch>0</verstretch>
-                            </sizepolicy>
-                        </property>
-                        <property name="frameShape">
-                            <enum>StyledPanel</enum>
-                        </property>
-                        <property name="frameShadow">
-                            <enum>Raised</enum>
-                        </property>
-                        <property name="lineWidth">
-                            <number>0</number>
-                        </property>
-                        <grid>
-                            <property name="name">
-                                <cstring>unnamed</cstring>
-                            </property>
-                            <widget class="QLabel" row="2" column="0">
-                                <property name="name">
-                                    <cstring>homeLabel</cstring>
-                                </property>
-                                <property name="text">
-                                    <string>Home Directory:</string>
-                                </property>
-                                <property name="alignment">
-                                    <set>AlignVCenter|AlignRight</set>
-                                </property>
-                            </widget>
-                            <widget class="QLabel" row="4" column="0">
-                                <property name="name">
-                                    <cstring>textLabel1</cstring>
-                                </property>
-                                <property name="text">
-                                    <string>Primary Group:</string>
-                                </property>
-                                <property name="alignment">
-                                    <set>AlignVCenter|AlignRight</set>
-                                </property>
-                            </widget>
-                            <widget class="QLabel" row="3" column="0">
-                                <property name="name">
-                                    <cstring>shellLabel</cstring>
-                                </property>
-                                <property name="text">
-                                    <string>Shell:</string>
-                                </property>
-                                <property name="alignment">
-                                    <set>AlignVCenter|AlignRight</set>
-                                </property>
-                            </widget>
-                            <widget class="QLabel" row="0" column="0">
-                                <property name="name">
-                                    <cstring>uidLabel</cstring>
-                                </property>
-                                <property name="sizePolicy">
-                                    <sizepolicy>
-                                        <hsizetype>5</hsizetype>
-                                        <vsizetype>0</vsizetype>
-                                        <horstretch>0</horstretch>
-                                        <verstretch>0</verstretch>
-                                    </sizepolicy>
-                                </property>
-                                <property name="text">
-                                    <string>User ID:</string>
-                                </property>
-                                <property name="alignment">
-                                    <set>AlignVCenter|AlignRight</set>
-                                </property>
-                            </widget>
-                            <widget class="QLabel" row="1" column="0">
-                                <property name="name">
-                                    <cstring>fullnameLabel</cstring>
-                                </property>
-                                <property name="text">
-                                    <string>Full Name:</string>
-                                </property>
-                                <property name="alignment">
-                                    <set>AlignVCenter|AlignRight</set>
-                                </property>
-                            </widget>
-                            <widget class="QComboBox" row="3" column="1">
-                                <property name="name">
-                                    <cstring>shellBox</cstring>
-                                </property>
-                                <property name="editable">
-                                    <bool>true</bool>
-                                </property>
-                                <property name="autoCompletion">
-                                    <bool>true</bool>
-                                </property>
-                            </widget>
-                            <widget class="QLabel" row="0" column="1">
-                                <property name="name">
-                                    <cstring>uidBox</cstring>
-                                </property>
-                                <property name="sizePolicy">
-                                    <sizepolicy>
-                                        <hsizetype>5</hsizetype>
-                                        <vsizetype>0</vsizetype>
-                                        <horstretch>0</horstretch>
-                                        <verstretch>0</verstretch>
-                                    </sizepolicy>
-                                </property>
-                                <property name="text">
-                                    <string></string>
-                                </property>
-                            </widget>
-                            <widget class="QLineEdit" row="2" column="1">
-                                <property name="name">
-                                    <cstring>homeBox</cstring>
-                                </property>
-                                <property name="enabled">
-                                    <bool>true</bool>
-                                </property>
-                            </widget>
-                            <widget class="QPushButton" row="5" column="1">
-                                <property name="name">
-                                    <cstring>passwordButton</cstring>
-                                </property>
-                                <property name="text">
-                                    <string>Chan&amp;ge Password...</string>
-                                </property>
-                                <property name="accel">
-                                    <string>Alt+G</string>
-                                </property>
-                                <property name="iconSet">
-                                    <iconset>image2</iconset>
-                                </property>
-                            </widget>
-                            <widget class="QLineEdit" row="1" column="1">
-                                <property name="name">
-                                    <cstring>fullnameBox</cstring>
-                                </property>
-                                <property name="enabled">
-                                    <bool>true</bool>
-                                </property>
-                                <property name="readOnly">
-                                    <bool>false</bool>
-                                </property>
-                            </widget>
-                            <widget class="QComboBox" row="4" column="1">
-                                <property name="name">
-                                    <cstring>groupBox</cstring>
-                                </property>
-                            </widget>
-                        </grid>
-                    </widget>
-                </grid>
-            </widget>
-            <widget class="QWidget">
-                <property name="name">
-                    <cstring>groupTab</cstring>
-                </property>
-                <attribute name="title">
-                    <string>&amp;Groups</string>
-                </attribute>
-                <grid>
-                    <property name="name">
-                        <cstring>unnamed</cstring>
-                    </property>
-                    <widget class="QLayoutWidget" row="5" column="0" rowspan="1" colspan="6">
-                        <property name="name">
-                            <cstring>layout11</cstring>
-                        </property>
-                        <hbox>
-                            <property name="name">
-                                <cstring>unnamed</cstring>
-                            </property>
-                            <widget class="QPushButton">
-                                <property name="name">
-                                    <cstring>addGroupBut</cstring>
-                                </property>
-                                <property name="text">
-                                    <string>A&amp;dd</string>
-                                </property>
-                                <property name="accel">
-                                    <string>Alt+D</string>
-                                </property>
-                                <property name="iconSet">
-                                    <iconset>image3</iconset>
-                                </property>
-                            </widget>
-                            <widget class="QPushButton">
-                                <property name="name">
-                                    <cstring>removeGroupBut</cstring>
-                                </property>
-                                <property name="text">
-                                    <string>&amp;Remove</string>
-                                </property>
-                                <property name="accel">
-                                    <string>Alt+R</string>
-                                </property>
-                                <property name="iconSet">
-                                    <iconset>image4</iconset>
-                                </property>
-                            </widget>
-                            <spacer>
-                                <property name="name">
-                                    <cstring>spacer2</cstring>
-                                </property>
-                                <property name="orientation">
-                                    <enum>Horizontal</enum>
-                                </property>
-                                <property name="sizeType">
-                                    <enum>Expanding</enum>
-                                </property>
-                                <property name="sizeHint">
-                                    <size>
-                                        <width>140</width>
-                                        <height>31</height>
-                                    </size>
-                                </property>
-                            </spacer>
-                        </hbox>
-                    </widget>
-                    <widget class="QListBox" row="0" column="0" rowspan="5" colspan="1">
-                        <property name="name">
-                            <cstring>groupList</cstring>
-                        </property>
-                        <property name="sizePolicy">
-                            <sizepolicy>
-                                <hsizetype>0</hsizetype>
-                                <vsizetype>7</vsizetype>
-                                <horstretch>0</horstretch>
-                                <verstretch>0</verstretch>
-                            </sizepolicy>
-                        </property>
-                        <property name="minimumSize">
-                            <size>
-                                <width>140</width>
-                                <height>180</height>
-                            </size>
-                        </property>
-                    </widget>
-                    <widget class="QListBox" row="1" column="1" rowspan="4" colspan="1">
-                        <property name="name">
-                            <cstring>availableList</cstring>
-                        </property>
-                        <property name="sizePolicy">
-                            <sizepolicy>
-                                <hsizetype>0</hsizetype>
-                                <vsizetype>7</vsizetype>
-                                <horstretch>0</horstretch>
-                                <verstretch>0</verstretch>
-                            </sizepolicy>
-                        </property>
-                        <property name="minimumSize">
-                            <size>
-                                <width>200</width>
-                                <height>160</height>
-                            </size>
-                        </property>
-                    </widget>
-                    <widget class="QLabel" row="0" column="1">
-                        <property name="name">
-                            <cstring>availLbl</cstring>
-                        </property>
-                        <property name="sizePolicy">
-                            <sizepolicy>
-                                <hsizetype>5</hsizetype>
-                                <vsizetype>0</vsizetype>
-                                <horstretch>0</horstretch>
-                                <verstretch>0</verstretch>
-                            </sizepolicy>
-                        </property>
-                        <property name="text">
-                            <string>Available:  </string>
-                        </property>
-                        <property name="alignment">
-                            <set>AlignVCenter|AlignRight</set>
-                        </property>
-                    </widget>
-                    <spacer row="0" column="2" rowspan="1" colspan="2">
-                        <property name="name">
-                            <cstring>spacer23</cstring>
-                        </property>
-                        <property name="orientation">
-                            <enum>Horizontal</enum>
-                        </property>
-                        <property name="sizeType">
-                            <enum>Expanding</enum>
-                        </property>
-                        <property name="sizeHint">
-                            <size>
-                                <width>91</width>
-                                <height>31</height>
-                            </size>
-                        </property>
-                    </spacer>
-                    <widget class="QPushButton" row="2" column="2">
-                        <property name="name">
-                            <cstring>makeMemberBut</cstring>
-                        </property>
-                        <property name="sizePolicy">
-                            <sizepolicy>
-                                <hsizetype>0</hsizetype>
-                                <vsizetype>0</vsizetype>
-                                <horstretch>0</horstretch>
-                                <verstretch>0</verstretch>
-                            </sizepolicy>
-                        </property>
-                        <property name="text">
-                            <string></string>
-                        </property>
-                        <property name="pixmap">
-                            <pixmap>image5</pixmap>
-                        </property>
-                    </widget>
-                    <widget class="QPushButton" row="3" column="2">
-                        <property name="name">
-                            <cstring>makeAvailableBut</cstring>
-                        </property>
-                        <property name="sizePolicy">
-                            <sizepolicy>
-                                <hsizetype>0</hsizetype>
-                                <vsizetype>0</vsizetype>
-                                <horstretch>0</horstretch>
-                                <verstretch>0</verstretch>
-                            </sizepolicy>
-                        </property>
-                        <property name="text">
-                            <string></string>
-                        </property>
-                        <property name="pixmap">
-                            <pixmap>image6</pixmap>
-                        </property>
-                    </widget>
-                    <spacer row="4" column="2">
-                        <property name="name">
-                            <cstring>spacer4</cstring>
-                        </property>
-                        <property name="orientation">
-                            <enum>Vertical</enum>
-                        </property>
-                        <property name="sizeType">
-                            <enum>Expanding</enum>
-                        </property>
-                        <property name="sizeHint">
-                            <size>
-                                <width>31</width>
-                                <height>110</height>
-                            </size>
-                        </property>
-                    </spacer>
-                    <spacer row="1" column="2">
-                        <property name="name">
-                            <cstring>spacer3</cstring>
-                        </property>
-                        <property name="orientation">
-                            <enum>Vertical</enum>
-                        </property>
-                        <property name="sizeType">
-                            <enum>Expanding</enum>
-                        </property>
-                        <property name="sizeHint">
-                            <size>
-                                <width>30</width>
-                                <height>110</height>
-                            </size>
-                        </property>
-                    </spacer>
-                    <widget class="QListBox" row="1" column="3" rowspan="4" colspan="2">
-                        <property name="name">
-                            <cstring>memberList</cstring>
-                        </property>
-                        <property name="sizePolicy">
-                            <sizepolicy>
-                                <hsizetype>0</hsizetype>
-                                <vsizetype>7</vsizetype>
-                                <horstretch>0</horstretch>
-                                <verstretch>0</verstretch>
-                            </sizepolicy>
-                        </property>
-                        <property name="minimumSize">
-                            <size>
-                                <width>200</width>
-                                <height>160</height>
-                            </size>
-                        </property>
-                    </widget>
-                    <widget class="QLabel" row="0" column="4">
-                        <property name="name">
-                            <cstring>groupLbl</cstring>
-                        </property>
-                        <property name="sizePolicy">
-                            <sizepolicy>
-                                <hsizetype>5</hsizetype>
-                                <vsizetype>0</vsizetype>
-                                <horstretch>0</horstretch>
-                                <verstretch>0</verstretch>
-                            </sizepolicy>
-                        </property>
-                        <property name="text">
-                            <string>Members:</string>
-                        </property>
-                        <property name="alignment">
-                            <set>AlignVCenter|AlignRight</set>
-                        </property>
-                    </widget>
-                    <spacer row="0" column="5" rowspan="5" colspan="1">
-                        <property name="name">
-                            <cstring>spacer24</cstring>
-                        </property>
-                        <property name="orientation">
-                            <enum>Horizontal</enum>
-                        </property>
-                        <property name="sizeType">
-                            <enum>Expanding</enum>
-                        </property>
-                        <property name="sizeHint">
-                            <size>
-                                <width>40</width>
-                                <height>50</height>
-                            </size>
-                        </property>
-                    </spacer>
-                </grid>
-            </widget>
-        </widget>
-        <widget class="QLayoutWidget" row="0" column="0">
-            <property name="name">
-                <cstring>layout11</cstring>
+            <property name="wordWrap" >
+             <bool>false</bool>
             </property>
-            <vbox>
-                <property name="name">
-                    <cstring>unnamed</cstring>
-                </property>
-                <widget class="QLayoutWidget">
-                    <property name="name">
-                        <cstring>layout10</cstring>
-                    </property>
-                    <hbox>
-                        <property name="name">
-                            <cstring>unnamed</cstring>
-                        </property>
-                        <widget class="QLabel">
-                            <property name="name">
-                                <cstring>textLabel1_2</cstring>
-                            </property>
-                            <property name="font">
-                                <font>
-                                    <bold>1</bold>
-                                </font>
-                            </property>
-                            <property name="text">
-                                <string>PC-BSD User Manager - Advanced Mode</string>
-                            </property>
-                        </widget>
-                        <spacer>
-                            <property name="name">
-                                <cstring>spacer12</cstring>
-                            </property>
-                            <property name="orientation">
-                                <enum>Horizontal</enum>
-                            </property>
-                            <property name="sizeType">
-                                <enum>Expanding</enum>
-                            </property>
-                            <property name="sizeHint">
-                                <size>
-                                    <width>219</width>
-                                    <height>31</height>
-                                </size>
-                            </property>
-                        </spacer>
-                        <widget class="QPushButton">
-                            <property name="name">
-                                <cstring>simpleBut</cstring>
-                            </property>
-                            <property name="minimumSize">
-                                <size>
-                                    <width>0</width>
-                                    <height>31</height>
-                                </size>
-                            </property>
-                            <property name="text">
-                                <string>Simple &amp;View</string>
-                            </property>
-                            <property name="accel">
-                                <string>Alt+V</string>
-                            </property>
-                        </widget>
-                    </hbox>
-                </widget>
-                <widget class="Line">
-                    <property name="name">
-                        <cstring>line3</cstring>
-                    </property>
-                    <property name="frameShape">
-                        <enum>HLine</enum>
-                    </property>
-                    <property name="frameShadow">
-                        <enum>Sunken</enum>
-                    </property>
-                    <property name="orientation">
-                        <enum>Horizontal</enum>
-                    </property>
-                </widget>
-            </vbox>
+           </widget>
+          </item>
+          <item row="4" column="0" >
+           <widget class="QLabel" name="textLabel1" >
+            <property name="text" >
+             <string>Primary Group:</string>
+            </property>
+            <property name="alignment" >
+             <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+            </property>
+            <property name="wordWrap" >
+             <bool>false</bool>
+            </property>
+           </widget>
+          </item>
+          <item row="3" column="0" >
+           <widget class="QLabel" name="shellLabel" >
+            <property name="text" >
+             <string>Shell:</string>
+            </property>
+            <property name="alignment" >
+             <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+            </property>
+            <property name="wordWrap" >
+             <bool>false</bool>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="0" >
+           <widget class="QLabel" name="uidLabel" >
+            <property name="sizePolicy" >
+             <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text" >
+             <string>User ID:</string>
+            </property>
+            <property name="alignment" >
+             <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+            </property>
+            <property name="wordWrap" >
+             <bool>false</bool>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="0" >
+           <widget class="QLabel" name="fullnameLabel" >
+            <property name="text" >
+             <string>Full Name:</string>
+            </property>
+            <property name="alignment" >
+             <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+            </property>
+            <property name="wordWrap" >
+             <bool>false</bool>
+            </property>
+           </widget>
+          </item>
+          <item row="3" column="1" >
+           <widget class="QComboBox" name="shellBox" >
+            <property name="editable" >
+             <bool>true</bool>
+            </property>
+            <property name="autoCompletion" >
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="1" >
+           <widget class="QLabel" name="uidBox" >
+            <property name="sizePolicy" >
+             <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text" >
+             <string/>
+            </property>
+            <property name="wordWrap" >
+             <bool>false</bool>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="1" >
+           <widget class="QLineEdit" name="homeBox" >
+            <property name="enabled" >
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>
+          <item row="5" column="1" >
+           <widget class="QPushButton" name="passwordButton" >
+            <property name="text" >
+             <string>Chan&amp;ge Password...</string>
+            </property>
+            <property name="icon" >
+             <iconset resource="pcbsdusermanager.qrc" >
+              <normaloff>:/change_password.png</normaloff>:/change_password.png</iconset>
+            </property>
+            <property name="shortcut" >
+             <string>Alt+G</string>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="1" >
+           <widget class="QLineEdit" name="fullnameBox" >
+            <property name="enabled" >
+             <bool>true</bool>
+            </property>
+            <property name="readOnly" >
+             <bool>false</bool>
+            </property>
+           </widget>
+          </item>
+          <item row="4" column="1" >
+           <widget class="QComboBox" name="groupBox" />
+          </item>
+         </layout>
         </widget>
-    </grid>
-</widget>
-<images>
-    <image name="image0">
-        <data format="PNG" length="1328">89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b000004f749444154388d75954b6c5c6719869fff72ce9c33638f676c8f6fe35b9a98a414bb418814042844102115da74512965d122402c90000936850d42824a5524565db02865c1020955a92a05814a4a2a959686a46daa366d5ae3d476d3c4f1d81e7baee7feff2c429c10bbeff293be47eff7eafbbf5f586b79e278814f529a82ebf060a9d73ea9dda17db99c8350c5ad389117c77adefa469ccae4ce9e634f466880d5bad8156a0cecad9a7210f2fbf52d53e929d4c028068765a53c3872647efef34b43feb9aa106a47af0668b4770727197a36677e373de654966afdacd5d6087b21351b1855e4ae99bee10f2e1d7aa7df79735608b1136c3f3108beb4d94abf559d9ce4f80f7fce3f4fbfc0f9979f2708da185943eabcb2d656dff8004f6b19de6c7ae42658ef9c040021a8375b595bfa5385b199833c3c790ffd43639cf9cb9fb8fce155507956d602bdb822c71d472eec70bc77d8ec801a01c6da77a41e7d7f60e4d3c374d6505672f4a14798b9fb5e2e5e38cbfc85d3f4f8c5eb797f6349c95d325e0eeea80ae8492c61142274e38924b287e9d4c048885a4cdf35c9f4817d3c7df98d7fa7f5f844a518a7771ad300278bce76c!
 15ac04bf972e2f2d0c06789b0af3b426c11344a2431387908ea404a6fcfe8d6e6c6a5e72626f680354861b0e636f0ed115b405bc1f962ccec88cbe1fc449045d1151cbf441cdc804a0d6e8e280856ca0333205d5a728a153b434f6f7c0b8cbd31fe6d492053c3d30baff26c4e87df193e7c347bc979ed0b73237b1c5793a531cfbef0fe8b9b72dff7ea668af9da1007f60f50bbba4992bfcdb15060338b9002a01246ce09c73a028bd83061fb8fd7377e23836361a172856b1faf7060f600ff5838a8c7ee9ecb77b6d63b51b08a94162dd2ede935c0f42187ce7a4cb7d1263189de5b993bfae8838f55a5d49c7af194292d1ef9eec1afdde7573f771c716d8d81a951be5fbcf6d5332ffda7d6352ce4fdfcc5304c9eca8c790b54b80d767d4defcc001b1fd669ae37acd48eb1be07cac12a25eff94cd9afd79b9c3b378fd28a562b464ab8ff9bfbf385bc379773f5dc33cf9cfff6f050f6ab6edc38018412c064068164fc5393fce0e06f074bfee0c4626381e5e6329da44da95066b8344c7f6180d1f20839d7c1f772602541901227861fffe42be2ca479dc7ad3587b61dbf779657fafabb428938dcc89d1ceb1b97ac76d751ca211596d3574ff2eadadfb1ca60b2889f1ef925bed7871016a5255966f8d7d94bb839e3e47def5ee0650d501af5f6eeb9af3a62a520a549e278a!
 c461f01166fbfe27abc8431062115cde56584fa0505df27cd62ba41cce5c51!
 5ae5ddf60b45a702ebcbefe28f0d48deb963579bbf52ee814cf8df1acc15137d62e361059459838245653c2d09b2fa094a2d18e595f6f628ca5a7e053194c29975be5ed2832dd89da4b96820fcac3a6816bab5fec48012cbe564078295918d18a22b435acd63ab4b547a3dda1d38d09ba29dd4e4ad035a4898db6c17d6bcee33d899cb286205b999d2b1e7ef3d8c420152161536571f3b9fbcf141b835e515801829f9dfa5b5de2628c012cc6582c166b6cdaeda6b7d6cd0afe6c0124a4236f8f2be40363fd2025ccbb22b15f7ffe47cdabfee5b0e520158c777f8d6b8ba459429a19d234c518439a19daad88ffa16ebd63e5189008d7418e57607c085c6d25c2e6cad35dbcde049bedfedbdc297df33628c7222448658d4c4dfdaf7f289440583f17355b924c00e5a92e9b4b021bfcff6dd94dff0572343bc587ec53bc0000000049454e44ae426082</data>
-    </image>
-    <image name="image1">
-        <data format="PNG" length="1416">89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b0000054f49444154388d6d95696c5c5719869f73b7997b6773bcc4769c4ce2384d4cc0c4a2c42ea484525ab136aa2050a48aa86a5a01554154080581042ab4f0075554024758fc406a555a55a52a4554858ab489d32a891b992c36a91d6fb163cfd878c6e3b9fbdc7bf8e12c4aedf7df91ce79cefb2de73b424a49df2326eb4900ae2f40f2b86572c44ad298c9a6643a6d9d5209fb7da7f462588be4eace9b3af01b1f0da03e2bd7052b0acc1695ee8a2d9ff5c258096a0aa10c51adec5dd9ba86bb5439ba33ac149f148ab2e6ac061045eb728922ccd686dab39b9a2de5f2559de2d232d920248a1788950ce94ce78fc38a7d3c0ae263885b5d6b002bceda1bafe933446eef6d1ffb24bdf71fe6f517fb99ba3488e783d41690ad6d293b48dd6b97178e09455d0b2e57c5ba5429b189f113b9f6c4b6dbf771b835cfabcf1fe5ccc03fa83ad344988848cbbb814028eb382e7b82eb595624a8727515c7f19061e4a65a36efee62710acb3278f03b3fe2a3ddbd7c70f12c33970771574a45a4ca870ba801dc73de4551c15061a02dc17c5225114ba2185b6ae66b1b728d5d54e74031414fd2fda97d74f7ece50fbfbc305ca8ac3ca3ebc69a6!
 83580063b46d357c1f74efafcb54165560522b05241ffccf8d8cf1a3a5b048a019a05ee12c43e1b9b3a4e572bee8ca62928446bc1910228800a1927e68e3d5f427eb19b96709c48d157a4942514b31eaf0ca20aaacac8e88c4ce8f4e7dbbbb0653d73caed08d5e57a4eb50f87508bc1d8b089a9f4e7a90f2566ec962dadf8d0b973de5f3efe91f614482acbcb9c3833f996d5bce7bdb2d180ad7752592a23a48d94abb9beb5cf249a0041ecb3ec4a4ef9f730767517cef1b1b7f52ded2363f32b0cfc679ae9e580e1ca1d17fe36dca55c2ad461a8118a0c518850a8ddea58488c738ef186f482729350bfa1a8ca1659f376e9c5cb3da36f8d3edc73b06b6bfaeefd88c2026d6d4dfca07bf1bb7d47dfbb6f6e3e7cbfad25eef783daf9842617ae77c77570d3d0b278ee73873e7d77540a827f9f1f1a72ba0e987563833bc4d97fb2ef91c7197ceae7e40e3d8193dfcdc2a2431c47e6c387f7ee0802b9e3dd81c907ec6aed4aac961e0dc3e0cd55a352f25c569cfef21377ee5574157f456379bcc607be496bb8c4e63bf743be135c9b99d75fc1fef611b4ed9d18224255557443259749625a26afbc36303236317bf0b7bf7a745801e830f8f3a5df0f2cc6159ba45ea1b12da067a34bbe6b2b9a11a13bf3f8a3e7a1792b567333565227913048183a86a6118631c3ff9d626a726!
 99b40e9bd513c017d71ccd7275f18bc128d4f63254ad46dac924d7b987211f!
 7c219e60b15c4e19f606dca63ea2a66224132a923258c4f14b878719a2892663261ecbe01f65c08438effafc8efbcf102e6dc1889c208c9e00a896091e2f02cca37bf4fddf60eb249954cda4437343cafc6d5b9124be52ac9a44e5dce240c64cf8de2390e08d8bfa543fcb0b92b079b1a21938628423323b6eda967e2e53fe2e7dbb1932984e7e0fa01b6ede138213216d46a82a4a9535e5636dc000b453cb6b9437d72f767ad46b56333e4b7e22e05a8291d23f6a9ef4ca30e8d71eab107bd3fe50e9ef6cdeca2a8859a65e9c4714410d608c39a301222eeddd778f426d850be52bfdd6a543766a0ad15bb1473e6a993ff4aed6cbeed13dfdbb34d2d2f91db99213f345cfbda3b4ffff4c2a15f9f74d3cdd46575a25a88e305388e8795165c1b8cab3976bce8a1578f55df2c2ea670661d5ef8c5db274a05e70bd327261e78bfef6c31b66d8ebd7c568e0ece1fc9d8f32777fdfd19223db166a2ad19422a2cb404f181979e9f7843d326934d95e0ab3ac8084e4f9dbcf2ad914b859736b8d1d34118f525afbdfdf5bf869bfa3f375962a8bcfef4a50000000049454e44ae426082</data>
-    </image>
-    <image name="image2">
-        <data format="PNG" length="804">89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b000002eb49444154388da594cd4b545118c69feb388e3a129382e42e11037591a0b80bfa0fb4958b36b3adc8c8103781b9114433093f41c1746141a12d5b15292d52280d3f63083f19efccd599eeccfd3867ce7d5b8c338d77ee98d2039773df7bdef7779ff372ce91880800204912ec1a1878532f4978e4f114f8cbcaae8088a0aa3a62317d9e88badbdb5bbfdb6b523c10d1df20433d3d33fed1d139dadada25cbb2282521046d6fefd0f0f03beae999f13b8189c819dcd535e11f1b9b274d33480841aaaa92a22824cb3285c361628c513caed3f8f83c75754df89dc092bd159d9dc3bee2e2c25f1d1d777d2e97044539c1c2c22a6439022282d7eb41636315aaababc058020303af23a6c92b7b7b1f44325b91675f0ae7dcdfd454e3f378dc0885144c4f7fc0d2d266f7eeeed1d5b6b656696363f7f1ecece7c8caca0f78bd456868b8e1e39c67b5240b6c9abcb9b6b612aaaa627979037b7bf2607f7fdbb3bebe871100e8ef6f1b8cc5b4eec5c575ecefefa3b6b612a6c99bff09360c13151565d0751ddbdbfb300cf3bd3d6768a863f0f858452814426969090cc3b4a7383966304d13f1781cd1680c93934f3f65559de60921c03987!
 69b28b81755d07630c8c6517a4c4790242081886e108cecf0c022375d75fad067ddac15758aa8a6b0507088cd4dd7602bfdd09c2ad6e820565d494057d8191bafaaafb6be90393de6e2bcfebe63cc5852d45e5e5395d9e275d96616ac6fccd276b77ce383e51d172eb9e1f2e7700c03180dc6d709288576161f0634b2a4e83c351824b2c03ece7e5ed262cb8be7d41385a92fe94062b1102e22780e097830a0b583b027e9b50225e077094008d03894bb440584040015406082bc9b083233102740e386c1d47690c08aa001340c202849564d8c144a7c9860d4c04502a01001749031a4f03932321f3923cb38fa173c0e0803b2f09cb283a0bb19ce7900bccac24d4a2dcc0f448b61f9c072eca07b40b029d5690a13377c5e17139c0ad641fb31eebdcb9c313774ec7532f5eaefb012ffe4353a9973fdc0c23d7d8c95ff30000000049454e44ae426082</data>
-    </image>
-    <image name="image3">
-        <data format="PNG" length="1403">89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b0000054249444154388d75955b6c5c4719c77f33e7b667d7bbdedd38b693d86e12133b348134ad402ea2b469915a51544051541e102aa1205ea00f880784400221403c208a7880bc2022282d888a161589b681422f44a441491d27699cac135fe2acbd9793b3d7b367ce0c0f8ea3069cbff469349f34bf99f966e63fe2f75ff7589794d06c0b2e2f5b8f6e2ee8a7fb7c46f3857c7cadd637bb7db0fc44bbd53dcd7be43a200518fe5f5200eb8101cf31c3f9acfe7ea5aec6cb35edaed6ba996da3f9bb96c29daf08212636606c28ebd1bb1d62258895a0a7045af3cd81bc38941dfe104b576bb45b6d7462181e19c9942bdcd16905cfb6ba16b605be7b7bb05d0be52d099dc4fb9ccc360e3ef96d4efffb5fbcf8bb9f3377b94c22b3186d8feb48788e2322d7d698f59d6e04ae86e9f77405bd9e0e26f7efc14fb94c3df4085b47b6f3973f1ea55e9d27e9758d83343b8a1ad7066340dc862c1badebac47d8ac63acdc1545be431c406d9eb1b12d7ce53b3fe6fe030f478da63c9e4bd34bb9669f367c1ef80c50dc082c2ac7beb73683948041e18963afbd7df2b107f6ee4fe7f3e0f5d15a2af1d21b33d3572efde38343f9e661df133fb1a!
 5e91726368e6b9d91523e610cffb9a514757d0742083acd18a534778d374cdc0dae25581077216ea154423beacd6c1960978af851d4a33f169ac1ad13a21dcc7f2049e22308f911a077f356dcf9e0535c6ee63939ef707ad9e3d4798d37bcffb9eac23b9f1e1bca0ec54a72616179a1e6ed3d589f7ff3ce24ea7cb91b298a9b4778e88bbfc6f28b2c5f7c6b8b81196de48c36026d04b66729a414f8b6c2f274ea5cc9debb29ce8ccf76efdb34e90f206d9763cbbb8662997cb5981e18de56d88431367ba63e45aa30c4aea92f307be279717de5c201dbf69ebb590ac7b1d64e5688a766a657bfa47a7267d6f7fc7befdd4de06c459b984f1e4abbcffce6e4b752c5f731b1670b93bbef21c185ea1c56611ce164b0047b9422270421807d75a9990273e8e2a5959f4eeeed43d9d7b1ed80f9601a550ad85a1ca6595fe5c094c59b47cfb0ad9066724263250d682e633a21dd464814cb5c22842fb8016eb592dcb9b395c707062d642ae29c7e814654a75b57e4afece0079f3dc2f45bbfe5d4ab47e854cb5c387f96fb3efc51527602ed0a0bf3275858ac63b44bd637c6ba6112726c2ce7572b9d89d1d13c8e2328d7023ef1a4cb838f0f211c4d7f7f9eedbbf7932b14400ae64a9778fd8dbf8396cc951678fea5bfb15a695048e9bfd61bd6caec55c185c504db2422b2a4c8bad2c!
 3717c2215134611f58ec6b5b2a41d9bd19d537cecd00ff9c3cf0ed36cae127!
 62294508c4eec26ffcebbfcf37cf0a752d87bfa6cadc8c5852a513bc47ef6da3706dbf7a8e13f871e2654f4649bb632c874975233e0f0331f2721c19405617d10cf1de374d9e3e0408e38e8706ac93617bb3b1f48547c3c56e16bbec37763c19c5dcd96ed18c1bec70426d1389666b116e3b970f761a8351a64522e277fd1a0514ae367fbf145136a759657dbbcf0ca0911b4e2bc6dc9bc10e273bd5e6f00f8a5bdd2a990b46dde2e75d9b1599349693c6fcd5ccaab92740a5e3fe710350cd5ab0156aa4686224b4b154acb6d2e2f966ff508211e1142a46d9f6ed00a32ef365e4e75cf68e3f97dd6ae87bf165aa627983e9a594e8cb9a60d96ae1b9469cdc59d26571622caab21c7a717d76137df051018634ed839cd5cff48ebfd8049143b2c939dcef791899a1087d6ecc8bee07ecb41ac0450b9315a29854e1294d21b7b261869c0e8b54083762dcc403f64d260b41051db421b8c59fbda0c6084586fc5cddcff04f62de66c41d414bd63bfca24ad1602487a6d0be98210c9ed56b7a1fe0bcf6d8ae6bc19e0280000000049454e44ae426082</data>
-    </image>
-    <image name="image4">
-        <data format="PNG" length="1493">89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b0000059c49444154388d85555b6c5cd5155dfbde73ef9df15ccf78c6891ddb33e389e36062136a5b7120a428b4b821343ca20002fa0141a520b514be1029e1a3a86a3faa7e345544fb81442bf8286a51694a69235a2a2b4a629c8763a7b6b18d3dcef8319ef13c7d67eedcf7e12375204a6997b43eb674f63a5b6b9fbd0f1d7fda8f2f8308ccb0e8c74195bf140c88724324b2a648fc1db39afd45cde03980ae9ff5c91c820080e32608013fc706d53a8ee630dfcfb9772c9b77d46cc1917345bbcd5512afccae6e1b05b8f2850addacf625880ff433700e700e2c64e3834cd47f9d686f0a3b523b5656b2b02d071e04c43ada8253b3bc2d14a43f7be403132d30d103d17fbf40d074011b14056b53a9ec366ee9b80bcf1f3d81bebd8791cd3b48ce2d23bd92872849b7eb6e03885b606403fcabab66baf945603afe6588fe5230d211647e86478fbc80d8d62e0c0f7d88cc6a06c4ada45b33a0d457c021fc6f2b76b610f49a87aa41308c5c8a58b867d7ae3bfa1beb05906d21b6bd1b7bbe710033e317968a99c9e79ac25e56966880088302214c840c00e7a68a45350e0287e29560da1e4810df98bc32f5ec2ded0d802b02b53ce093c03!
 d7fb939224e3011afd936bd2a32ee771dc79065362610becb39266e10beedb1b740dc865f1bc3b6fa35445869f1f24c76d936dc36c9d3009b60eb3ea4d3b9e9b042fb0c8b7ec24440703c6c6ad9eaab1416ee60a2789c038337348f3c039e6b6355ecc62cf6e233af2f77676fecd0d9731735d316a15509ef9dfcfb990635f70891f8ad4acd41b96c6253b417f71c7907f1be276018d65ed7c5bdae4bd820db788f3259a8b88a3abd18de3a4eb7efab550469edd224ea022a46f5efc4b6f5071fc5c48b77b546245836d0b3fb30a470145d5fff3e5293433ebdbc7cbf20caffbc6e051148148558a5621c2d164b77e6b2464740f5871e3ed40f55dd873abf84c3bd4e7c64f8b33fd4c941f4ee3980b6e62850d708ac4d430dc521fb1b619496ba1c874422b8d79a2750ebba66fe7c6aa6f4b865027b763723145251c89760d92eb4b207857174c50a387d6a1ab95dfb108dfb003d0f1043adb0846ab900cb15638e8746226401808d4d14b627e78b079f7da21b0208695b40c0c710aaf741cdcec36bdc8cf1737f42f2fc7b30aa2e16af2ea0b7fb36c036806a06e9b9692ca5cb2048a4fa0051bc662d2be5f5c8ee5046b58efd14048ecdcf1c85b4673f827f7b13dac5d3c82a61b43c348814f3c02419e7ce0ca1339e4057a21d139393f8d7d93328150d24b6d0a95449cee6d76!
 d103c882f9ba9bef8e8478fece86b40b4a71553ef7f8096c509e83363d8f1f!
 811c4c301a486ce23facd87f0e9d465988e8044bc09b1580bd4a6182e7d9ac2d0bf73bf4de6d9b1e174ab79f26c0623732e58f3cece93e2b4be1c8cfadafcad846f1f4c60e8f438ee3e782f446b0d9e483c3533c5cf589e9037b7a35eadc7a2a6803586e064345c5c6458653b0f9a7a6d805cf3a42c4b272ccb4a8b875efba5056dfd4debdd0ffb439ba9d31f02ba5aeb2107ebe01634fce68db7afbc3ebf1c5cca1724c7e1286a26c831f1e0e0ad584866f1a35f7d005d2b07cc9ad664d4f4bb05418813519e29af7c0fd0caeb9a8ea3735752f70d287e40510129822b232bd58f570acb3ad053cbe7a06beb2051c16c5d33502c63e472128542f1861d41448f11d116c6af2e284468977bc4d181fd51201a05023ea052c3c0839d81178adafdb94f92f3639e77c9300c0930b0b402e4568bf8c7c8ec86d8f54906e071cec799bf5e38d09aa0f76fbd2f027476a09ce5d6c21fe7ab5d4f76877dac8a434ff680d634f9f5f9dc0f47815500e43a0e3cd745cdb0bf6a6b7241ab78c37f9dc3b0e64550c939387ffcc2ef663f4e7eedc2894b1f59c57564c7a731b958bcfc2a9051fe930410271027227e2dbe89609c2393d0dd7bde7debea5f4af6fca644c5fe8102d8ab63e9a77effb3c2a94ac51edb617b4fd9f87fbfdc8df81ce19b9d9b9c49a1f60000000049454e44ae42608!
 2</data>
-    </image>
-    <image name="image5">
-        <data format="PNG" length="1252">89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b000004ab49444154388d8d9549889d5516c77f77f8eef7def7a6aaf7f22aafaa624a6355a2b1123bd1248543178a2348362e84800a069c16824bd18d908de046105cb442a085564171a0171d876e1b89c6a1520e319626161593d490d4f4c66fbe2e42624252d1ffeac2e1fc3887fb3fe708fe4c861e3caa14e9c562a9334d8739424e5f2e4dac18c9b1ce1dd60f57aeeeda515a555893ef2e94011a0b8df9a5b9fab1f9a34bfba31f93d76933f5d7c02586bb6ef3f66c1bdd72cfdf86ae77cb5e371995c1911a2d0db18df1139fe9e569c626c63b5f7f72f09dc6ff83e769f1cb8a6039c8835b1ebae6e5bbb7df59ecf56a4821d9ba6684d5853e7e9c1de7f0ec411c95412090681082a9c631f67dfed1c2f7ff3cf2a89de2edb32c75eeb191c76f7e62f36b3b6fbccf2d688f66b8c4e6bead8c0ede4bb757617df53aac88995c3c04a4c484447140d129b0616028dbec5fbcffe4cfa77f6099c3e7c0a2c2b61b1e1f7cebaecd77688d251501291d867aae636dd7fa731daded1a2467721c591c23b5318894300d10295cd1b346ce57a6ef3b35de788f80530a10b59df9bd77dd71ebfabcce6245805209a9f019e85ecf40d735177c41ad3!
 040d9eb6172f92061d2066189d3108da27b55d14c2d4dd5da13f15b529418deb0bd7fb46472443440fa58e983ec808c2e69986babdb7860d3d3e43286c82e81f4096d9372b6c4e048efbd78ac93d97e7973adb7dbb104207c903e42f908ed2364724930405f61905d9b9fa1922f1351c7ca0ed8905a5f39ebf6899ba4d7ad7b9509896d13a122840a10ca47e90e62858acfaaeaad65d7a667c9673258e113da06ca846472aa471b47e9a5f038369da75aacd06d8ab8ca800a516ae58acfaa686a584216c25f39dd58a61105384aa1b1907124489f667202a259226d302a2111cdcb4293049e7a7f3741f6bf24a9416970adc25ad0916f232520e32ab246e01a81e344a0eb58b9323849e1b98f1fc3adbe8b479e561bac4d89624b9a6065b0949e883b968c0bc601d70832aec4cb688cd697844669c09ecf7693eb7f9355c522464b1c0d195710b652c2463223dbbf45fbe72623df3802c7111847600c649d2c8ec85f048dadcf8b5f3d49efc0175472158c1618078c39937b6a32ae774e260764dcb63fcd7c17fe6f613ea594d7689de26881ab4a28e15d004d6dc43fc65f60e3409b2e73158ef4d0daa2b5a5e04966661266c783ffa4819d5480edcc2453f90d7a97eb7a7a5d7f05c749c8c83249e452736fc45519827499d7bf7f95e10181109ac47608d23ac890acea62e248c!
 8e4a156e3e7379abb93d04e2b80b8638ff97349bbb091bb5b6dc3d5e5eb595!
 d588b5429effef021dfcc7ecae15313fc7d68084b72c6f3c2e239253acb45be3c34cd89e3cbf1c157ea8fb6e7927d70de766bcd255f2cff1a2f9637c5a3d3fe8c13b573f46687191918616bef085b6adbc9ea320a834d0c8b0d9fb1a3138c1dff96c593cdfa8197ea4f2d4ec67bcff22e5af4d992bc6dc72385e7876e776ec995b5c8a92a5d4e0dcf14b0d6d20aeb2c45d3b492799aa793e4f0bfc37d63ff6aee099ae9fef3392b9da66cbeaa46afda9ed9b966abded1b3415d6972360782a04963e65072f4e4b7d181c903fe07ad85f453e0a2d95ff9e6fda1225055ce198b24916d0173c065c7f2772e28ef197db838810000000049454e44ae426082</data>
-    </image>
-    <image name="image6">
-        <data format="PNG" length="1230">89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b0000049549444154388d8dd44b685c551cc7f1ef39e73e67f2984c9236efb4e9c326ada6c6a2625ba9a05514375a5f0b415150447021e246d0ae14dcb81111d48d8f850b51041722f808da56ac7d185b9abecce4dde92499cce4de3b73ef3dc74555ac7dd8fffeffe19cffffc75f70f552f874d14c0f1edd8021629a25a6889801f4951ac515c936b6350efb4fb70de487db3af2ddb9a65c1e60b1bcb4707eb63479feece2d1ea91f03d4a1cbc36b89d9d9df7e6dfbcf9b6915b460646c8fb796c61a3a4224e63121d53d775966b550e9d3dc481d15fbe3bf775f9158afc78f157ff55d656f1d28ee7473e7974f79e9ecd1d43b8ca42eb98c44404f52536b46d62e7c09df4e5d6520e8bf4e57bd9b265684dba317a72666ebeaae7d97709ecdeaa5ebfeb995bf7ee1eba131b416c021031861a29213b06eee18ef5f793f3f3ac6aec4449189bfb195ff96cecd820c4ba6477617646eb59f3c33fb01ae0915dcfddf8d6ce81eda4a6861175a44ad14448a5b977f0716eecda71d1c4aa7199dfe7f7a14949744c6fae97b8a772c7d4f1e231b3c43189c05d7377ebabc3fd9b497480162142d6885922ebb93c3afc0283eddb2e5985210615818!
 cd084a42664dbc056faee6e790d702cab935d1b86bb073da94859414a41cd847436f6f1d0d04bb4f81d974f8d48112a04ad3112126df094c5861bba870a1d0bb75bd91efba6d5ed2da44428999010b3bef57a1e187c91ac9dbb3c0a08a1112a026110c66052d0c662557b8e6c8f7593e567556ba4cf13a53619cba6c9cff1f0e6977155c315d10b708ab4428c364823104a13d442427d1eafc16ab52c25097491a96a8916b268d54ea9ba4057f3ffc052a3ec885a3da29a0694c2320bd56522c0564248b4119ea5f01c012a60d98cf3c6e8e34c2d15ae0aa70454f4292ae91956f4344656715d89674b4c8a90f5d04412705d816b4b9afc2cb9ae31de3efc18b3d5935779718aedc6789ec4772d3c47e13a0205c4a10965584cc783b2c677058e0d8e0d8d7e239d7d67f8e0f727990e0e5d16b6a422e32a3c075c4760dbe07b9260491316d31372a5907c3b77b2be280478aec0b6c0b10d19ab8d815e8fcf4eee65ae7629aea487677bd836d8d6855e2560763c2e0593c9f752d7cdc4ec4fd1c785c904dff2f13c89920247369191ab18ec5ecb37a73f6431be782ce5a88825322865f03d892b1dcefe1133b72ffc48c766520154a79323d91eebbe24abda7a5bba696b6ec296195c99276b75d0975bcfd1e93126cba799583cc96ff3a39c33df20ad10dfce122c3770f8c412130!
 7567e3bf5c5cab318aa0ac0682ac5a3f5d1862e6e0fb2c12a11aea6bf7998d!
 5d97534395d34585df4e7aea3b9c1427ab33899128d6e33f5a089a3e345c6a62728ecaf1e39f46e658f4e98807f5d379d303fb5bff6956db3d65957daf447659c7225a45e530893c1168da48964a1ba4861a1c091e983fc32334aa932cff1cf82cf0fbe5f7942a79cf927359759b893ebb11e1cd9937d6acd76eb16bf4d3738bec4b2241848d2947a60084bb27a663439f0eba7d57796e7d22f81fa4571bc6250c11192cdadfdf648c7267bc86b92398068592fce1cab8f2d1692c3c670ecbfe0b5c07f5716c80b49e6af7d04400908aed6f427bde1ebf1aeaef0f40000000049454e44ae426082</data>
-    </image>
-</images>
-<tabstops>
-    <tabstop>simpleBut</tabstop>
-    <tabstop>mainTab</tabstop>
-    <tabstop>userList</tabstop>
-    <tabstop>fullnameBox</tabstop>
-    <tabstop>homeBox</tabstop>
-    <tabstop>shellBox</tabstop>
-    <tabstop>groupBox</tabstop>
-    <tabstop>passwordButton</tabstop>
-    <tabstop>newButton</tabstop>
-    <tabstop>deleteButton</tabstop>
-    <tabstop>groupList</tabstop>
-    <tabstop>availableList</tabstop>
-    <tabstop>makeMemberBut</tabstop>
-    <tabstop>makeAvailableBut</tabstop>
-    <tabstop>memberList</tabstop>
-    <tabstop>addGroupBut</tabstop>
-    <tabstop>removeGroupBut</tabstop>
-</tabstops>
-<layoutdefaults spacing="6" margin="11"/>
-</UI>
+       </item>
+      </layout>
+     </widget>
+     <widget class="QWidget" name="groupTab" >
+      <attribute name="title" >
+       <string>&amp;Groups</string>
+      </attribute>
+      <layout class="QGridLayout" >
+       <item row="5" column="0" colspan="6" >
+        <layout class="QHBoxLayout" >
+         <item>
+          <widget class="QPushButton" name="addGroupBut" >
+           <property name="text" >
+            <string>A&amp;dd</string>
+           </property>
+           <property name="icon" >
+            <iconset resource="pcbsdusermanager.qrc" >
+             <normaloff>:/add_group.png</normaloff>:/add_group.png</iconset>
+           </property>
+           <property name="shortcut" >
+            <string>Alt+D</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QPushButton" name="removeGroupBut" >
+           <property name="text" >
+            <string>&amp;Remove</string>
+           </property>
+           <property name="icon" >
+            <iconset resource="pcbsdusermanager.qrc" >
+             <normaloff>:/delete_group.png</normaloff>:/delete_group.png</iconset>
+           </property>
+           <property name="shortcut" >
+            <string>Alt+R</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <spacer name="spacer2" >
+           <property name="orientation" >
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeType" >
+            <enum>QSizePolicy::Expanding</enum>
+           </property>
+           <property name="sizeHint" stdset="0" >
+            <size>
+             <width>140</width>
+             <height>31</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+        </layout>
+       </item>
+       <item rowspan="5" row="0" column="0" >
+        <widget class="Q3ListBox" name="groupList" >
+         <property name="sizePolicy" >
+          <sizepolicy vsizetype="Expanding" hsizetype="Fixed" >
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize" >
+          <size>
+           <width>140</width>
+           <height>180</height>
+          </size>
+         </property>
+        </widget>
+       </item>
+       <item rowspan="4" row="1" column="1" >
+        <widget class="Q3ListBox" name="availableList" >
+         <property name="sizePolicy" >
+          <sizepolicy vsizetype="Expanding" hsizetype="Fixed" >
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize" >
+          <size>
+           <width>200</width>
+           <height>160</height>
+          </size>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="1" >
+        <widget class="QLabel" name="availLbl" >
+         <property name="sizePolicy" >
+          <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="text" >
+          <string>Available:  </string>
+         </property>
+         <property name="alignment" >
+          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+         </property>
+         <property name="wordWrap" >
+          <bool>false</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="2" colspan="2" >
+        <spacer name="spacer23" >
+         <property name="orientation" >
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeType" >
+          <enum>QSizePolicy::Expanding</enum>
+         </property>
+         <property name="sizeHint" stdset="0" >
+          <size>
+           <width>91</width>
+           <height>31</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item row="2" column="2" >
+        <widget class="QPushButton" name="makeMemberBut" >
+         <property name="sizePolicy" >
+          <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="text" >
+          <string/>
+         </property>
+         <property name="icon" >
+          <iconset resource="pcbsdusermanager.qrc" >
+           <normaloff>:/rightarrow.png</normaloff>:/rightarrow.png</iconset>
+         </property>
+        </widget>
+       </item>
+       <item row="3" column="2" >
+        <widget class="QPushButton" name="makeAvailableBut" >
+         <property name="sizePolicy" >
+          <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="text" >
+          <string/>
+         </property>
+         <property name="icon" >
+          <iconset resource="pcbsdusermanager.qrc" >
+           <normaloff>:/leftarrow.png</normaloff>:/leftarrow.png</iconset>
+         </property>
+        </widget>
+       </item>
+       <item row="4" column="2" >
+        <spacer name="spacer4" >
+         <property name="orientation" >
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeType" >
+          <enum>QSizePolicy::Expanding</enum>
+         </property>
+         <property name="sizeHint" stdset="0" >
+          <size>
+           <width>31</width>
+           <height>110</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item row="1" column="2" >
+        <spacer name="spacer3" >
+         <property name="orientation" >
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeType" >
+          <enum>QSizePolicy::Expanding</enum>
+         </property>
+         <property name="sizeHint" stdset="0" >
+          <size>
+           <width>30</width>
+           <height>110</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item rowspan="4" row="1" column="3" colspan="2" >
+        <widget class="Q3ListBox" name="memberList" >
+         <property name="sizePolicy" >
+          <sizepolicy vsizetype="Expanding" hsizetype="Fixed" >
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize" >
+          <size>
+           <width>200</width>
+           <height>160</height>
+          </size>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="4" >
+        <widget class="QLabel" name="groupLbl" >
+         <property name="sizePolicy" >
+          <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="text" >
+          <string>Members:</string>
+         </property>
+         <property name="alignment" >
+          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+         </property>
+         <property name="wordWrap" >
+          <bool>false</bool>
+         </property>
+        </widget>
+       </item>
+       <item rowspan="5" row="0" column="5" >
+        <spacer name="spacer24" >
+         <property name="orientation" >
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeType" >
+          <enum>QSizePolicy::Expanding</enum>
+         </property>
+         <property name="sizeHint" stdset="0" >
+          <size>
+           <width>40</width>
+           <height>50</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+      </layout>
+     </widget>
+    </widget>
+   </item>
+   <item row="0" column="0" >
+    <layout class="QVBoxLayout" >
+     <item>
+      <layout class="QHBoxLayout" >
+       <item>
+        <widget class="QLabel" name="textLabel1_2" >
+         <property name="font" >
+          <font>
+           <weight>75</weight>
+           <bold>true</bold>
+          </font>
+         </property>
+         <property name="text" >
+          <string>PC-BSD User Manager - Advanced Mode</string>
+         </property>
+         <property name="wordWrap" >
+          <bool>false</bool>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="spacer12" >
+         <property name="orientation" >
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeType" >
+          <enum>QSizePolicy::Expanding</enum>
+         </property>
+         <property name="sizeHint" stdset="0" >
+          <size>
+           <width>219</width>
+           <height>31</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QPushButton" name="simpleBut" >
+         <property name="minimumSize" >
+          <size>
+           <width>0</width>
+           <height>31</height>
+          </size>
+         </property>
+         <property name="text" >
+          <string>Simple &amp;View</string>
+         </property>
+         <property name="shortcut" >
+          <string>Alt+V</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <widget class="Line" name="line3" >
+       <property name="frameShape" >
+        <enum>QFrame::HLine</enum>
+       </property>
+       <property name="frameShadow" >
+        <enum>QFrame::Sunken</enum>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11" />
+ <customwidgets>
+  <customwidget>
+   <class>Q3Frame</class>
+   <extends>QFrame</extends>
+   <header>Qt3Support/Q3Frame</header>
+   <container>1</container>
+  </customwidget>
+  <customwidget>
+   <class>Q3ListBox</class>
+   <extends>Q3Frame</extends>
+   <header>q3listbox.h</header>
+  </customwidget>
+ </customwidgets>
+ <tabstops>
+  <tabstop>simpleBut</tabstop>
+  <tabstop>mainTab</tabstop>
+  <tabstop>userList</tabstop>
+  <tabstop>fullnameBox</tabstop>
+  <tabstop>homeBox</tabstop>
+  <tabstop>shellBox</tabstop>
+  <tabstop>groupBox</tabstop>
+  <tabstop>passwordButton</tabstop>
+  <tabstop>newButton</tabstop>
+  <tabstop>deleteButton</tabstop>
+  <tabstop>groupList</tabstop>
+  <tabstop>availableList</tabstop>
+  <tabstop>makeMemberBut</tabstop>
+  <tabstop>makeAvailableBut</tabstop>
+  <tabstop>memberList</tabstop>
+  <tabstop>addGroupBut</tabstop>
+  <tabstop>removeGroupBut</tabstop>
+ </tabstops>
+ <resources>
+  <include location="pcbsdusermanager.qrc" />
+ </resources>
+ <connections/>
+</ui>

Modified: pcbsd/trunk/pcbsdusermanager/maindlgcode.cpp
===================================================================
--- pcbsd/trunk/pcbsdusermanager/maindlgcode.cpp	2008-09-11 15:33:50 UTC (rev 2753)
+++ pcbsd/trunk/pcbsdusermanager/maindlgcode.cpp	2008-09-11 16:46:13 UTC (rev 2754)
@@ -25,7 +25,7 @@
 #include "user.h"
 #include "group.h"
 
-#include <qlistbox.h>
+#include <Q3ListBox>
 #include <qcombobox.h>
 #include <qlabel.h>
 #include <qlineedit.h>
@@ -36,8 +36,7 @@
 #include <kmessagebox.h>
 #include <klocale.h>
 
-mainDlgCode::mainDlgCode(UserManagerBackend *back, QWidget *parent, const char *name)
-    :MainDlg(parent, name)
+void mainDlgCode::programInit(UserManagerBackend *back)
 {
     setEnabled(false);
     
@@ -186,7 +185,8 @@
 
 void mainDlgCode::showAddDlg()
 {
-    addui = new AddDlgCode(back);
+    addui = new AddDlgCode();
+    addui->programInit(back);
     addui->show();
 }
 
@@ -257,7 +257,8 @@
 
 void mainDlgCode::changePassword()
 {
-    changePassUi = new ChangePassCode(userList->currentText(), back);
+    changePassUi = new ChangePassCode();
+    changePassUi->programInit(userList->currentText(), back);
     changePassUi->show();
 }
 
@@ -361,4 +362,3 @@
     }
 }
 
-#include "maindlgcode.moc"

Modified: pcbsd/trunk/pcbsdusermanager/maindlgcode.h
===================================================================
--- pcbsd/trunk/pcbsdusermanager/maindlgcode.h	2008-09-11 15:33:50 UTC (rev 2753)
+++ pcbsd/trunk/pcbsdusermanager/maindlgcode.h	2008-09-11 16:46:13 UTC (rev 2754)
@@ -24,7 +24,7 @@
 #ifndef MAINDLGCODE_H
 #define MAINDLGCODE_H
 
-#include "mainDlg.h"
+#include "ui_mainDlg.h"
 #include "usermanagerback.h"
 #include "adddlgcode.h"
 #include "changepasscode.h"
@@ -32,10 +32,14 @@
 #include <qstringlist.h>
 #include <qcolor.h>
 
-class mainDlgCode: public MainDlg {
+class mainDlgCode: public QDialog, private Ui::MainDlg {
 Q_OBJECT
 public:
-    mainDlgCode(UserManagerBackend *back, QWidget *parent = 0, const char *name = 0);
+    mainDlgCode() : QDialog()
+    { 
+      setupUi(this);
+    }
+    void programInit(UserManagerBackend *back);
     void updateUserList();
     void updateShellList();
     void updateGroupList();

Modified: pcbsd/trunk/pcbsdusermanager/notroot.ui
===================================================================
--- pcbsd/trunk/pcbsdusermanager/notroot.ui	2008-09-11 15:33:50 UTC (rev 2753)
+++ pcbsd/trunk/pcbsdusermanager/notroot.ui	2008-09-11 16:46:13 UTC (rev 2754)
@@ -1,176 +1,222 @@
-<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
-<class>NotRoot</class>
-<widget class="QDialog">
-    <property name="name">
-        <cstring>NotRoot</cstring>
-    </property>
-    <property name="geometry">
-        <rect>
-            <x>0</x>
-            <y>0</y>
-            <width>552</width>
-            <height>409</height>
-        </rect>
-    </property>
-    <property name="caption">
-        <string>Root Access Required</string>
-    </property>
-    <grid>
-        <property name="name">
-            <cstring>unnamed</cstring>
-        </property>
-        <spacer row="0" column="0" rowspan="1" colspan="2">
-            <property name="name">
-                <cstring>spacer3_2</cstring>
-            </property>
-            <property name="orientation">
-                <enum>Horizontal</enum>
-            </property>
-            <property name="sizeType">
-                <enum>Expanding</enum>
-            </property>
-            <property name="sizeHint">
-                <size>
-                    <width>151</width>
-                    <height>21</height>
-                </size>
-            </property>
-        </spacer>
-        <widget class="QLabel" row="0" column="2">
-            <property name="name">
-                <cstring>pixmapLabel2</cstring>
-            </property>
-            <property name="sizePolicy">
-                <sizepolicy>
-                    <hsizetype>0</hsizetype>
-                    <vsizetype>5</vsizetype>
-                    <horstretch>0</horstretch>
-                    <verstretch>0</verstretch>
-                </sizepolicy>
-            </property>
-            <property name="pixmap">
-                <pixmap>image0</pixmap>
-            </property>
-            <property name="scaledContents">
-                <bool>true</bool>
-            </property>
-        </widget>
-        <spacer row="0" column="3" rowspan="1" colspan="2">
-            <property name="name">
-                <cstring>spacer4_2</cstring>
-            </property>
-            <property name="orientation">
-                <enum>Horizontal</enum>
-            </property>
-            <property name="sizeType">
-                <enum>Expanding</enum>
-            </property>
-            <property name="sizeHint">
-                <size>
-                    <width>161</width>
-                    <height>21</height>
-                </size>
-            </property>
-        </spacer>
-        <spacer row="1" column="2">
-            <property name="name">
-                <cstring>spacer3</cstring>
-            </property>
-            <property name="orientation">
-                <enum>Vertical</enum>
-            </property>
-            <property name="sizeType">
-                <enum>Fixed</enum>
-            </property>
-            <property name="sizeHint">
-                <size>
-                    <width>20</width>
-                    <height>30</height>
-                </size>
-            </property>
-        </spacer>
-        <spacer row="2" column="4">
-            <property name="name">
-                <cstring>spacer6</cstring>
-            </property>
-            <property name="orientation">
-                <enum>Horizontal</enum>
-            </property>
-            <property name="sizeType">
-                <enum>Fixed</enum>
-            </property>
-            <property name="sizeHint">
-                <size>
-                    <width>71</width>
-                    <height>21</height>
-                </size>
-            </property>
-        </spacer>
-        <widget class="QLabel" row="2" column="1" rowspan="1" colspan="3">
-            <property name="name">
-                <cstring>textLabel1</cstring>
-            </property>
-            <property name="sizePolicy">
-                <sizepolicy>
-                    <hsizetype>7</hsizetype>
-                    <vsizetype>3</vsizetype>
-                    <horstretch>0</horstretch>
-                    <verstretch>0</verstretch>
-                </sizepolicy>
-            </property>
-            <property name="frameShape">
-                <enum>NoFrame</enum>
-            </property>
-            <property name="frameShadow">
-                <enum>Plain</enum>
-            </property>
-            <property name="text">
-                <string>This program must be run as root. Click the "Administrator Mode" button below or restart the program as root.</string>
-            </property>
-            <property name="alignment">
-                <set>WordBreak|AlignVCenter</set>
-            </property>
-        </widget>
-        <spacer row="2" column="0">
-            <property name="name">
-                <cstring>spacer5</cstring>
-            </property>
-            <property name="orientation">
-                <enum>Horizontal</enum>
-            </property>
-            <property name="sizeType">
-                <enum>Fixed</enum>
-            </property>
-            <property name="sizeHint">
-                <size>
-                    <width>61</width>
-                    <height>21</height>
-                </size>
-            </property>
-        </spacer>
-        <spacer row="4" column="2">
-            <property name="name">
-                <cstring>spacer4</cstring>
-            </property>
-            <property name="orientation">
-                <enum>Vertical</enum>
-            </property>
-            <property name="sizeType">
-                <enum>Expanding</enum>
-            </property>
-            <property name="sizeHint">
-                <size>
-                    <width>20</width>
-                    <height>100</height>
-                </size>
-            </property>
-        </spacer>
-    </grid>
-</widget>
-<images>
-    <image name="image0">
-        <data format="PNG" length="5687">89504e470d0a1a0a0000000d49484452000000c80000002708060000004a4a07c9000015fe49444154789cdd9d795c5447b6c77ff7f6464343d3d088d020cd262e282e187179683089fb1e5f9c51e312751c35e3907c9231999898b8c43c93675e269a649c31138d6bd0a891108d3182a28fa80105092ab2c8ded2f4def476ef7d7f203e44faf665ebc6f97e3efd47d73db7ea74dd3ab7aa4e9daa260882e8d7bb77ef53128904dd0d4110904824b4c562b94d10c4af818181a79393937fd9bc79b3bd2bcb59be7cb9e4faf5eb43cd66f3388220868944a258b3d92c76381c1dce53a552ddd1e974935ba63d1f1fbfab576ded7364a735768e99a60d46a0582b14668606079f7e63f1e2e2b8575e613a9adff90d1bc8b4ccccbec5b76fa7f8d86ca3fc687a00df64925aed5dfa08da8406701638540bbcd5d6f5f14ae5deb0b2b2d15d559f0400b1544a1b49f29e06c885afefa5f8e8e89c97060eace9fbe9a79cea90204972f0a851a3ae87868676915aec300c03866160b158a0d1686883c1f0ab4422d9b263c78ee34949499dca7bca94297d4b4a4ad68ac5e2593e3e3e617e7e7e8497971748920441109dca3b3737f7667171717ccbb417a2a28e2d2d2999cdef54ceaeb1035001f84d20b0dc94484e46c4c7bff3e9850!
 b45edc9a3ea8b2ff0face9d636df7eebd1d6b3225f7b5db45bd0008d1d4903a573bdc7000d8087c710958d5d6f5451111671795974fe8cafa64005000cc002a01940885fa72b138531411b16be3d2a567faa6a6d26cf7bbdd405a43d3346a6b6b19a3d17860f0e0c12fefdbb74fd3de3c66cd9a252b2929d9261008162b140a914824ea723d9d19c84b6e3090961801fc2410982a148ad4796161fffcddc58bac0f18003e9a37cfef7256d68e01f5f54b4653142974839e6dc1c5405e2c2f9fc0eb663d6c007e250826cfdfffc7defdfbaffae4d2a55267b2dd393ae0044992080d0d2542424216e4e4e41c9b376f9e6f7bee4f4c4cec5f5c5c9cad502856464545758b71f4242400a6dbed3e89f7ee7d76f8d6ad575dc92f8c8ef6bf989e7e6c665dddb2f11e348e9e84104012c310bfd7689e335fbb76617142c27867b21e3790667c7d7d111b1b3bfee6cd9b87162e5cc8e939c6c4c4f4339bcd3fc6c6c6f677c71caaa740021849d3bca16af507b36363e73a93db9e9222b4a854c7e79bcd13146ed4ef49c10fc03cab55e17febd6a9df0d1830aa2d19ce06c2300c288ae2fca1691a0cd3beb9a4b7b7377af7ee3d252f2fef4fae64274e9c18e2e5e575322e2e4ec1e7bb7390d33320008ca16922a0aaeaa357c78df36f4b26ebce9db7271b0ce382da993783a60975577f9!
 8079f9e8400c0148bc5475c5a7a70ddd8b17d5a5fe7d4b20c0603f47afdcf7!
 6bb5ddb9e466fb55afd0502c140994c162493c9082e13e580800068349af7a64f9f7ee8bbefbeab6c4b262d2d8ddcb871e3674aa532968b7150140587c3f1d041d011daf28039d0342770a6018da6f12ed71209343d301f963c5b4202186936477c5f5ebe00c0ce96d716272444051416ae8de4583603a01640ae48a43549a5150ea190eeeac6cc00700055a86cf3b1bac401a090c7b3d7330ce54a3702801020021946d48761e0c3222b0030b5b131e25061e1ae132b56cc98b97bf7c3791d2703d1ebf5b0dbedaf5fb972e52a17f9962c5bb62c202f2f6f8e5aadde181e1eaef0f2f262952708020a85425c5252f22a80d4b664b66cd932452a95ce148bc5ac79592c165457571b689aced46ab5790cc350edd5bf199d4ea76a9d760f38fc2e70c359372c1408101d1e0eae851200ec0683d0df6e7f7688569b3800aebd4b7d00f8180c73d0ca4034f7ef2f9968b74bb994cb00b84492f682debd770d494cdcfefab26555bd66cde2a8b5fba806509490f0a6a6b2328d8b81587d7df97c81205ed0d0f0fbfe6af59c248ae2396bf03200c3359a297bcf9f9f0ee044733ae7b14947d710f6ecd9d300e01ff3e6cdfb3e3f3f7f7f6c6cec78574622168b211008e6ad58b1e29dddbb77eb5b5e5bb76e9dd7b973e7b6f6eedd9b350fad56cbd4d4d49c1c3468d0ea949494ea152b5!
 674487f36ae94941c6615b0db915352d2ee7c77ce9ebde1425edeab96f2f22dc3699af519090004582c8937376e24076edc480340c3d9b378f5f9e767721d5a5d2149aa303a7ae5f49898af169e3cc9bc71f264bb7576070e001a6f6ff56195aa8cd30d2a15001467ae5f7f624f7afa245551d19733ecf66067153a9c61881bd5d56fef9835eb87d4e3c7ad801b27e9df7cf34df5b061c3e6575454547119e6482492d082828284d6e9172f5e7c4e2693c593a473d51ff41c279e79e699f9070f1eec16e3e84ed67cfb2df5a709133ecc924affa975214b0020cc66bf051f7cf0b042befdec33b1b4b171001777a919c0cda0a053bbf6ecf9d7c28c8c9e3645e812c66ddbc67c959f9fa18d8b5b7881cf77ba22ca0330cc6c1e9a5d5838a939cdad5eac03070ed4310cf389d16874292b914808b55a3db475bacd665b151818e874e4c1300caaaaaa7423478e5cf5f1c71f5b3aa9b2c718fd8f7fd083fbf7df7e8dc773dd681906358d8d0fbf7a0704448aac564ea30315002a30305df61fffd1615d9f14be2e2838fb5b50d0ae5a1699010c43f0efdf5fd9fcdded6e5ea9547a968b8108854288c5e2be2dd3d6ac5913c8e7f353d826e626930976bbfdd33d7bf6d4755e5bcf92faf6db25263fbf065716420a85f8c3b0610fbf677dff3dcf9b63190c00074d777f9c490f21262!
 eeec3ab5e5e7a67d7bd00041b0c13fe7bfa7439e00103f1f7f73773f16691240983c1f0!
 c828213b3b7ba24c26635d096c6868b08587871fe8a49a3d02f9a4490c8442d695720680452cae59fbd65b0f7d018963c6305cbb4e3900fafefd36d700fe1d993e6a5465a9b777ba954566a0c321cab87e7d22e00103a9a8a808e0ea6a6ddd53582c96643f3f3fa7f20cc3c06c3617262727dfee94923d84e3a9a93252a3f1637b9d3402a817082ef49a33e761a5fa0405959904024ebd820440b44eb770d58811c35c0aff1b30e6fdf761f5f54d731a5b02200c80c0641a0f78c0401886992995baf63e3a1c0e08854275f3f7c3870f135e5e5e896cc3ab07eb1d39ebd7afef78d86e0fe2cbb4b4c5f1361b6b8ff91b41d0c2e0e0477accf93b771a0d12c94d2e95400078dae1f04641c1770ba2a327a6af5ddbdda1501e67fa8811174bf87ca73db30840b0dd3ea2e8a38f9cba85bb8599336786565656ae74b57e010046a31162b138aff9fbad5bb77c188609651b9e592c16902479a36bb4f52c0b63629e09292b7b3b8245c602e0aa9fdfff0e8f88c83870f3e623d7eac5e27d951acd102587b28400663736865e2b2d4d3fb2776ff66499ec82402cd60adb19bec31004ea1b1beb037c7dab472b95454b57afae944f9dea3298d2ddfc312d4df54789a49a311ac3da6a4d04005fab35ecf4850b7e6e339019336604dfbd7b372d2a2aca9fcb1cc46030e82323232f5fb972!
 050090939313e0e5e515c0768fc96482582c2e6e9d3e7af4e8297dfaf479aab321ef5d49555555515656d6a1d6e9e142e1b451dede2fc594964e194d5142671adb019c120874a23e7d56bcfefdf7b6c7f2090bfb57b656bb2edc6ceec3a54b100048a2695ea25e9fdc08245b341ace0b9c2db101d012045375eb96f5b50b174aa685861e4ae8d76fef9673e7ca3b905db761e0f3efd04098b3baf1a328df9ccaca40ce06c2e375ace7ddbc79b3f8d8b16313efddbbf7a152a98ce6126d6bb7db61b1587e58be7c79555a5a1a00a0a0a040181a1aca7ab3c56241444484eaead54717fc232323a70e1f3e7c35dbda89bbb971e3c6c9b60c4461b34d5d68b3cd627b779b01a48b446a954c36f7687e7e615b32bb7ef9a5614e6cec9a0ba5a527c6391c24d757031f80ef834f47e9c330c46087c38bd6eb07d4eaf5ef5d6b68787d8642b1756a52d28e3f1c3dda235cef9440a072a069eda32d24342d2cbd7bd79b9381f8f9f9a1b4b4747d5050d063e116ce90c964521f1f9f5edf7efbed205f5fdf20b95c4e7269a00cc3a0a2a2c2aa542ab74c9af470bd06c3870f0fadad65f36037ed2d110a85f5add3793c1ef87c3e7a9281387be108d034e4690b0640214932177c7cb2bca3a2561dbd7e9d75d3d4b13b774e0963625ee395957d30c6e1e0bbfbd79300420184582c923bd5d5!
 5bce6566a6bcd9afdfdcad45454eddacee42ed70d4b3f590029ac6c061c322381988afa!
 f2fe2e3e3e7b637d0af233bf91a1a1ae07038b6a5a7a73f3297904aa5625706c2300c66cf9e8d83070fb6abcc27053b80aae0e0bca8b8b8d5dbce9fe7b4a3f0afab57efd8f4f9e775f565659f3e63b3f977a667e8280480be0c43f8d7d73f7394a68f7e3475eacc57d3d3cd1e50e5210e9349cf3639e201e09bcd02ce2f159224c1e3f1daf569af71180c06a854aab4f8f8f8adadafd134dde3267bee460820b1a666a8fdd2a52b334242dedb3a6d1a5b902a0060d02baf30476edfde6f1f3c78e4de8080935924e9d0c33361e7bd003cdbd03021273f7f83078a7f04878b973d038014897ace8629b55acd5455551d9d3c79f292fdfbf73f36e9ccc8c8287765230441a079cef2ef4a0080a9369bf78c9a9a0db9d9d9e9dbe6cc61755c34f3f9d5abb73f7ee79d59b7070e4cde2d937d96269194ff24103057011402b805e0763b3ef70068d11440d81ea201a2774dcdba57c68d0b6be7ad5d8a542693b3357e07806295eabec7771ad9ed76545555d9cc66f3bb63c68cf970fbf6ed8f1907000c1932c466341a1d608940160804686c6c54a0697ffe43eaeaeaf4c5c5c5753dc98b555353d3661c623d8f67cf66187b024d0bd85a7e1480791acdb86f32330f7d306dda8cbf9c3ae572f21bbe6e1d03e03280cb7f9f3f5f9c5b5bdbebe6ddbb7d0294ca704aafe73c910780dab!
 a3a1e0344ca2d96a4509369ec28bbdda7cd5d5bad20008cb1dbc5ffbc7d7b39808ded28b24b115b2cfe6c8ddfc6e7334104a1f388813c58f1865aadb6373636fe141c1cfcf6952b57aedc6ce5cb6f496c6cac363b3b5b8ba6e88836f1f1f1416969692c809c96e9a74f9f7ee3f4e9d36f74d90fe8463e4b4a7af36bb3f98b828a8a35a3349a15c3298aeface1ca013cad563f73fad75fd702f8b03de5ac3c74a811403980725454744ae7d7c78d531ec8cddd3ed960981bc9302eed2c10805caf9f94bb7efd7b43b76df3c8d0d90750b2357e3d4198bd45a27a4e06e2703850575767b75aad9dfa31144581244993d56acd6718264ba1501c9d3f7f7e416a6aaa4b977b7878b89ea2a81ab0188844220145514f01f8ba337a7a92f1d9d94600370f2f58b0f6e8c58bd57ee5e59bfab2c8f705883cadf68d8c975ffe74f2dffee61117ea7f656696bd3378f0c2d3e5e5be4b74ba89ecbb7d9abc5b72bb3de64c6eae3f800637a8f8087776ec107ef2d65b716c432c9d40a0191d1fafe16420f5f5f5f0f7f79fe370383abc4a9d949484e1c38753972f5faedeb66d1b0300858585f8f1c71f39ddbf7efd7a3a2e2e2e97a2a841ce5ca47c3e1f42a13065d3a64dc20d1b36b439547b527861ff7efa87a54bdf3f7af4e8efa3f5fafecefcf52480016673c0eed3a79f03e0b19d4eefd!
 eb8619ddfb7efa67c9d6ee2080ef2129a9664d7d549e10103f9dbe1c30302cd66a7417d!
 1480061eaf70e9debd8d9c0c84a228d4d4d4d4e6e6e6deeba85267ce9ce9e8ad0f214932cb6834bee82c968b2008f8f8f8c49d39736624800b9d2ed0c34cfaf24b6aaa5c7e58076c649b8f28017ca7d33d050f1a08006c5ab52a77e76bafd941510257b2423e5f141b19e98bbc3c57a25dceadb2b229cb58bc58060075024136d0838efde1c2c081037f50abd5ac8e93a0a020bed1687ce3f8f1e3ee52ab5bb15a2ce52617325e00b42a15d72d20dd862430d04e70f420db1c0e6b594585eb8d415dccfee5cbc56166f3a240169942828052a1380b3c61069296965665b3d9b229caf994e5c146ab49dbb76f9fe646d5ba0d2f8924d8d598bea7b069d7ae114134cde94c3313499a9e0a0c74b5a3b8cb49cfcc9c3bd860703affa001948bc515ab9f7e3a0778c20c04004892fcaca1817d935d68682861341aff9e9c9c3cc45d7a7507e75f7e990cb25866bb729fda000404077b7457e0ae458bfc34b76e6d1ec221da8201a0138b2b66a4a4e8ba5fb3ffe78d9494304979f9fbfd593c6d2a002aa974efc84f3ea18027d040944ae589fbf7ef17b085bd100481c8c8c81093c9f4537c7cfc8b6bd7ae15efdbb7cf8d5a769eb4356bc82fd2d35387ea74235d0de86b00087d7df3dda1576bf6af5c49ae1c3a74c0c5f4f4ef266bb54f73e9ed74006a44a233fdfff2970e1fc3d41e!
 8afefa57bc9c9434a0eadab58ca9365b18dbc4fbaa48641a181fffafe6ef9c0eafaeaaaa426363e388dcdcdc769f8bd51d242424ccf6f5f53d161212c22ac7300cd46a35f47abdca66b3fd421084c6d59143ced0e9747a9d4ef75a6d6dedc3d31112a2a3fb55dcbd1be0ec7514299723312eae5de598743aa81a1a02e476fb8b096af5dc449a76f9123b2e1058872c59a25cb67bf763c16a2394ca45b6b2b2e8ae7e13060504f805f2f9721fab755088c93468a4c3c1791ffc1992a42c63c70ef9382baba065baabc3ab6b015c8a8fdf6de0f3b35aa633008452295aaf4190001a2a2a8442a3719c52a77b61acd52a62d35105e04048c88e3d5f7ef98afc41a0acc757d23b426a6aea891d3b76a4fbfbfb4f65db7c451004e47239e472792f9aa6a775e438d4668c46635d6d6ded9b68dae50a00086798ad8b01a7a7bbd36a35ec39398f3d3836f80c036f8a4218c07a1a60335a005552e9b14fda300e00e8cb308b6603cf76f9a1d50d0de0a3293eac3dc6a7057047263b76b49571702118405241c10a23f0d8394ecdc79bb6844493032308aeebd201e0ac585cf3d4b0615be52da2c89f480359b264093d79f2e41565656599b1b1b19c8e1f2549b253e1ee6dadbdf80088074b25320cd0893fed71050de09c48a4098a8a7a17f58f45f903680a9f97c07908bd3ba100fc2012!
 d5c895cad7a056bb946f0d81a6f0f9ee209bc7b31a2222d6bc959efe48453e717390663!
 232326a6c36db8ca2a2a22abb1bfe1da9a7c100b84c924cb542f1e7cf7ff9e596a7f571050de04792b468fbf479e98b6bd77accee42064dff15921f1aba696eaf5e8fad0d3cb1060200b76fdf2e92c964cf161717df34180c9e56c76d500032793c6b4174f4ebc74a4af67a5a1f575801a48b44c6fcc0c0f947eedcc9f0b43ecd38009ce7f1acd9a1a16f6d8889d9f29f59598f8dbf9f680301804b972efd96909030b6b2b2f27feedebd6b319bcd1d9e67f47418341de07cc4c7e77e7e58d8bc59a3477fe4699dd8a000fc06e06b8924bf262aeae98cfbf74fb8bac71d3800140138289194dceddb77ce8b0ac5fb437ffeb94d593ec330301a8dd06a9dafd9188d46b02dce799afdfbf76b01fc79c68c191f969595fd812088493c1e2f462c164b854221d115ff1fd2d8e268cf876900cad0bd1339064d7bd0ebf97c47a548545a2b95ee9f9c9cbc73eda143f5df7ef595cbfb1bd1e4067619fbd14538d03411af1108ccf744a25cad5cfef717468d3ab4e4e04197b1716634d567579f3bd4fc3715463e9faae7f11a541249be4526dbb768e2c4237377ee34b39d32480090f2f9fc14b64319288a424040c0cf2a95caed2b9f1de1c89123bcafbefa2aa0b2b252e1e5e51579fdfaf54ef72a0e87c34a51d419b4d82334242a6a647d49496877ee3221003c1517c7d00cf3db942!
 143ca971f39d2ae88dd658989cf9bf47aa5bb860a469a368b78bcb2003fbf8209fdfb57beb0772f67275e825239565d5616d4d5f5a9f4f64658bf7e268bd95c91141959b360da345dd89a359c1ac4ff011cea09a195f7c60d0000000049454e44ae426082</data>
-    </image>
-</images>
-<layoutdefaults spacing="6" margin="11"/>
-</UI>
+<ui version="4.0" >
+ <class>NotRoot</class>
+ <widget class="QDialog" name="NotRoot" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>552</width>
+    <height>409</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Root Access Required</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout" >
+   <item row="0" column="0" >
+    <layout class="QHBoxLayout" name="horizontalLayout" >
+     <item>
+      <spacer name="spacer3_2" >
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeType" >
+        <enum>QSizePolicy::Expanding</enum>
+       </property>
+       <property name="sizeHint" stdset="0" >
+        <size>
+         <width>151</width>
+         <height>21</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QLabel" name="pixmapLabel2" >
+       <property name="sizePolicy" >
+        <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="pixmap" >
+        <pixmap resource="pcbsdusermanager.qrc" >:/NewLogoSmall.png</pixmap>
+       </property>
+       <property name="scaledContents" >
+        <bool>true</bool>
+       </property>
+       <property name="wordWrap" >
+        <bool>false</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer name="spacer4_2" >
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeType" >
+        <enum>QSizePolicy::Expanding</enum>
+       </property>
+       <property name="sizeHint" stdset="0" >
+        <size>
+         <width>161</width>
+         <height>21</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+   <item row="1" column="0" >
+    <spacer name="spacer3" >
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeType" >
+      <enum>QSizePolicy::Fixed</enum>
+     </property>
+     <property name="sizeHint" stdset="0" >
+      <size>
+       <width>20</width>
+       <height>30</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="2" column="0" >
+    <layout class="QHBoxLayout" name="horizontalLayout_2" >
+     <item>
+      <spacer name="spacer5" >
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeType" >
+        <enum>QSizePolicy::Fixed</enum>
+       </property>
+       <property name="sizeHint" stdset="0" >
+        <size>
+         <width>61</width>
+         <height>21</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QLabel" name="textLabel1" >
+       <property name="sizePolicy" >
+        <sizepolicy vsizetype="MinimumExpanding" hsizetype="Expanding" >
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="frameShape" >
+        <enum>QFrame::NoFrame</enum>
+       </property>
+       <property name="frameShadow" >
+        <enum>QFrame::Plain</enum>
+       </property>
+       <property name="text" >
+        <string>This program must be run as root. Click the "Administrator Mode" button below or restart the program as root.</string>
+       </property>
+       <property name="alignment" >
+        <set>Qt::AlignVCenter</set>
+       </property>
+       <property name="wordWrap" >
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer name="spacer6" >
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeType" >
+        <enum>QSizePolicy::Fixed</enum>
+       </property>
+       <property name="sizeHint" stdset="0" >
+        <size>
+         <width>61</width>
+         <height>21</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+   <item row="3" column="0" >
+    <spacer name="verticalSpacer" >
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" stdset="0" >
+      <size>
+       <width>20</width>
+       <height>51</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="4" column="0" >
+    <layout class="QHBoxLayout" name="horizontalLayout_3" >
+     <item>
+      <spacer name="horizontalSpacer" >
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0" >
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="pushAdmin" >
+       <property name="text" >
+        <string>Run in Administrator Mode</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer name="horizontalSpacer_2" >
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0" >
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+   <item row="5" column="0" >
+    <spacer name="spacer4" >
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeType" >
+      <enum>QSizePolicy::Expanding</enum>
+     </property>
+     <property name="sizeHint" stdset="0" >
+      <size>
+       <width>20</width>
+       <height>170</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11" />
+ <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
+ <resources>
+  <include location="PBM.qrc" />
+ </resources>
+ <connections/>
+</ui>

Modified: pcbsd/trunk/pcbsdusermanager/pcbsdusermanager.cpp
===================================================================
--- pcbsd/trunk/pcbsdusermanager/pcbsdusermanager.cpp	2008-09-11 15:33:50 UTC (rev 2753)
+++ pcbsd/trunk/pcbsdusermanager/pcbsdusermanager.cpp	2008-09-11 16:46:13 UTC (rev 2754)
@@ -22,32 +22,27 @@
  *   OTHER DEALINGS IN THE SOFTWARE.                                       *
  ***************************************************************************/
 
+#include <klocale.h>
+#include <kglobal.h>
+#include <kgenericfactory.h>
 
 #include <qlayout.h>
-#include <qapplication.h>
 #include <qtranslator.h>
 #include <qtextcodec.h>
 
-#include <klocale.h>
-#include <kglobal.h>
-#include <kparts/genericfactory.h>
 
 #include "pcbsdusermanager.h"
+#include "notroot.h"
 
-typedef KGenericFactory<PCBSDUserManager, QWidget> PCBSDUserManagerFactory;
-K_EXPORT_COMPONENT_FACTORY( kcm_PCBSDUserManager, PCBSDUserManagerFactory("kcmpcbsdusermanager"));
+K_PLUGIN_FACTORY(PUManagerFactory,
+                 registerPlugin<PCBSDUserManager>();
+                )
+K_EXPORT_PLUGIN(PUManagerFactory("pcbsdusermanager"))
 
-extern "C"
+PCBSDUserManager::PCBSDUserManager(QWidget *parent, const QVariantList &lst)
+   :    KCModule(PUManagerFactory::componentData(), parent, lst)
 {
-  KCModule *create_pcbsdusermanager(QWidget *parent, const char *name)
-  {
-    return new PCBSDUserManager(parent, name);
-  };
-}
 
-PCBSDUserManager::PCBSDUserManager(QWidget *parent, const char *name, const QStringList&)
-    : KCModule(parent, name), myAboutData(0)
-{
     QTranslator translator( 0 );
     translator.load( QString("pcbsdusermanager_") + QTextCodec::locale(), "/PCBSD/LANGS/" );
     qApp->installTranslator( &translator );
@@ -58,8 +53,10 @@
     setButtons(KCModule::Apply);
     QGridLayout *layout = new QGridLayout(this);
     layout->setAutoAdd(true);
-    advancedGui = new mainDlgCode(back);
-    simpleGui = new SimpleDlgCode(back);
+    advancedGui = new mainDlgCode();
+    advancedGui->programInit(back);
+    simpleGui = new SimpleDlgCode();
+    simpleGui->programInit(back);
     load();
     if (getuid() == 0) //Check for root
     {
@@ -73,6 +70,7 @@
     else
     {
         notRootGui = new NotRoot();
+        notRootGui->programInit();
         notRootGui->reparent(this, QPoint());
     }
 };
@@ -119,5 +117,3 @@
     simpleGui->reparent(this, QPoint());
     simpleGui->show();
 }
-
-#include "pcbsdusermanager.moc"

Modified: pcbsd/trunk/pcbsdusermanager/pcbsdusermanager.h
===================================================================
--- pcbsd/trunk/pcbsdusermanager/pcbsdusermanager.h	2008-09-11 15:33:50 UTC (rev 2753)
+++ pcbsd/trunk/pcbsdusermanager/pcbsdusermanager.h	2008-09-11 16:46:13 UTC (rev 2754)
@@ -33,13 +33,14 @@
 #include "usermanagerback.h"
 #include "simpledlgcode.h"
 #include "notroot.h"
+class KConfigDialogManager;
 
 class PCBSDUserManager: public KCModule
 {
     Q_OBJECT
 
 public:
-    PCBSDUserManager( QWidget *parent=0, const char *name=0, const QStringList& = QStringList() );
+    PCBSDUserManager( QWidget *parent=0, const QVariantList& = QVariantList() );
     ~PCBSDUserManager();
 
     virtual void load();

Modified: pcbsd/trunk/pcbsdusermanager/simpleaddcode.cpp
===================================================================
--- pcbsd/trunk/pcbsdusermanager/simpleaddcode.cpp	2008-09-11 15:33:50 UTC (rev 2753)
+++ pcbsd/trunk/pcbsdusermanager/simpleaddcode.cpp	2008-09-11 16:46:13 UTC (rev 2754)
@@ -30,8 +30,7 @@
 #include <kmessagebox.h>
 #include <klocale.h>
 
-SimpleAddCode::SimpleAddCode(UserManagerBackend *back, QWidget *parent, const char *name)
-    :SimpleAddDlg(parent, name)
+void SimpleAddCode::programInit(UserManagerBackend *back)
 {
     this->back = back;
     white = QColor(255, 255, 255);
@@ -119,6 +118,8 @@
 
 void SimpleAddCode::submit()
 {
+    qDebug("starting submit()");
+
     //Validate all data fields, prompt with errors or create the new user as requested
     bool inputError = false;
     bool warnError = false;
@@ -126,6 +127,7 @@
     QString warnText = tr("The following non-critical errors occured whilst trying to add a new user, do you wish to continue?\n");
     
     //Username validation
+    qDebug("before username validation.........");
     QString username = usernameBox->text();
     int usernameError = back->validateUsername(username);
     
@@ -144,7 +146,9 @@
 	break;
     }
     
+
     //Full name validation
+    qDebug("before full name validation.........");
     QString fullname = fullnameBox->text();
     int fullnameError = back->validateFullname(fullname);
     switch (fullnameError)
@@ -160,15 +164,18 @@
     }
     
     //Password validation
+    qDebug("before password validation.........");
     QString password = passBox->text();
     QString confirmPassword = confirmPassBox->text();
     
     int passError = back->validatePassword(password, confirmPassword);
+    qDebug("after password validation.........");
     
     switch (passError)
     {
     case 0:
-	back->changePassword(username, password);
+        qDebug("Case 0 was found!!!........." + username + " pass: " + password);
+	//back->changePassword(username, password);
 	close();
 	break;
     case 1:
@@ -198,14 +205,16 @@
        int abortAdd = 0;
        if (warnError)
        {
-	   abortAdd = KMessageBox::warningYesNo(this, warnText, tr("Warning!"), tr("&Yes"), tr("&No"));
+	   abortAdd = QMessageBox::warning(this, tr("Warning!"), warnText, QMessageBox::Yes | QMessageBox::No, QMessageBox::No);
        }
        //Check we didn't abort the operation
        if (abortAdd == 0)
        {
+           qDebug("Before back->addUser");
 	   back->addUser(username, fullname, "/home/" + username, "/bin/sh", QString::null, password);
+	   back->changePassword(username, password);
+           qDebug("After back->addUser");
        }
    }
 }
 
-#include "simpleaddcode.moc"

Modified: pcbsd/trunk/pcbsdusermanager/simpleaddcode.h
===================================================================
--- pcbsd/trunk/pcbsdusermanager/simpleaddcode.h	2008-09-11 15:33:50 UTC (rev 2753)
+++ pcbsd/trunk/pcbsdusermanager/simpleaddcode.h	2008-09-11 16:46:13 UTC (rev 2754)
@@ -24,15 +24,19 @@
 #ifndef SIMPLEADDCODE_H
 #define SIMPLEADDCODE_H
 
-#include "simpleadddlg.h"
+#include "ui_simpleadddlg.h"
 #include "usermanagerback.h"
         
 #include <qcolor.h>
 
-class SimpleAddCode: public SimpleAddDlg {
+class SimpleAddCode: public QDialog, private Ui::SimpleAddDlg {
 Q_OBJECT
 public:
-    SimpleAddCode(UserManagerBackend *back, QWidget *parent = 0, const char *name = 0);
+    SimpleAddCode() : QDialog()
+    {
+       setupUi(this);
+    }
+    void programInit(UserManagerBackend *back);
     
 public slots:
     void usernameChanged();

Modified: pcbsd/trunk/pcbsdusermanager/simpleadddlg.ui
===================================================================
--- pcbsd/trunk/pcbsdusermanager/simpleadddlg.ui	2008-09-11 15:33:50 UTC (rev 2753)
+++ pcbsd/trunk/pcbsdusermanager/simpleadddlg.ui	2008-09-11 16:46:13 UTC (rev 2754)
@@ -1,243 +1,237 @@
-<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
-<class>SimpleAddDlg</class>
-<widget class="QDialog">
-    <property name="name">
-        <cstring>SimpleAddDlg</cstring>
-    </property>
-    <property name="geometry">
-        <rect>
-            <x>0</x>
-            <y>0</y>
-            <width>424</width>
-            <height>168</height>
-        </rect>
-    </property>
-    <property name="caption">
-        <string>Add User</string>
-    </property>
-    <property name="modal">
+<ui version="4.0" >
+ <class>SimpleAddDlg</class>
+ <widget class="QDialog" name="SimpleAddDlg" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>424</width>
+    <height>168</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Add User</string>
+  </property>
+  <property name="windowIcon" >
+   <iconset resource="pcbsdusermanager.qrc" >
+    <normaloff>:/add_user.png</normaloff>:/add_user.png</iconset>
+  </property>
+  <property name="modal" >
+   <bool>true</bool>
+  </property>
+  <layout class="QGridLayout" >
+   <item row="5" column="0" colspan="2" >
+    <layout class="QHBoxLayout" >
+     <item>
+      <spacer name="spacer13" >
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeType" >
+        <enum>QSizePolicy::Expanding</enum>
+       </property>
+       <property name="sizeHint" stdset="0" >
+        <size>
+         <width>171</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="okButton" >
+       <property name="text" >
+        <string>O&amp;k</string>
+       </property>
+       <property name="icon" >
+        <iconset>
+         <normaloff>image0</normaloff>image0</iconset>
+       </property>
+       <property name="shortcut" >
+        <string>Alt+K</string>
+       </property>
+       <property name="default" >
         <bool>true</bool>
-    </property>
-    <grid>
-        <property name="name">
-            <cstring>unnamed</cstring>
-        </property>
-        <widget class="QLayoutWidget" row="5" column="0" rowspan="1" colspan="2">
-            <property name="name">
-                <cstring>layout10</cstring>
-            </property>
-            <hbox>
-                <property name="name">
-                    <cstring>unnamed</cstring>
-                </property>
-                <spacer>
-                    <property name="name">
-                        <cstring>spacer13</cstring>
-                    </property>
-                    <property name="orientation">
-                        <enum>Horizontal</enum>
-                    </property>
-                    <property name="sizeType">
-                        <enum>Expanding</enum>
-                    </property>
-                    <property name="sizeHint">
-                        <size>
-                            <width>171</width>
-                            <height>20</height>
-                        </size>
-                    </property>
-                </spacer>
-                <widget class="QPushButton">
-                    <property name="name">
-                        <cstring>okButton</cstring>
-                    </property>
-                    <property name="text">
-                        <string>O&amp;k</string>
-                    </property>
-                    <property name="accel">
-                        <string>Alt+K</string>
-                    </property>
-                    <property name="default">
-                        <bool>true</bool>
-                    </property>
-                    <property name="iconSet">
-                        <iconset>image0</iconset>
-                    </property>
-                </widget>
-                <widget class="QPushButton">
-                    <property name="name">
-                        <cstring>cancelButton</cstring>
-                    </property>
-                    <property name="text">
-                        <string>Ca&amp;ncel</string>
-                    </property>
-                    <property name="accel">
-                        <string>Alt+N</string>
-                    </property>
-                    <property name="default">
-                        <bool>false</bool>
-                    </property>
-                    <property name="iconSet">
-                        <iconset>image1</iconset>
-                    </property>
-                </widget>
-            </hbox>
-        </widget>
-        <widget class="QLabel" row="3" column="0">
-            <property name="name">
-                <cstring>confirmPassLabel</cstring>
-            </property>
-            <property name="enabled">
-                <bool>true</bool>
-            </property>
-            <property name="sizePolicy">
-                <sizepolicy>
-                    <hsizetype>5</hsizetype>
-                    <vsizetype>0</vsizetype>
-                    <horstretch>0</horstretch>
-                    <verstretch>0</verstretch>
-                </sizepolicy>
-            </property>
-            <property name="text">
-                <string>Confirm Password:</string>
-            </property>
-            <property name="alignment">
-                <set>AlignVCenter|AlignRight</set>
-            </property>
-        </widget>
-        <widget class="QLabel" row="2" column="0">
-            <property name="name">
-                <cstring>passLabel</cstring>
-            </property>
-            <property name="enabled">
-                <bool>true</bool>
-            </property>
-            <property name="sizePolicy">
-                <sizepolicy>
-                    <hsizetype>5</hsizetype>
-                    <vsizetype>0</vsizetype>
-                    <horstretch>0</horstretch>
-                    <verstretch>0</verstretch>
-                </sizepolicy>
-            </property>
-            <property name="frameShape">
-                <enum>NoFrame</enum>
-            </property>
-            <property name="frameShadow">
-                <enum>Plain</enum>
-            </property>
-            <property name="text">
-                <string>Password:</string>
-            </property>
-            <property name="alignment">
-                <set>AlignVCenter|AlignRight</set>
-            </property>
-        </widget>
-        <widget class="QLineEdit" row="1" column="1">
-            <property name="name">
-                <cstring>fullnameBox</cstring>
-            </property>
-        </widget>
-        <widget class="QLabel" row="1" column="0">
-            <property name="name">
-                <cstring>fullnameLabel</cstring>
-            </property>
-            <property name="enabled">
-                <bool>true</bool>
-            </property>
-            <property name="frameShape">
-                <enum>NoFrame</enum>
-            </property>
-            <property name="frameShadow">
-                <enum>Plain</enum>
-            </property>
-            <property name="text">
-                <string>Full Name:</string>
-            </property>
-            <property name="alignment">
-                <set>AlignVCenter|AlignRight</set>
-            </property>
-        </widget>
-        <widget class="QLabel" row="0" column="0">
-            <property name="name">
-                <cstring>usernameLabel</cstring>
-            </property>
-            <property name="text">
-                <string>Username:</string>
-            </property>
-            <property name="alignment">
-                <set>AlignVCenter|AlignRight</set>
-            </property>
-        </widget>
-        <widget class="QLineEdit" row="0" column="1">
-            <property name="name">
-                <cstring>usernameBox</cstring>
-            </property>
-            <property name="maxLength">
-                <number>16</number>
-            </property>
-            <property name="toolTip" stdset="0">
-                <string>The field is empty</string>
-            </property>
-        </widget>
-        <widget class="QLineEdit" row="3" column="1">
-            <property name="name">
-                <cstring>confirmPassBox</cstring>
-            </property>
-            <property name="echoMode">
-                <enum>Password</enum>
-            </property>
-        </widget>
-        <widget class="QLineEdit" row="2" column="1">
-            <property name="name">
-                <cstring>passBox</cstring>
-            </property>
-            <property name="echoMode">
-                <enum>Password</enum>
-            </property>
-        </widget>
-        <spacer row="4" column="1">
-            <property name="name">
-                <cstring>spacer14</cstring>
-            </property>
-            <property name="orientation">
-                <enum>Vertical</enum>
-            </property>
-            <property name="sizeType">
-                <enum>Expanding</enum>
-            </property>
-            <property name="sizeHint">
-                <size>
-                    <width>30</width>
-                    <height>40</height>
-                </size>
-            </property>
-        </spacer>
-    </grid>
-</widget>
-<images>
-    <image name="image0">
-        <data format="PNG" length="627">89504e470d0a1a0a0000000d49484452000000100000001008060000001ff3ff610000023a49444154388dbdd24d4893011cc7f1efb367af32dd4a27be355b2d337b1332d144ba58748a8228bca40519294105b9b4a09232914204f590bd2164d0a13292428bf450190965d2c044d3dc16c39736739adbb3e7e9b4882eb50e7def9f3fffc30ffe734272c5929b96a34bef02eaa8757289f94a8fb75b79e2ea54e24bcd5701ed5fe39403b17577265a154f6042f1ce7b94666783a2d9255cfcf946fc7e9543d0cae2d4356a7fc76965860b67aa4e3a3262d630ea1f22284bbc7077231b95ad6a00d34eedf1c3c74aeb64f5775ae7dba4e976ea2338fd88ee5c45e5c1d356bd9df1b98f48b2c2834f6ddcebed25dcc7235157c4a1ed959b9bf2130b89d72560c913b78df9477c81415edbcad5d5258edd35e99a4cfcc14966251f4f27db79deff0adf6dea19a2464cde47632875da3a1b9c412586498c492231472822fb6bce8ee22de5293a1bbea09729c9c3c0dc33de7d788feb3a0dd2000e401611c8b46c940aa6b52edca1217c8a0b8d415159b34cabb582066f6884d1e05bdce141bcc333381ba4da857eaa0019405cfccccbf03c692b7375d9425c886f829fb0da8f5188452faa51a9640c3a350b13027d977c9767fba88e!
 600011080586e90a2ecab6acbc84f57a938a24ed32ec3159a41bec2c376630e30ad071d6d938d52357fe8a230700427e275d41495a955b605f9b6ab261d5ad609d2997f12f63349d7ad8e2792c9d00c27fda4bdc8672fdfd66f75ee58d7c43e9f09e57ecc5dae81607980b1dc6ce16d71e655399e116a08f06474ab2e45301c4fe0b8eaa1f7495df7eb70a4be70000000049454e44ae426082</data>
-    </image>
-    <image name="image1">
-        <data format="PNG" length="826">89504e470d0a1a0a0000000d49484452000000100000001008060000001ff3ff610000030149444154388d75935d485b0714c77fb9f7c69bbbdc25242e3a8a51a7f12338a6a50f4aab2dcd32df8acc8652d681d0c1dab03d14194cba0fb6b76d6c8c0e0663035fda52a453462dd52e8c69fb50192d16a6d6a55a66496a6b2434bdc96e3eeec71e5c3b61f3ff780ebf3fe77f0e07b65495e8eb1bbb16898c03323b280c2d6b478fdefc28181cde5e7ffee76874c24e246c3b91b0af1e38f013a0fc1ffc673c7ed79e9bb3ed73e7eccf42a11140105e869ea8cff73a9a06d92cfdf1f8c0746fefd8769330b44c0d0d5d69e8ef0fb1b6064e2731aff743e005518036dfd2d2b196274f909b9aa05824d4d9d9b62f9379e56c3a3dde0af5578f1c996e884643681a681a0fce9ce187f9f9d275f856cc832ec26b959595da9642013918846291e6f6f6b6839b9b7b4f7475bdddb47f7f3b9a06f93ca9d1512e2c2c70057e4cc1050780133a0661ec10740c7477a3462260dbe0706c65b06d300c1e5cbac47832c94598b80e6f018f45000b328bf0ab1b7aad74fac5c64201b9b6168a452895a058647d7292c9d555266062068e03390061dba2ef9c854329495a1654f55fb85c864a053910605e92a67f81634f610071fba90e5755ed!
 fbb8a7e70d6f28e4c6b2b646ff2782e2f5d2512e5bbfe572b329cb7af81f83932ed7d06875f57955923ce4f3003c4a262967b328b60de9343e41a88ea96a6c41d76f272b95d56706238a72eaeb9a9aef04af57c4e502bf9f47990cbfdfbac5e6c6069eba3a945dbb401070c9f27331b73b96d6f57bb74ba505715896dff92210f8068f073c1e686860b350e0ee8d1b7c659adfdf31cd7badebeb1dae5008251804c3401404e780aa0e2e69daa21430cd88ed74e25055686c249bcbb13233c3a795cae709380d28655dd7debf7cf9388383f89b9be1fe7dac42c151532e1f145fb2ac573b757d4f5538cc5f86c11f5353e67ba6f9c10c7c02d8406511a65386a1ec5e5edeabd4d7638a226bb3b35c2c95a65021fc25cce7babbed39b75bdf0d27767846471f8cdcf4788c8dae2efb345c03824f9badc37eff585810dedc017ea63d92147fd7e73b0fd401fc0d47f9344798e448190000000049454e44ae426082</data>
-    </image>
-</images>
-<connections>
-    <connection>
-        <sender>cancelButton</sender>
-        <signal>clicked()</signal>
-        <receiver>SimpleAddDlg</receiver>
-        <slot>close()</slot>
-    </connection>
-</connections>
-<tabstops>
-    <tabstop>usernameBox</tabstop>
-    <tabstop>fullnameBox</tabstop>
-    <tabstop>passBox</tabstop>
-    <tabstop>confirmPassBox</tabstop>
-    <tabstop>okButton</tabstop>
-    <tabstop>cancelButton</tabstop>
-</tabstops>
-<layoutdefaults spacing="6" margin="11"/>
-</UI>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="cancelButton" >
+       <property name="text" >
+        <string>Ca&amp;ncel</string>
+       </property>
+       <property name="icon" >
+        <iconset>
+         <normaloff>image1</normaloff>image1</iconset>
+       </property>
+       <property name="shortcut" >
+        <string>Alt+N</string>
+       </property>
+       <property name="default" >
+        <bool>false</bool>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item row="3" column="0" >
+    <widget class="QLabel" name="confirmPassLabel" >
+     <property name="enabled" >
+      <bool>true</bool>
+     </property>
+     <property name="sizePolicy" >
+      <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="text" >
+      <string>Confirm Password:</string>
+     </property>
+     <property name="alignment" >
+      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+     </property>
+     <property name="wordWrap" >
+      <bool>false</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="0" >
+    <widget class="QLabel" name="passLabel" >
+     <property name="enabled" >
+      <bool>true</bool>
+     </property>
+     <property name="sizePolicy" >
+      <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="frameShape" >
+      <enum>QFrame::NoFrame</enum>
+     </property>
+     <property name="frameShadow" >
+      <enum>QFrame::Plain</enum>
+     </property>
+     <property name="text" >
+      <string>Password:</string>
+     </property>
+     <property name="alignment" >
+      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+     </property>
+     <property name="wordWrap" >
+      <bool>false</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="1" >
+    <widget class="QLineEdit" name="fullnameBox" />
+   </item>
+   <item row="1" column="0" >
+    <widget class="QLabel" name="fullnameLabel" >
+     <property name="enabled" >
+      <bool>true</bool>
+     </property>
+     <property name="frameShape" >
+      <enum>QFrame::NoFrame</enum>
+     </property>
+     <property name="frameShadow" >
+      <enum>QFrame::Plain</enum>
+     </property>
+     <property name="text" >
+      <string>Full Name:</string>
+     </property>
+     <property name="alignment" >
+      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+     </property>
+     <property name="wordWrap" >
+      <bool>false</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="0" >
+    <widget class="QLabel" name="usernameLabel" >
+     <property name="text" >
+      <string>Username:</string>
+     </property>
+     <property name="alignment" >
+      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+     </property>
+     <property name="wordWrap" >
+      <bool>false</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="1" >
+    <widget class="QLineEdit" name="usernameBox" >
+     <property name="toolTip" >
+      <string>The field is empty</string>
+     </property>
+     <property name="maxLength" >
+      <number>16</number>
+     </property>
+    </widget>
+   </item>
+   <item row="3" column="1" >
+    <widget class="QLineEdit" name="confirmPassBox" >
+     <property name="echoMode" >
+      <enum>QLineEdit::Password</enum>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="1" >
+    <widget class="QLineEdit" name="passBox" >
+     <property name="echoMode" >
+      <enum>QLineEdit::Password</enum>
+     </property>
+    </widget>
+   </item>
+   <item row="4" column="1" >
+    <spacer name="spacer14" >
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeType" >
+      <enum>QSizePolicy::Expanding</enum>
+     </property>
+     <property name="sizeHint" stdset="0" >
+      <size>
+       <width>30</width>
+       <height>40</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11" />
+ <tabstops>
+  <tabstop>usernameBox</tabstop>
+  <tabstop>fullnameBox</tabstop>
+  <tabstop>passBox</tabstop>
+  <tabstop>confirmPassBox</tabstop>
+  <tabstop>okButton</tabstop>
+  <tabstop>cancelButton</tabstop>
+ </tabstops>
+ <resources>
+  <include location="pcbsdusermanager.qrc" />
+ </resources>
+ <connections>
+  <connection>
+   <sender>cancelButton</sender>
+   <signal>clicked()</signal>
+   <receiver>SimpleAddDlg</receiver>
+   <slot>close()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>

Modified: pcbsd/trunk/pcbsdusermanager/simpledlgcode.cpp
===================================================================
--- pcbsd/trunk/pcbsdusermanager/simpledlgcode.cpp	2008-09-11 15:33:50 UTC (rev 2753)
+++ pcbsd/trunk/pcbsdusermanager/simpledlgcode.cpp	2008-09-11 16:46:13 UTC (rev 2754)
@@ -24,7 +24,6 @@
 #include "simpledlgcode.h"
 #include "user.h"
         
-#include <klistbox.h>
 #include <klocale.h>
         
 #include <qstringlist.h>
@@ -32,9 +31,9 @@
 #include <qcheckbox.h>
 #include <qlineedit.h>
 #include <qtooltip.h>
+#include <qcolor.h>
 
-SimpleDlgCode::SimpleDlgCode(UserManagerBackend *back, QWidget *parent, const char *name)
-    :SimpleDlg(parent, name)
+void SimpleDlgCode::programInit(UserManagerBackend *back)
 {
     this->back = back;
     userImage = QPixmap("/usr/local/share/icons/crystalsvg/48x48/kdm/user_male.png");
@@ -55,6 +54,7 @@
 
 void SimpleDlgCode::refreshUsers()
 {
+    qDebug("Adding user to userlist:" );
     wheel = back->getGroup(0);
     QStringList users = back->getAllUsers();
     users.sort();
@@ -96,7 +96,7 @@
     
     int fullnameError = back->validateFullname(fullnameBox->text());
     
-    QColor fullnameBoxColour = white;
+    QColor fullnameBoxColour("white");
     QToolTip::add(fullnameBox, tr("Good Input"));
     
     switch(fullnameError)
@@ -105,7 +105,7 @@
 	QToolTip::add(fullnameBox, tr("The field is empty"));
 	break;
     case 2:
-	fullnameBoxColour = red;
+	fullnameBoxColour.setRed(fullnameBoxColour.red());
 	QToolTip::add(fullnameBox, tr("This field may not contain ! @ or :"));
 	break;
     }
@@ -134,13 +134,15 @@
 
 void SimpleDlgCode::changePassword()
 {
-    changePassUi = new ChangePassCode(QStringList::split(" ", userList->currentText())[0], back);
+    changePassUi = new ChangePassCode();
+    changePassUi->programInit(QStringList::split(" ", userList->currentText())[0], back);
     changePassUi->show();
 }
 
 void SimpleDlgCode::changeRootPassword()
 {
-    changePassUi = new ChangePassCode("root", back);
+    changePassUi = new ChangePassCode();
+    changePassUi->programInit("root", back);
     changePassUi->show();
 }
 
@@ -151,8 +153,8 @@
 
 void SimpleDlgCode::addUser()
 {
-    addUserUi = new SimpleAddCode(back);
+    addUserUi = new SimpleAddCode();
+    addUserUi->programInit(back);
     addUserUi->show();
 }
 
-#include "simpledlgcode.moc"

Modified: pcbsd/trunk/pcbsdusermanager/simpledlgcode.h
===================================================================
--- pcbsd/trunk/pcbsdusermanager/simpledlgcode.h	2008-09-11 15:33:50 UTC (rev 2753)
+++ pcbsd/trunk/pcbsdusermanager/simpledlgcode.h	2008-09-11 16:46:13 UTC (rev 2754)
@@ -24,18 +24,23 @@
 #ifndef SIMPLEDLGCODE_H
 #define SIMPLEDLGCODE_H
 
-#include "SimpleDlg.h"
+#include "ui_SimpleDlg.h"
 #include "usermanagerback.h"
 #include "group.h"
 #include "changepasscode.h"
 #include "simpleaddcode.h"
+#include <qcolor.h>
         
 #include <qpixmap.h>
 
-class SimpleDlgCode: public SimpleDlg {
+class SimpleDlgCode: public QDialog, private Ui::SimpleDlg {
 Q_OBJECT
 public:
-    SimpleDlgCode(UserManagerBackend *back, QWidget *parent = 0, const char *name = 0);
+    SimpleDlgCode() : QDialog()
+    {
+        setupUi(this);
+    }
+    void programInit(UserManagerBackend *back);
     
 private:
     UserManagerBackend *back;

Modified: pcbsd/trunk/pcbsdusermanager/user.cpp
===================================================================
--- pcbsd/trunk/pcbsdusermanager/user.cpp	2008-09-11 15:33:50 UTC (rev 2753)
+++ pcbsd/trunk/pcbsdusermanager/user.cpp	2008-09-11 16:46:13 UTC (rev 2754)
@@ -1,156 +1,157 @@
-/***************************************************************************
- *   Copyright (C) 2005 - 2007 by Tim McCormick   *
- *   tim at pcbsd.org   *
- *                                                                         *
- *   Permission is hereby granted, free of charge, to any person obtaining *
- *   a copy of this software and associated documentation files (the       *
- *   "Software"), to deal in the Software without restriction, including   *
- *   without limitation the rights to use, copy, modify, merge, publish,   *
- *   distribute, sublicense, and/or sell copies of the Software, and to    *
- *   permit persons to whom the Software is furnished to do so, subject to *
- *   the following conditions:                                             *
- *                                                                         *
- *   The above copyright notice and this permission notice shall be        *
- *   included in all copies or substantial portions of the Software.       *
- *                                                                         *
- *   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,       *
- *   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF    *
- *   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- *   IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR     *
- *   OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, *
- *   ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR *
- *   OTHER DEALINGS IN THE SOFTWARE.                                       *
- ***************************************************************************/
-
-#include <unistd.h>
-        
-#include "user.h"
-
-User::User() {
-    username = "Not set";
-    uid = -1;
-    gid = -1;
-    home = "Not set";
-    shell = "Not set";
-    fullname = "Not set";
-    status = 0;
-    password = "";
-}
-
-User::User(QString username, int uid, int gid, QString home, QString shell, QString fullname) {
-    this->username = username;
-    this->uid = uid;
-    this->gid = gid;
-    this->home = home;
-    this->shell = shell;
-    this->fullname = fullname;
-    status = 0;
-    this->password = "";
-}
-
-User::User(QString username, QString home, QString shell, QString fullname, QString password, int gid, bool isNew, int uid)
-{
-    this->username = username;
-    this->home = home;
-    this->shell = shell;
-    this->fullname = fullname;
-    status = 0;
-    if (isNew) { status = 2; }
-    this->uid = uid;
-    this->gid = gid;
-    
-    setPassword(password);
-}
-
-User::~User() {
-    
-}
-
-QString User::getUsername() {
-    return username;
-}
-
-int User::getUid() {
-    return uid;
-}
-
-int User::getGid() {
-    return gid;
-}
-
-QString User::getHome() {
-    return home;
-}
-
-QString User::getShell() {
-    return shell;
-}
-
-QString User::getFullname() {
-    return fullname;
-}
-
-bool User::getChanges() {
-    return status == 1;
-}
-
-void User::setChanges() {
-    if (status == 0) { status = 1; }
-}
-
-void User::setGid(int gid) {
-    this->gid = gid;
-}
-
-void User::setHome(QString home) {
-    this->home = home;
-}
-
-void User::setShell(QString shell) {
-    this->shell = shell;
-}
-
-void User::setFullname(QString fullname) {
-    this->fullname = fullname;
-}
-
-bool User::getNew()
-{
-    return status == 2;
-}
-
-void User::setNew()
-{
-    status = 2;
-}
-
-void User::setPassword(QString password)
-{
-    this->password = crypt(password, "KG");
-    setChanges();
-}
-
-QString User::getPassword()
-{
-    return password;
-}
-
-bool User::getDeleted()
-{
-    return status == 3;
-}
-
-void User::setDeleted()
-{
-    status = 3;
-}
-
-uint User::getStatus()
-{
-    return status;
-}
-
-void User::setStatus(uint status)
-{
-    this->status = status;
-}
+/***************************************************************************
+ *   Copyright (C) 2005 - 2007 by Tim McCormick   *
+ *   tim at pcbsd.org   *
+ *                                                                         *
+ *   Permission is hereby granted, free of charge, to any person obtaining *
+ *   a copy of this software and associated documentation files (the       *
+ *   "Software"), to deal in the Software without restriction, including   *
+ *   without limitation the rights to use, copy, modify, merge, publish,   *
+ *   distribute, sublicense, and/or sell copies of the Software, and to    *
+ *   permit persons to whom the Software is furnished to do so, subject to *
+ *   the following conditions:                                             *
+ *                                                                         *
+ *   The above copyright notice and this permission notice shall be        *
+ *   included in all copies or substantial portions of the Software.       *
+ *                                                                         *
+ *   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,       *
+ *   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF    *
+ *   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * 
+ *   IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR     *
+ *   OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, *
+ *   ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR *
+ *   OTHER DEALINGS IN THE SOFTWARE.                                       *
+ ***************************************************************************/
+
+#include <unistd.h>
+        
+#include "user.h"
+
+User::User() {
+    username = "Not set";
+    uid = -1;
+    gid = -1;
+    home = "Not set";
+    shell = "Not set";
+    fullname = "Not set";
+    status = 0;
+    password = "";
+}
+
+User::User(QString username, int uid, int gid, QString home, QString shell, QString fullname) {
+    this->username = username;
+    this->uid = uid;
+    this->gid = gid;
+    this->home = home;
+    this->shell = shell;
+    this->fullname = fullname;
+    status = 0;
+    this->password = "";
+}
+
+User::User(QString username, QString home, QString shell, QString fullname, QString password, int gid, bool isNew, int uid)
+{
+    this->username = username;
+    this->home = home;
+    this->shell = shell;
+    this->fullname = fullname;
+    status = 0;
+    if (isNew) { status = 2; }
+    this->uid = uid;
+    this->gid = gid;
+    
+    setPassword(password);
+}
+
+User::~User() {
+    
+}
+
+QString User::getUsername() {
+    return username;
+}
+
+int User::getUid() {
+    return uid;
+}
+
+int User::getGid() {
+    return gid;
+}
+
+QString User::getHome() {
+    return home;
+}
+
+QString User::getShell() {
+    return shell;
+}
+
+QString User::getFullname() {
+    return fullname;
+}
+
+bool User::getChanges() {
+    return status == 1;
+}
+
+void User::setChanges() {
+    if (status == 0) { status = 1; }
+}
+
+void User::setGid(int gid) {
+    this->gid = gid;
+}
+
+void User::setHome(QString home) {
+    this->home = home;
+}
+
+void User::setShell(QString shell) {
+    this->shell = shell;
+}
+
+void User::setFullname(QString fullname) {
+    this->fullname = fullname;
+}
+
+bool User::getNew()
+{
+    return status == 2;
+}
+
+void User::setNew()
+{
+    status = 2;
+}
+
+void User::setPassword(QString password)
+{
+    this->password = crypt(password, "KG");
+    qDebug("Done with crypt now........");
+    setChanges();
+}
+
+QString User::getPassword()
+{
+    return password;
+}
+
+bool User::getDeleted()
+{
+    return status == 3;
+}
+
+void User::setDeleted()
+{
+    status = 3;
+}
+
+uint User::getStatus()
+{
+    return status;
+}
+
+void User::setStatus(uint status)
+{
+    this->status = status;
+}

Modified: pcbsd/trunk/pcbsdusermanager/usermanagerback.cpp
===================================================================
--- pcbsd/trunk/pcbsdusermanager/usermanagerback.cpp	2008-09-11 15:33:50 UTC (rev 2753)
+++ pcbsd/trunk/pcbsdusermanager/usermanagerback.cpp	2008-09-11 16:46:13 UTC (rev 2754)
@@ -1,443 +1,451 @@
-/***************************************************************************
- *   Copyright (C) 2005 - 2007 by Tim McCormick   *
- *   tim at pcbsd.org   *
- *                                                                         *
- *   Permission is hereby granted, free of charge, to any person obtaining *
- *   a copy of this software and associated documentation files (the       *
- *   "Software"), to deal in the Software without restriction, including   *
- *   without limitation the rights to use, copy, modify, merge, publish,   *
- *   distribute, sublicense, and/or sell copies of the Software, and to    *
- *   permit persons to whom the Software is furnished to do so, subject to *
- *   the following conditions:                                             *
- *                                                                         *
- *   The above copyright notice and this permission notice shall be        *
- *   included in all copies or substantial portions of the Software.       *
- *                                                                         *
- *   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,       *
- *   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF    *
- *   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- *   IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR     *
- *   OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, *
- *   ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR *
- *   OTHER DEALINGS IN THE SOFTWARE.                                       *
- ***************************************************************************/
-
-#include "usermanagerback.h"
-
-UserManagerBackend::UserManagerBackend() {
-    fullnameRegExp.setPattern("([:!@])+");
-    homeLocRegExp.setPattern("^(/usr)?/home/?");
-    usernameRegExp.setPattern("([a-z]*[A-Z]*[0-9]*[_]*)+");
-    passwordRegExp.setPattern("([a-z]*[A-Z]*[0-9]*[!\"£$%^&*()_+=¬#'`@~:?<>|{}\\-.]*)+");
-    groupnameRegExp.setPattern("([a-z]*[A-Z]*[0-9]*[_]*)+");
-}
-
-QStringList UserManagerBackend::getAllUsers(int minId, int maxId) {
-    if (userList.empty()) { refreshUsers(); }
-    
-    QStringList result;
-    QMap<QString, User>::Iterator it;
-    
-    qDebug("Generating new user list for UI...");
-    for ( it = userList.begin(); it != userList.end(); ++it ) {
-	if ((! it.data().getDeleted()) && (((it.data().getUid() >= minId) || (minId == -1)) && (it.data().getUid() <= maxId) || (maxId == -1) || (it.data().getUid() < 0))) {
-	    result.append(it.data().getUsername());
-	}
-    }
-    
-    return result;
-}
-
-void UserManagerBackend::refreshUsers() {
-    qDebug("Refreshing user list...");
-    userList.clear();
-    QFile userFile("/etc/passwd");
-    if ( userFile.open(IO_ReadOnly) ) {
-	QTextStream stream(&userFile);
-	QString line;
-	
-	while ( !stream.atEnd() ) {
-	    line = stream.readLine();
-	    
-	    if ((line.find("#") != 0) && (! line.isEmpty())) { //Make sure it isn't a comment or blank
-		QString username = line.section(":",0,0);
-		int uid = line.section(":",2,2).toInt();
-		int gid = line.section(":",3,3).toInt();
-		QString home = line.section(":",5,5);
-		QString shell = line.section(":",6,6);
-		QString fullname = line.section(":",4,4);
-		
-		userList[username] = User(username, uid, gid, home, shell, fullname);
-	    }
-	}
-    }
-    else {
-	//Unable to open file error
-	qWarning("Error! Unable to open /etc/passwd");
-    }
-}
-
-User* UserManagerBackend::getUser(const QString &user) {
-    return &userList.find(user).data();
-}
-
-QStringList UserManagerBackend::getShells() {
-    QStringList result;
-    QFile shellFile("/etc/shells");
-    if ( shellFile.open(IO_ReadOnly) ) {
-	QTextStream stream(&shellFile);
-	QString line;
-	
-	while ( !stream.atEnd() ) {
-	    line = stream.readLine();
-	    
-	    if ((line.find("#") != 0) && (! line.isEmpty())) { //Make sure it isn't a comment or blank
-		result.append(line);
-	    }
-	}
-    }
-    else {
-	//Unable to open file error
-	qWarning("Error! Unable to open /etc/shells");
-    }
-    
-    return result;
-}
-
-QStringList UserManagerBackend::getAllGroups(int minId, int maxId) {
-    if (groupList.empty()) { refreshGroups(); }
-    
-    QStringList result;
-    QMap<int, Group>::Iterator it;
-    
-    qDebug("Generating new group list for UI...");
-    for ( it = groupList.begin(); it != groupList.end(); ++it ) {
-	if ((! it.data().getDeleted()) && (((it.data().getGid() >= minId) || (minId == -1) ) && ((it.data().getGid() <= maxId) || (maxId == -1 )))) {
-	    result.append(it.data().getGroupname());
-	}
-    }
-    
-    return result;
-}
-
-void UserManagerBackend::refreshGroups() {
-    qDebug("Refreshing group list...");
-    groupList.clear();
-    QFile groupFile("/etc/group");
-    if ( groupFile.open(IO_ReadOnly) ) {
-	QTextStream stream(&groupFile);
-	QString line;
-	
-	while ( !stream.atEnd() ) {
-	    line = stream.readLine();
-	    
-	    if ((line.find("#") != 0) && (! line.isEmpty())) { //Make sure it isn't a comment or blank
-		QString groupname = line.section(":",0,0);
-		int gid = line.section(":",2,2).toInt();
-		QString memberString = line.section(":",3,3);
-		QStringList members = QStringList::split(",", memberString);
-		
-		groupList[gid] = Group(groupname, gid, members);
-	    }
-	}
-    }
-    else {
-	//Unable to open file error
-	qWarning("Error! Unable to open /etc/group");
-    }
-}
-
-Group* UserManagerBackend::getGroup(int gid) {
-    return &groupList.find(gid).data();
-}
-
-Group* UserManagerBackend::getGroup(QString groupname) {
-    Group *result = new Group();
-    QMap<int, Group>::Iterator it;
-    
-    for ( it = groupList.begin(); it != groupList.end(); ++it ) {
-	if (it.data().getGroupname() == groupname) {
-	    result = &it.data();
-	}
-    }
-    
-    return result;
-}
-
-int UserManagerBackend::validatePassword(QString password, QString confirmPassword) {
-    int result = 0;
-    if (password != confirmPassword) {
-	result = 2;
-    }
-    if ((password == "") || (confirmPassword == "")) {
-	result = 1;
-    }
-    if ((! passwordRegExp.exactMatch(password)) && (password != "")) {
-	result = 3;
-    }
-    return result;
-}
-
-void UserManagerBackend::changePassword(QString username, QString password)
-{
-    userList[username].setPassword(password);
-    emit usersChanged();
-}
-
-int UserManagerBackend::validateFullname(QString fullname) {
-    int result = 0;
-    
-    if ((fullname.contains(fullnameRegExp) != 0) && (fullname != "")) {
-	result = 2;
-    }
-    if (fullname == "") {
-	result = 1;
-    }
-    
-    return result;
-}
-
-int UserManagerBackend::validateHome(QString home) {
-    int result = 0;
-    QFileInfo homeDir(home);
-    QUrlOperator *homePath = new QUrlOperator(home);
-    if (home == "") {
-	result = 1;
-    }
-    if ((! homePath->isDir()) && (home != "")) {
-	result = 3;
-    }
-    if ((homeLocRegExp.search(home) == -1) && (home != "")) {
-	result = 4;
-    }    
-    if ((homeDir.isFile()) && (home != "")) {
-	result = 5;
-    }
-    if ((! homePath->isValid()) && (home != "")) {
-	result = 2;
-    }
-    
-    return result;
-}
-
-void UserManagerBackend::deleteUser(QString username)
-{
-    userList[username].setDeleted();
-    emit usersChanged();
-}
-
-int UserManagerBackend::validateUsername(QString username) {
-    //0 = OK, 1 = Empty, 2 = Invalid input, 3 = Username already in use
-    int result = 0;
-    
-    if ((userList.contains(username) == true) && (username != "")) {
-	result = 3;
-    }
-    if ((! usernameRegExp.exactMatch(username)) && (username != "")) {
-	result = 2;
-    }
-    if (username == "") {
-	result = 1;
-    }
-    
-    return result;
-}
-
-void UserManagerBackend::addUser(QString username, QString fullname, QString home, QString shell, QString group, QString password)
-{
-    int gid = -1;
-    QMap<int, Group>::Iterator it;
-    
-    for ( it = groupList.begin(); it != groupList.end(); ++it )
-    {
-	if (it.data().getGroupname() == group)
-        {
-            gid = it.data().getGid();
-            break;
-        }
-    }
-    userList[username] = User(username, home, shell, fullname, password, gid);
-    
-    emit usersChanged();
-}
-
-void UserManagerBackend::deleteGroup(QString groupname)
-{
-    getGroup(groupname)->setDeleted();
-    emit groupsChanged();
-}
-
-void UserManagerBackend::addGroup(QString groupname)
-{
-    //Find free, invalid id
-    int gid = -1;
-    while (groupList[gid].getStatus() != -1) { gid--; }
-    groupList[gid] = Group(groupname, -1, QStringList(), true);
-    emit groupsChanged();
-}
-
-int UserManagerBackend::validateGroupname(QString groupname) {
-    //0 = OK, 1 = Empty, 2 = Invalid input, 3 = Groupname already in use
-    int result = 0;
-    QMap<int, Group>::Iterator it;
-    
-    for ( it = groupList.begin(); it != groupList.end(); ++it ) {
-	if (it.data().getGroupname() == groupname) {
-	    result = 3;
-	}
-    }
-    if ((! groupnameRegExp.exactMatch(groupname)) && (groupname != "")) {
-	result = 2;
-    }
-    if (groupname == "") {
-	result = 1;
-    }
-    
-    return result;
-}
-
-void UserManagerBackend::addUserToGroup(QString user, QString groupname)
-{
-    Group *group = getGroup(groupname);
-    group->addMember(user);
-    group->setChanges();
-    emit groupsChanged();
-}
-
-void UserManagerBackend::removeUserFromGroup(QString user, QString groupname)
-{
-    Group *group = getGroup(groupname);
-    group->removeMember(user);
-    group->setChanges();
-    emit groupsChanged();
-}
-
-bool UserManagerBackend::commit()
-{
-    
-    //Process users
-    QMap<QString, User>::Iterator userIt;
-    
-    for ( userIt = userList.begin(); userIt != userList.end(); ++userIt )
-    {
-        pw = new QProcess(0);
-        switch(userIt.data().getStatus())
-        {
-            case 1:
-                //Modify User
-                qDebug("Modifying user '%s'", userIt.data().getUsername().ascii());
-                pw->addArgument("pw");
-                pw->addArgument("usermod");
-                pw->addArgument(userIt.data().getUsername());
-                pw->addArgument("-d");
-                pw->addArgument(userIt.data().getHome());
-                pw->addArgument("-s");
-                pw->addArgument(userIt.data().getShell());
-                pw->addArgument("-c");
-                pw->addArgument(userIt.data().getFullname());
-                pw->start();
-                while(pw->isRunning());
-                
-                if (userIt.data().getPassword() != "")
-                {
-                    pw = new QProcess(0);
-                    pw->addArgument("chpass");
-                    pw->addArgument("-p");
-                    pw->addArgument(userIt.data().getPassword());
-                    pw->addArgument(userIt.data().getUsername());
-                    pw->start();
-                    while(pw->isRunning());
-                }
-                break;
-            case 2:
-                //Add User
-                qDebug("Adding user '%s'", userIt.data().getUsername().ascii());
-                pw->addArgument("pw");
-                pw->addArgument("useradd");
-                pw->addArgument(userIt.data().getUsername());
-                pw->addArgument("-c");
-                pw->addArgument(userIt.data().getFullname());
-                pw->addArgument("-d");
-                pw->addArgument(userIt.data().getHome());
-                pw->addArgument("-s");
-                pw->addArgument(userIt.data().getShell());
-                if (userIt.data().getGid() != -1)
-                {
-                    pw->addArgument("-g");
-                    pw->addArgument(QString::number(userIt.data().getGid()));
-                }
-                if (validateHome(userIt.data().getHome()) == 3) { pw->addArgument("-m"); }
-                pw->start();
-                while(pw->isRunning());
-                
-                pw = new QProcess(0);
-                pw->addArgument("chpass");
-                pw->addArgument("-p");
-                pw->addArgument(userIt.data().getPassword());
-                pw->addArgument(userIt.data().getUsername());
-                pw->start();
-                while(pw->isRunning());
-                break;
-            case 3:
-                //Delete User
-                qDebug("Deleting user '%s'", userIt.data().getUsername().ascii());
-                pw->addArgument("pw");
-                pw->addArgument("userdel");
-                pw->addArgument(userIt.data().getUsername());
-                pw->addArgument("-r");
-                pw->start();
-                while(pw->isRunning());
-                break;
-        }
-    }
-    refreshUsers();
-    
-    //Process groups
-    QMap<int, Group>::Iterator groupIt;
-    
-    for ( groupIt = groupList.begin(); groupIt != groupList.end(); ++groupIt )
-    {
-        pw = new QProcess(0);
-        switch(groupIt.data().getStatus())
-        {
-            case 1:
-                //Modify Group
-                qDebug("Modifying group '%s'", groupIt.data().getGroupname().ascii());
-                pw->addArgument("pw");
-                pw->addArgument("groupmod");
-                pw->addArgument(groupIt.data().getGroupname());
-                pw->addArgument("-M");
-                pw->addArgument(groupIt.data().getMembers().join(","));
-                pw->start();
-                while(pw->isRunning());
-                break;
-            case 2:
-                //Add Group
-                qDebug("Adding group '%s'", groupIt.data().getGroupname().ascii());
-                pw->addArgument("pw");
-                pw->addArgument("groupadd");
-                pw->addArgument(groupIt.data().getGroupname());
-                pw->addArgument("-M");
-                pw->addArgument(groupIt.data().getMembers().join(","));
-                pw->start();
-                while(pw->isRunning());
-                break;
-            case 3:
-                //Delete Group
-                qDebug("Deleting group '%s'", groupIt.data().getGroupname().ascii());
-                pw->addArgument("pw");
-                pw->addArgument("groupdel");
-                pw->addArgument(groupIt.data().getGroupname());
-                pw->start();
-                while(pw->isRunning());
-                break;
-	}
-    }
-    refreshGroups();
-    emit groupsChanged();
-    emit usersChanged();
-    
-    return true;
-}
-
-#include "usermanagerback.moc"
+/***************************************************************************
+ *   Copyright (C) 2005 - 2007 by Tim McCormick   *
+ *   tim at pcbsd.org   *
+ *                                                                         *
+ *   Permission is hereby granted, free of charge, to any person obtaining *
+ *   a copy of this software and associated documentation files (the       *
+ *   "Software"), to deal in the Software without restriction, including   *
+ *   without limitation the rights to use, copy, modify, merge, publish,   *
+ *   distribute, sublicense, and/or sell copies of the Software, and to    *
+ *   permit persons to whom the Software is furnished to do so, subject to *
+ *   the following conditions:                                             *
+ *                                                                         *
+ *   The above copyright notice and this permission notice shall be        *
+ *   included in all copies or substantial portions of the Software.       *
+ *                                                                         *
+ *   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,       *
+ *   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF    *
+ *   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
+ *   IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR     *
+ *   OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, *
+ *   ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR *
+ *   OTHER DEALINGS IN THE SOFTWARE.                                       *
+ ***************************************************************************/
+
+#include "usermanagerback.h"
+#include <qtextstream.h>
+#include <Q3UrlOperator>
+
+UserManagerBackend::UserManagerBackend() {
+   programInit();
+}
+
+void UserManagerBackend::programInit() {
+    fullnameRegExp.setPattern("([:!@])+");
+    homeLocRegExp.setPattern("^(/usr)?/home/?");
+    usernameRegExp.setPattern("([a-z]*[A-Z]*[0-9]*[_]*)+");
+    passwordRegExp.setPattern("([a-z]*[A-Z]*[0-9]*[!\"£$%^&*()_+=¬#'`@~:?<>|{}\\-.]*)+");
+    groupnameRegExp.setPattern("([a-z]*[A-Z]*[0-9]*[_]*)+");
+}
+
+QStringList UserManagerBackend::getAllUsers(int minId, int maxId) {
+    if (userList.empty()) { refreshUsers(); }
+    
+    QStringList result;
+    QMap<QString, User>::Iterator it;
+    
+    qDebug("Generating new user list for UI...");
+    for ( it = userList.begin(); it != userList.end(); ++it ) {
+	if ((! it.data().getDeleted()) && (((it.data().getUid() >= minId) || (minId == -1)) && (it.data().getUid() <= maxId) || (maxId == -1) || (it.data().getUid() < 0))) {
+	    result.append(it.data().getUsername());
+	}
+    }
+    
+    return result;
+}
+
+void UserManagerBackend::refreshUsers() {
+    qDebug("Refreshing user list...");
+    userList.clear();
+    QFile userFile("/etc/passwd");
+    if ( userFile.open(IO_ReadOnly) ) {
+	QTextStream stream(&userFile);
+	QString line;
+	
+	while ( !stream.atEnd() ) {
+	    line = stream.readLine();
+	    
+	    if ((line.find("#") != 0) && (! line.isEmpty())) { //Make sure it isn't a comment or blank
+		QString username = line.section(":",0,0);
+		int uid = line.section(":",2,2).toInt();
+		int gid = line.section(":",3,3).toInt();
+		QString home = line.section(":",5,5);
+		QString shell = line.section(":",6,6);
+		QString fullname = line.section(":",4,4);
+		
+		userList[username] = User(username, uid, gid, home, shell, fullname);
+	    }
+	}
+    }
+    else {
+	//Unable to open file error
+	qWarning("Error! Unable to open /etc/passwd");
+    }
+}
+
+User* UserManagerBackend::getUser(const QString &user) {
+    return &userList.find(user).data();
+}
+
+QStringList UserManagerBackend::getShells() {
+    QStringList result;
+    QFile shellFile("/etc/shells");
+    if ( shellFile.open(IO_ReadOnly) ) {
+	QTextStream stream(&shellFile);
+	QString line;
+	
+	while ( !stream.atEnd() ) {
+	    line = stream.readLine();
+	    
+	    if ((line.find("#") != 0) && (! line.isEmpty())) { //Make sure it isn't a comment or blank
+		result.append(line);
+	    }
+	}
+    }
+    else {
+	//Unable to open file error
+	qWarning("Error! Unable to open /etc/shells");
+    }
+    
+    return result;
+}
+
+QStringList UserManagerBackend::getAllGroups(int minId, int maxId) {
+    if (groupList.empty()) { refreshGroups(); }
+    
+    QStringList result;
+    QMap<int, Group>::Iterator it;
+    
+    qDebug("Generating new group list for UI...");
+    for ( it = groupList.begin(); it != groupList.end(); ++it ) {
+	if ((! it.data().getDeleted()) && (((it.data().getGid() >= minId) || (minId == -1) ) && ((it.data().getGid() <= maxId) || (maxId == -1 )))) {
+	    result.append(it.data().getGroupname());
+	}
+    }
+    
+    return result;
+}
+
+void UserManagerBackend::refreshGroups() {
+    qDebug("Refreshing group list...");
+    groupList.clear();
+    QFile groupFile("/etc/group");
+    if ( groupFile.open(IO_ReadOnly) ) {
+	QTextStream stream(&groupFile);
+	QString line;
+	
+	while ( !stream.atEnd() ) {
+	    line = stream.readLine();
+	    
+	    if ((line.find("#") != 0) && (! line.isEmpty())) { //Make sure it isn't a comment or blank
+		QString groupname = line.section(":",0,0);
+		int gid = line.section(":",2,2).toInt();
+		QString memberString = line.section(":",3,3);
+		QStringList members = QStringList::split(",", memberString);
+		
+		groupList[gid] = Group(groupname, gid, members);
+	    }
+	}
+    }
+    else {
+	//Unable to open file error
+	qWarning("Error! Unable to open /etc/group");
+    }
+}
+
+Group* UserManagerBackend::getGroup(int gid) {
+    return &groupList.find(gid).data();
+}
+
+Group* UserManagerBackend::getGroup(QString groupname) {
+    Group *result = new Group();
+    QMap<int, Group>::Iterator it;
+    
+    for ( it = groupList.begin(); it != groupList.end(); ++it ) {
+	if (it.data().getGroupname() == groupname) {
+	    result = &it.data();
+	}
+    }
+    
+    return result;
+}
+
+int UserManagerBackend::validatePassword(QString password, QString confirmPassword) {
+    int result = 0;
+    if (password != confirmPassword) {
+	result = 2;
+    }
+    if ((password == "") || (confirmPassword == "")) {
+	result = 1;
+    }
+    if ((! passwordRegExp.exactMatch(password)) && (password != "")) {
+	result = 3;
+    }
+    return result;
+}
+
+void UserManagerBackend::changePassword(QString username, QString password)
+{
+    qDebug("running changePassword() ");
+    userList[username].setPassword(password);
+    emit usersChanged();
+}
+
+int UserManagerBackend::validateFullname(QString fullname) {
+    int result = 0;
+    
+    if ((fullname.contains(fullnameRegExp) != 0) && (fullname != "")) {
+	result = 2;
+    }
+    if (fullname == "") {
+	result = 1;
+    }
+    
+    return result;
+}
+
+int UserManagerBackend::validateHome(QString home) {
+    int result = 0;
+    QFileInfo homeDir(home);
+    Q3UrlOperator *homePath = new Q3UrlOperator(home);
+    if (home == "") {
+	result = 1;
+    }
+    if ((! homePath->isDir()) && (home != "")) {
+	result = 3;
+    }
+    if ((homeLocRegExp.search(home) == -1) && (home != "")) {
+	result = 4;
+    }    
+    if ((homeDir.isFile()) && (home != "")) {
+	result = 5;
+    }
+    if ((! homePath->isValid()) && (home != "")) {
+	result = 2;
+    }
+    
+    return result;
+}
+
+void UserManagerBackend::deleteUser(QString username)
+{
+    userList[username].setDeleted();
+    emit usersChanged();
+}
+
+int UserManagerBackend::validateUsername(QString username) {
+    //0 = OK, 1 = Empty, 2 = Invalid input, 3 = Username already in use
+    int result = 0;
+    
+    if ((userList.contains(username) == true) && (username != "")) {
+	result = 3;
+    }
+    if ((! usernameRegExp.exactMatch(username)) && (username != "")) {
+	result = 2;
+    }
+    if (username == "") {
+	result = 1;
+    }
+    
+    return result;
+}
+
+void UserManagerBackend::addUser(QString username, QString fullname, QString home, QString shell, QString group, QString password)
+{
+    qDebug("Starting addUser: " + username);
+    int gid = -1;
+    QMap<int, Group>::Iterator it;
+    
+    for ( it = groupList.begin(); it != groupList.end(); ++it )
+    {
+	if (it.data().getGroupname() == group)
+        {
+            gid = it.data().getGid();
+            break;
+        }
+    }
+    userList[username] = User(username, home, shell, fullname, password, gid);
+    
+    emit usersChanged();
+    qDebug("Finished addUser: " + username);
+}
+
+void UserManagerBackend::deleteGroup(QString groupname)
+{
+    getGroup(groupname)->setDeleted();
+    emit groupsChanged();
+}
+
+void UserManagerBackend::addGroup(QString groupname)
+{
+    //Find free, invalid id
+    int gid = -1;
+    while (groupList[gid].getStatus() != -1) { gid--; }
+    groupList[gid] = Group(groupname, -1, QStringList(), true);
+    emit groupsChanged();
+}
+
+int UserManagerBackend::validateGroupname(QString groupname) {
+    //0 = OK, 1 = Empty, 2 = Invalid input, 3 = Groupname already in use
+    int result = 0;
+    QMap<int, Group>::Iterator it;
+    
+    for ( it = groupList.begin(); it != groupList.end(); ++it ) {
+	if (it.data().getGroupname() == groupname) {
+	    result = 3;
+	}
+    }
+    if ((! groupnameRegExp.exactMatch(groupname)) && (groupname != "")) {
+	result = 2;
+    }
+    if (groupname == "") {
+	result = 1;
+    }
+    
+    return result;
+}
+
+void UserManagerBackend::addUserToGroup(QString user, QString groupname)
+{
+    Group *group = getGroup(groupname);
+    group->addMember(user);
+    group->setChanges();
+    emit groupsChanged();
+}
+
+void UserManagerBackend::removeUserFromGroup(QString user, QString groupname)
+{
+    Group *group = getGroup(groupname);
+    group->removeMember(user);
+    group->setChanges();
+    emit groupsChanged();
+}
+
+bool UserManagerBackend::commit()
+{
+    
+    //Process users
+    QMap<QString, User>::Iterator userIt;
+    
+    for ( userIt = userList.begin(); userIt != userList.end(); ++userIt )
+    {
+        pw = new Q3Process(0);
+        switch(userIt.data().getStatus())
+        {
+            case 1:
+                //Modify User
+                qDebug("Modifying user '%s'", userIt.data().getUsername().ascii());
+                pw->addArgument("pw");
+                pw->addArgument("usermod");
+                pw->addArgument(userIt.data().getUsername());
+                pw->addArgument("-d");
+                pw->addArgument(userIt.data().getHome());
+                pw->addArgument("-s");
+                pw->addArgument(userIt.data().getShell());
+                pw->addArgument("-c");
+                pw->addArgument(userIt.data().getFullname());
+                pw->start();
+                while(pw->isRunning());
+                
+                if (userIt.data().getPassword() != "")
+                {
+                    pw = new Q3Process(0);
+                    pw->addArgument("chpass");
+                    pw->addArgument("-p");
+                    pw->addArgument(userIt.data().getPassword());
+                    pw->addArgument(userIt.data().getUsername());
+                    pw->start();
+                    while(pw->isRunning());
+                }
+                break;
+            case 2:
+                //Add User
+                qDebug("Adding user '%s'", userIt.data().getUsername().ascii());
+                pw->addArgument("pw");
+                pw->addArgument("useradd");
+                pw->addArgument(userIt.data().getUsername());
+                pw->addArgument("-c");
+                pw->addArgument(userIt.data().getFullname());
+                pw->addArgument("-d");
+                pw->addArgument(userIt.data().getHome());
+                pw->addArgument("-s");
+                pw->addArgument(userIt.data().getShell());
+                if (userIt.data().getGid() != -1)
+                {
+                    pw->addArgument("-g");
+                    pw->addArgument(QString::number(userIt.data().getGid()));
+                }
+                if (validateHome(userIt.data().getHome()) == 3) { pw->addArgument("-m"); }
+                pw->start();
+                while(pw->isRunning());
+                
+                pw = new Q3Process(0);
+                pw->addArgument("chpass");
+                pw->addArgument("-p");
+                pw->addArgument(userIt.data().getPassword());
+                pw->addArgument(userIt.data().getUsername());
+                pw->start();
+                while(pw->isRunning());
+                break;
+            case 3:
+                //Delete User
+                qDebug("Deleting user '%s'", userIt.data().getUsername().ascii());
+                pw->addArgument("pw");
+                pw->addArgument("userdel");
+                pw->addArgument(userIt.data().getUsername());
+                pw->addArgument("-r");
+                pw->start();
+                while(pw->isRunning());
+                break;
+        }
+    }
+    refreshUsers();
+    
+    //Process groups
+    QMap<int, Group>::Iterator groupIt;
+    
+    for ( groupIt = groupList.begin(); groupIt != groupList.end(); ++groupIt )
+    {
+        pw = new Q3Process(0);
+        switch(groupIt.data().getStatus())
+        {
+            case 1:
+                //Modify Group
+                qDebug("Modifying group '%s'", groupIt.data().getGroupname().ascii());
+                pw->addArgument("pw");
+                pw->addArgument("groupmod");
+                pw->addArgument(groupIt.data().getGroupname());
+                pw->addArgument("-M");
+                pw->addArgument(groupIt.data().getMembers().join(","));
+                pw->start();
+                while(pw->isRunning());
+                break;
+            case 2:
+                //Add Group
+                qDebug("Adding group '%s'", groupIt.data().getGroupname().ascii());
+                pw->addArgument("pw");
+                pw->addArgument("groupadd");
+                pw->addArgument(groupIt.data().getGroupname());
+                pw->addArgument("-M");
+                pw->addArgument(groupIt.data().getMembers().join(","));
+                pw->start();
+                while(pw->isRunning());
+                break;
+            case 3:
+                //Delete Group
+                qDebug("Deleting group '%s'", groupIt.data().getGroupname().ascii());
+                pw->addArgument("pw");
+                pw->addArgument("groupdel");
+                pw->addArgument(groupIt.data().getGroupname());
+                pw->start();
+                while(pw->isRunning());
+                break;
+	}
+    }
+    refreshGroups();
+    emit groupsChanged();
+    emit usersChanged();
+    
+    return true;
+}
+

Modified: pcbsd/trunk/pcbsdusermanager/usermanagerback.h
===================================================================
--- pcbsd/trunk/pcbsdusermanager/usermanagerback.h	2008-09-11 15:33:50 UTC (rev 2753)
+++ pcbsd/trunk/pcbsdusermanager/usermanagerback.h	2008-09-11 16:46:13 UTC (rev 2754)
@@ -1,78 +1,80 @@
-/***************************************************************************
- *   Copyright (C) 2005 - 2007 by Tim McCormick   *
- *   tim at pcbsd.org   *
- *                                                                         *
- *   Permission is hereby granted, free of charge, to any person obtaining *
- *   a copy of this software and associated documentation files (the       *
- *   "Software"), to deal in the Software without restriction, including   *
- *   without limitation the rights to use, copy, modify, merge, publish,   *
- *   distribute, sublicense, and/or sell copies of the Software, and to    *
- *   permit persons to whom the Software is furnished to do so, subject to *
- *   the following conditions:                                             *
- *                                                                         *
- *   The above copyright notice and this permission notice shall be        *
- *   included in all copies or substantial portions of the Software.       *
- *                                                                         *
- *   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,       *
- *   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF    *
- *   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- *   IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR     *
- *   OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, *
- *   ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR *
- *   OTHER DEALINGS IN THE SOFTWARE.                                       *
- ***************************************************************************/
-
-#include <qapplication.h>
-#include <qfile.h>
-#include <user.h>
-#include <group.h>
-#include <qprocess.h>
-#include <qregexp.h>
-#include <qurloperator.h>
-#include <qmessagebox.h>
-
-#ifndef INC_USERMANAGERBACKEND_H
-#define INC_USERMANAGERBACKEND_H
-
-class UserManagerBackend : public QObject {
-    Q_OBJECT
-public:
-    UserManagerBackend();
-    QStringList getAllUsers(int minId = 1000, int maxId = 65532); //Set variables to -1 to ignore
-    User* getUser(const QString &user);
-    QStringList getShells();
-    QStringList getAllGroups(int minId = 1000, int maxId = 65532); //Set variables to -1 to ignore
-    Group* getGroup(int gid);
-    Group* getGroup(QString groupname);
-    void deleteUser(QString username);
-    void addUser(QString username, QString fullname, QString home, QString shell, QString group, QString password);
-    int validatePassword(QString password, QString confirmPassword); //0 = OK, 1 = Empty, 2 = No match, 3 = Invalid input
-    int validateFullname(QString fullname); //0 = OK, 1 = Empty, 2 = Invalid input
-    int validateHome(QString home); //0 = OK, 1 = Empty, 2 = Invalid Path, 3 = Not a directory, 4 = Not a recommended path, 5 = File selected (not directory)
-    int validateUsername(QString username); //0 = OK, 1 = Empty, 2 = Invalid input, 3 = Username already in use
-    int validateGroupname(QString groupname); //0 = OK, 1 = Empty, 2 = Invalid input, 3 Groupname already in use
-    void changePassword(QString username, QString password);
-    void deleteGroup(QString groupname);
-    void addGroup(QString groupname);
-    void addUserToGroup(QString user, QString group);
-    void removeUserFromGroup(QString user, QString group);
-    bool commit();
-    
-private:
-    QMap<QString, User> userList;
-    void refreshUsers();
-    QMap<int, Group> groupList;
-    void refreshGroups();
-    QRegExp fullnameRegExp;
-    QRegExp homeLocRegExp;
-    QRegExp usernameRegExp;
-    QRegExp passwordRegExp;
-    QRegExp groupnameRegExp;
-    QProcess *pw;
-    
-signals:
-    void usersChanged();
-    void groupsChanged();
-};
-
-#endif // INC_USERMANAGER_H
+/***************************************************************************
+ *   Copyright (C) 2005 - 2007 by Tim McCormick   *
+ *   tim at pcbsd.org   *
+ *                                                                         *
+ *   Permission is hereby granted, free of charge, to any person obtaining *
+ *   a copy of this software and associated documentation files (the       *
+ *   "Software"), to deal in the Software without restriction, including   *
+ *   without limitation the rights to use, copy, modify, merge, publish,   *
+ *   distribute, sublicense, and/or sell copies of the Software, and to    *
+ *   permit persons to whom the Software is furnished to do so, subject to *
+ *   the following conditions:                                             *
+ *                                                                         *
+ *   The above copyright notice and this permission notice shall be        *
+ *   included in all copies or substantial portions of the Software.       *
+ *                                                                         *
+ *   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,       *
+ *   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF    *
+ *   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * 
+ *   IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR     *
+ *   OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, *
+ *   ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR *
+ *   OTHER DEALINGS IN THE SOFTWARE.                                       *
+ ***************************************************************************/
+
+#include <qapplication.h>
+#include <qfile.h>
+#include <user.h>
+#include <qmap.h>
+#include <group.h>
+#include <Q3Process>
+#include <qregexp.h>
+#include <Q3UrlOperator>
+#include <qmessagebox.h>
+
+#ifndef INC_USERMANAGERBACKEND_H
+#define INC_USERMANAGERBACKEND_H
+
+class UserManagerBackend : public QObject {
+    Q_OBJECT
+public:
+    UserManagerBackend();
+    void programInit();
+    QStringList getAllUsers(int minId = 1000, int maxId = 65532); //Set variables to -1 to ignore
+    User* getUser(const QString &user);
+    QStringList getShells();
+    QStringList getAllGroups(int minId = 1000, int maxId = 65532); //Set variables to -1 to ignore
+    Group* getGroup(int gid);
+    Group* getGroup(QString groupname);
+    void deleteUser(QString username);
+    void addUser(QString username, QString fullname, QString home, QString shell, QString group, QString password);
+    int validatePassword(QString password, QString confirmPassword); //0 = OK, 1 = Empty, 2 = No match, 3 = Invalid input
+    int validateFullname(QString fullname); //0 = OK, 1 = Empty, 2 = Invalid input
+    int validateHome(QString home); //0 = OK, 1 = Empty, 2 = Invalid Path, 3 = Not a directory, 4 = Not a recommended path, 5 = File selected (not directory)
+    int validateUsername(QString username); //0 = OK, 1 = Empty, 2 = Invalid input, 3 = Username already in use
+    int validateGroupname(QString groupname); //0 = OK, 1 = Empty, 2 = Invalid input, 3 Groupname already in use
+    void changePassword(QString username, QString password);
+    void deleteGroup(QString groupname);
+    void addGroup(QString groupname);
+    void addUserToGroup(QString user, QString group);
+    void removeUserFromGroup(QString user, QString group);
+    bool commit();
+    
+private:
+    QMap<QString, User> userList;
+    void refreshUsers();
+    QMap<int, Group> groupList;
+    void refreshGroups();
+    QRegExp fullnameRegExp;
+    QRegExp homeLocRegExp;
+    QRegExp usernameRegExp;
+    QRegExp passwordRegExp;
+    QRegExp groupnameRegExp;
+    Q3Process *pw;
+    
+signals:
+    void usersChanged();
+    void groupsChanged();
+};
+
+#endif // INC_USERMANAGER_H



More information about the Commits mailing list