← Back to team overview

mira-dev team mailing list archive

[Branch ~mira-dev/mira/trunk] Rev 202: New User creation form

 

------------------------------------------------------------
revno: 202
committer: Alan Alvarez <aalvarez@xxxxxxxxxxxxx>
branch nick: trunk
timestamp: Thu 2010-05-06 14:25:38 -0400
message:
  New User creation form
modified:
  mira-client/CMakeLists.txt
  mira-client/include/gui/qt/GuiApp.h
  mira-client/include/gui/qt/MainWindow.h
  mira-client/include/network/messages/MsgError.h
  mira-client/include/network/messages/MsgUserAccepted.h
  mira-client/src/Application.cpp
  mira-client/src/gui/qt/GuiApp.cpp
  mira-client/src/gui/qt/MainWindow.cpp
  mira-server/include/network/messages/MsgNewUser.h


--
lp:mira
https://code.launchpad.net/~mira-dev/mira/trunk

Your team Mira Core Development Team is subscribed to branch lp:mira.
To unsubscribe from this branch go to https://code.launchpad.net/~mira-dev/mira/trunk/+edit-subscription
=== modified file 'mira-client/CMakeLists.txt'
--- mira-client/CMakeLists.txt	2010-03-10 15:53:17 +0000
+++ mira-client/CMakeLists.txt	2010-05-06 18:25:38 +0000
@@ -20,6 +20,7 @@
         "src/gui/qt/GuiApp.cpp"
         "src/gui/qt/NavigationTreeWidgetItem.cpp"
         "src/gui/qt/NavigationDockWidget.cpp"
+        "src/gui/qt/NewUserDialog.cpp"
         "src/gui/qt/Workplace.cpp"
         "src/gui/qt/WorkplaceDialog.cpp"
         "src/gui/qt/WorkplaceWidget.cpp"
@@ -40,6 +41,7 @@
         "include/gui/qt/LoginDialog.h"
         "include/gui/qt/MainWindow.h"
         "include/gui/qt/NavigationDockWidget.h"
+        "include/gui/qt/NewUserDialog.h"
     )
 # add boost include directories
 INCLUDE_DIRECTORIES (${Boost_INCLUDE_DIRS})

=== modified file 'mira-client/include/gui/qt/GuiApp.h'
--- mira-client/include/gui/qt/GuiApp.h	2010-04-28 21:37:28 +0000
+++ mira-client/include/gui/qt/GuiApp.h	2010-05-06 18:25:38 +0000
@@ -39,6 +39,8 @@
         void trayMessage(const QString& title, const QString& message);
         void receiveChatMessage(const std::string& source, const std::string& message);
         void setWorkplaceDescription(const std::string& workplace, const std::string& description);
+        void userAccepted(const std::string& username);
+        void newUserError(const std::string& message);
     private slots:
         void MiscTrigger();
     signals:

=== modified file 'mira-client/include/gui/qt/MainWindow.h'
--- mira-client/include/gui/qt/MainWindow.h	2010-04-28 21:37:28 +0000
+++ mira-client/include/gui/qt/MainWindow.h	2010-05-06 18:25:38 +0000
@@ -45,6 +45,7 @@
         void about();
         void createWorkplace();
         void joinWorkplace();
+        void newUser();
 
     private:
         friend class GuiApp;
@@ -70,6 +71,7 @@
         QAction * m_chatFocusAction;
         QAction * m_createWorkplaceAction;
         QAction * m_joinWorkplaceAction;
+        QAction * m_newUserAction;
 
         //Menus
         QMenu * m_fileMenu;

=== modified file 'mira-client/include/network/messages/MsgError.h'
--- mira-client/include/network/messages/MsgError.h	2010-02-23 04:26:48 +0000
+++ mira-client/include/network/messages/MsgError.h	2010-05-06 18:25:38 +0000
@@ -55,6 +55,11 @@
                         QMetaObject::invokeMethod(Application::get_gui_application()->m_mainWindow, "loginFailed", Qt::QueuedConnection, MIRA_QT_GENERIC_ARG(const QString, QString(m_message.substr(2).c_str())));
                     else
                         QMetaObject::invokeMethod(Application::get_gui_application()->m_mainWindow, "loginFailed", Qt::QueuedConnection, MIRA_QT_GENERIC_ARG(const QString, QString("")));
