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