00001 #include "usercreator.h"
00002 
00003 #include <controldata.h>
00004 
00005 #include <domain/taskmanagerdata.h>
00006 #include <domain/usertype.h>
00007 
00008 #include <tools/stringexception.h>
00009 
00010 
00011 #include <QDebug>
00012 
00013 using namespace control;
00014 
00015 ControllerInterface::ActionType UserCreator::actionType() const
00016 {
00017     return CreateAction;
00018 }
00019 
00020 ControllerInterface::DataType UserCreator::dataType() const
00021 {
00022     return UserData;
00023 }
00024 
00025 QString UserCreator::description() const
00026 {
00027     return "Create user";
00028 }
00029 
00030 bool UserCreator::userIsValid() const
00031 {
00032     return userIsAdmin();
00033 }
00034 
00035 void UserCreator::execute()
00036 {
00037     QList<domain::UserType*> types = data->userTypes();
00038 
00039     if (types.isEmpty())
00040     {
00041         ui->showError("No known user types, load a theme first");
00042         return;
00043     }
00044 
00045     QMap<QString, domain::UserType*> typesMap;
00046 
00047     Q_FOREACH (domain::UserType* type, types)
00048         typesMap[type->name()] = type;
00049 
00050     data::StringInputData type = ui->getChoice(typesMap.keys(), "Choose a type of user");
00051 
00052     if (!type.processData)
00053         return;
00054 
00055     data::StringInputData name = ui->getText("Enter a username.");
00056 
00057     if (!name.processData)
00058         return;
00059 
00060     try
00061     {
00062         data->createUser(typesMap[type], name);
00063     }
00064     catch (tools::StringException e)
00065     {
00066         ui->showError(e.message());
00067     }
00068 }
00069 
00070 QString UserCreator::name() const
00071 {
00072     return "UserCreator";
00073 }
00074 
00075 Q_EXPORT_PLUGIN2(controller_usercreator, UserCreator)