+                    break;
+
+                case Msg::NEW_USER:
+                    QMetaObject::invokeMethod(Application::get_gui_application(), "newUserError", Qt::QueuedConnection, MIRA_QT_GENERIC_ARG(std::string, m_message.substr(3)));
+                    break;
             }
         }
 };

=== modified file 'mira-client/include/network/messages/MsgUserAccepted.h'
--- mira-client/include/network/messages/MsgUserAccepted.h	2009-11-07 19:45:43 +0000
+++ mira-client/include/network/messages/MsgUserAccepted.h	2010-05-06 18:25:38 +0000
@@ -21,7 +21,10 @@
 #define __MIRASERVER__NETWORK_MSGUSERACCEPTED_H
 
 #include <string>
+#include <QMetaObject>
 #include "Msg.h"
+#include "tools.h"
+#include "Application.h"
 
 namespace miraclient
 {
@@ -37,7 +40,12 @@
 
         virtual void run()
         {
-            //
+            size_t pos = m_message.find(" ");
+            if (pos == std::string::npos)
+                return;
+
+            std::string username = m_message.substr(pos+1);
+            QMetaObject::invokeMethod(Application::get_gui_application(), "userAccepted", Qt::QueuedConnection, MIRA_QT_GENERIC_ARG(std::string, username));
         }
 };
 } // namespace network

=== modified file 'mira-client/src/Application.cpp'
--- mira-client/src/Application.cpp	2010-04-16 19:30:32 +0000
+++ mira-client/src/Application.cpp	2010-05-06 18:25:38 +0000
@@ -55,6 +55,7 @@
     network::Msg::add_token(network::Msg::GROUP_ACCEPTED, "GA");
     network::Msg::add_token(network::Msg::GROUP_JOINED, "GJ");
     network::Msg::add_token(network::Msg::NEW_MEMBER, "NM");
+    network::Msg::add_token(network::Msg::NEW_USER, "NU");
     network::Msg::add_token(network::Msg::USER_STATUS, "US");
 
     boost::filesystem::path xml_file_path(GET_HOME_PATH());

=== modified file 'mira-client/src/gui/qt/GuiApp.cpp'
--- mira-client/src/gui/qt/GuiApp.cpp	2010-04-28 21:37:28 +0000
+++ mira-client/src/gui/qt/GuiApp.cpp	2010-05-06 18:25:38 +0000
@@ -257,3 +257,13 @@
 
     workplace_object->setDescription(description);
 }
+
+void GuiApp::userAccepted(const std::string &username)
+{
+    QMessageBox::information(m_mainWindow, "New User Accepted", QString("User %1 has been accepted.").arg(username.c_str()));
+}
+
+void GuiApp::newUserError(const std::string& message)
+{
+    QMessageBox::critical(m_mainWindow, "Error!", QString("There was an error while attempting to create a new user: \n %1").arg(message.c_str()));
+}

=== modified file 'mira-client/src/gui/qt/MainWindow.cpp'
--- mira-client/src/gui/qt/MainWindow.cpp	2010-04-20 18:41:11 +0000
+++ mira-client/src/gui/qt/MainWindow.cpp	2010-05-06 18:25:38 +0000
@@ -6,6 +6,7 @@
 #include "WorkplaceMember.h"
 #include "GuiApp.h"
 #include "WorkplaceDialog.h"
+#include "NewUserDialog.h"
 
 #include <QAction>
 #include <QMenuBar>
@@ -80,6 +81,7 @@
     connect(m_miscTriggerAction,SIGNAL(triggered()),app,SLOT(MiscTrigger()));
     connect(m_createWorkplaceAction, SIGNAL(triggered()), SLOT(createWorkplace()));
     connect(m_joinWorkplaceAction, SIGNAL(triggered()), SLOT(joinWorkplace()));
+    connect(m_newUserAction, SIGNAL(triggered()), SLOT(newUser()));
     connect(m_chatFocusAction,SIGNAL(triggered()),m_chatWidget,SLOT(FocusOnChat()));
     connect(app,SIGNAL(AddedUtility(const std::string&,Utility*)),m_navigationWidget,SLOT(AddUtility(const std::string&,Utility*)));
     connect(app,SIGNAL(AddedWorkplace(Workplace *)),m_navigationWidget,SLOT(AddWorkplace(Workplace *)));
