00001 #include "usermodel.h"
00002
00003 #include <domain/user.h>
00004 #include <domain/taskmanagerdata.h>
00005 #include <domain/usertype.h>
00006
00007 using namespace control;
00008
00009 UserModel::UserModel(domain::TaskManagerData* data) : DomainModel(data)
00010 {
00011 connect(data, SIGNAL(usersChanged()), this, SLOT(emitDataChange()));
00012 }
00013
00014 int UserModel::columnCount(const QModelIndex& parent) const
00015 {
00016 if (!parent.isValid())
00017 return LastColumn;
00018
00019 return 0;
00020 }
00021
00022 int UserModel::rowCount(const QModelIndex& parent) const
00023 {
00024 if (!parent.isValid())
00025 return domainData->allUsers().size();
00026
00027 return 0;
00028 }
00029
00030 QVariant UserModel::headerData(int section, Qt::Orientation orientation,
00031 int role) const
00032 {
00033 if (orientation == Qt::Horizontal && role == Qt::DisplayRole)
00034 {
00035 switch (section)
00036 {
00037 case Name: return "Name";
00038 case Type: return "Type";
00039
00040 default: return QVariant();
00041 }
00042 }
00043
00044 return QVariant();
00045 }
00046
00047 QVariant UserModel::data(const QModelIndex& index, int role) const
00048 {
00049 const domain::User* user = domainData->allUsers()[index.row()];
00050
00051 if (role == Qt::DisplayRole)
00052 {
00053 switch (index.column())
00054 {
00055 case Name: return user->name();
00056 case Type: return user->userType()->name();
00057
00058 default: return QVariant();
00059 }
00060 }
00061 else if (role == Qt::ToolTipRole)
00062 {
00063 QString toolTip = "%1\nHas %2 tasks assigned";
00064
00065 return toolTip.arg(user->name())
00066 .arg(user->tasks().size());
00067 }
00068 else
00069 return QVariant();
00070 }
00071
00072 const domain::User* UserModel::userForIndex(const QModelIndex& index) const
00073 {
00074 return domainData->allUsers()[index.row()];
00075 }
00076
00077 QModelIndex UserModel::indexForUser(const domain::User* constUser) const
00078 {
00079 domain::User* user = domainData->user(constUser);
00080
00081 if (!domainData->allUsers().contains(user))
00082 return QModelIndex();
00083
00084 return index(domainData->allUsers().indexOf(user), 0);
00085 }
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109