@@ -126,6 +128,12 @@
     m_joinWorkplaceAction->setShortcut(tr("Ctrl+J"));
     m_joinWorkplaceAction->setToolTip(tr("Join a Workplace"));
     m_joinWorkplaceAction->setDisabled(true);
+
+    //New User Action
+    m_newUserAction = new QAction(tr("&New User"), this);
+    m_newUserAction->setShortcut(tr("Ctrl+N"));
+    m_newUserAction->setToolTip(tr("Create a new User"));
+    m_newUserAction->setDisabled(true);
 }
 
 void MainWindow::closeEvent(QCloseEvent * event)
@@ -169,11 +177,12 @@
     m_fileMenu = menuBar()->addMenu(tr("&File"));
     m_fileMenu->addAction(m_exitAction);
  
-    //Login Menu
+    //Actions Menu
     m_actionsMenu = menuBar()->addMenu(tr("&Actions"));
     m_actionsMenu->addAction(m_loginAction);
     m_actionsMenu->addAction(m_createWorkplaceAction);
     m_actionsMenu->addAction(m_joinWorkplaceAction);
+    m_actionsMenu->addAction(m_newUserAction);
 
     //View Menu
     //m_viewMenu = createPopupMenu();
@@ -239,6 +248,7 @@
     m_loginAction->setDisabled(true);
     m_createWorkplaceAction->setEnabled(true);
     m_joinWorkplaceAction->setEnabled(true);
+    m_newUserAction->setEnabled(true);
 }
 
 void MainWindow::loginFailed(const QString& error_message)
@@ -252,6 +262,7 @@
     m_loginAction->setDisabled(false);
     m_createWorkplaceAction->setDisabled(true);
     m_joinWorkplaceAction->setDisabled(true);
+    m_newUserAction->setDisabled(true);
 
     emit serverConnectionTerminated();
 }
@@ -278,3 +289,9 @@
         miraclient::Application::get_client()->send("JG " + workplace.toStdString());
     }
 }
+
+void MainWindow::newUser()
+{
+    NewUserDialog dialog(this);
+    dialog.exec();
+}

=== modified file 'mira-server/include/network/messages/MsgNewUser.h'
--- mira-server/include/network/messages/MsgNewUser.h	2009-11-22 04:31:08 +0000
+++ mira-server/include/network/messages/MsgNewUser.h	2010-05-06 18:25:38 +0000
@@ -44,9 +44,8 @@
         {}
 
         virtual void run()
-        { 
-              
-            // Splitting message into fields. 
+        {
+            // Splitting message into fields.
             vector<std::string> message_field = Split(m_message, " ");
 
             if(message_field.size() >= 4) //excluding token, stripped at Msg::parse
@@ -54,20 +53,20 @@
                 // Checking if the username already exist
                 if(Application::get_directory().find_user(message_field.at(0)).is_valid())
                 {
-                    string error_message = "E User ";
+                    string error_message = "E NU User ";
                     error_message += message_field.at(0) + " exist";
                     m_source_connection->send(error_message);
                 }
                 else
                 {
                     User user(message_field.at(0));
-                    
+
                     Field field = {Field::type_string, ATTRIBUTE_EMAIL, message_field.at(1), std::list<std::string>()};
                     user.set_field(field);
-                    
+
                     // TODO: If client sends encrypted password then
-                    // we don't need to encrypt password here. 
-   
+                    // we don't need to encrypt password here.
+
                     field.attribute = ATTRIBUTE_PASSWORD;
                     field.value = Crypto::EncryptPassword(message_field.at(2));
                     user.set_field(field);
@@ -75,15 +74,15 @@
                     field.attribute = ATTRIBUTE_NAME;
                     field.value = message_field.at(3);
                     user.set_field(field);
-                    
-                    //Optional attributes in NU message    
+
+                    //Optional attributes in NU message
                     if(message_field.size() > 4)
                     {
                         field.attribute = ATTRIBUTE_LAST_NAME;
                         field.value = message_field.at(4);
                         user.set_field(field);
-                    }   
-                
+                    }
+
                     Application::get_directory().add_user(user);
 
                     //After role model is developed this will change.