X-Git-Url: https://git.sven.stormbind.net/?a=blobdiff_plain;f=taskmodel.cpp;fp=taskmodel.cpp;h=0000000000000000000000000000000000000000;hb=d483bd8e6523c23c6f1d8908a2e0611c2bc9ff4f;hp=65b2f27adcbbdccc212f20214ed9e67a00aaf310;hpb=7dfa3fe589d1722d49681f42cdb0bf1e6efb5223;p=sven%2Fvym.git diff --git a/taskmodel.cpp b/taskmodel.cpp deleted file mode 100644 index 65b2f27..0000000 --- a/taskmodel.cpp +++ /dev/null @@ -1,323 +0,0 @@ -#include "taskmodel.h" - -#include - -#include "branchitem.h" -#include "branchobj.h" -#include "task.h" -#include "vymmodel.h" - -TaskModel::TaskModel(QObject *parent) - : QAbstractTableModel(parent) -{ - showParentsLevel = 0; -} - -QModelIndex TaskModel::index (Task* t) -{ - int n=tasks.indexOf (t); - if (n<0) - return QModelIndex(); - else - return createIndex (n,0,t); -} - -QModelIndex TaskModel::indexRowEnd (Task* t) -{ - int n=tasks.indexOf (t); - if (n<0) - return QModelIndex(); - else - return createIndex (n,6,t); -} - -Task* TaskModel::getTask (const QModelIndex &ix) const -{ - if (ix.isValid() ) - return tasks.at (ix.row() ); - else - return NULL; -} - -int TaskModel::rowCount(const QModelIndex &parent) const -{ - Q_UNUSED(parent); - return tasks.size(); -} - -int TaskModel::columnCount(const QModelIndex &parent) const -{ - Q_UNUSED(parent); - return 7; -} - -QVariant TaskModel::data(const QModelIndex &index, int role) const -{ - if (!index.isValid()) - return QVariant(); - - if (index.row() >= tasks.size() || index.row() < 0) - return QVariant(); - - BranchItem *bi=tasks.at(index.row())->getBranch(); - Task *t=tasks.at(index.row() ); - - if (role == Qt::DisplayRole) - { - if (index.column() == 0) - return t->getPriority(); - else if (index.column() == 1) - return t->getStatusString() + " - " +t->getAwakeString(); - else if (index.column() == 2) - return t->getAgeCreation(); - else if (index.column() == 3) - return t->getAgeModified(); - else if (index.column() == 4) - return t->getDaysSleep(); - else if (index.column() == 5) - { - QString s = bi->getModel()->getMapName(); - if (s.isEmpty() ) - return "-"; - else - return bi->getModel()->getMapName(); - } - else if (index.column() == 6) - { - BranchItem *bi = tasks.at(index.row())->getBranch(); - return bi->getHeadingPlainWithParents( showParentsLevel ); - } - } else if (role == Qt::DecorationRole && index.column() == 1) - { - return QIcon(":/flag-" + t->getIconString() + ".png"); - } - else // role != Qt::DisplayRole - { - if (role == Qt::ForegroundRole && bi ) - return bi->getHeadingColor(); - if (role == Qt::BackgroundRole && bi ) - { - BranchItem *frameBI=bi->getFramedParentBranch(bi); - if (frameBI && index.column() != 5) - { - BranchObj *bo=frameBI->getBranchObj(); - if (bo) - // Return frame background - return bo->getFrameBrushColor(); - } - else - { - // Return map background - return bi->getModel()->getMapBackgroundColor(); - } - } - } - - return QVariant(); -} - -QVariant TaskModel::headerData(int section, Qt::Orientation orientation, int role) const -{ - if (role != Qt::DisplayRole) - return QVariant(); - - if (orientation == Qt::Horizontal) { - switch (section) { - case 0: - return tr("Prio","TaskEditor"); - case 1: - return tr("Status","TaskEditor"); - case 2: - return tr("Age total","TaskEditor"); - case 3: - return tr("Age mod.","TaskEditor"); - case 4: - return tr("Sleep","TaskEditor"); - case 5: - return tr("Map","TaskEditor"); - case 6: - return tr("Task","TaskEditor"); - default: - return QVariant(); - } - } - return QVariant(); -} - -bool TaskModel::insertRows(int position, int rows, const QModelIndex &index, Task* t) -{ - Q_UNUSED(index); - beginInsertRows(QModelIndex(), position, position+rows-1); - - for (int row=0; row < rows; row++) - tasks.insert(position, t); - - endInsertRows(); - return true; -} - -bool TaskModel::removeRows(int position, int rows, const QModelIndex &index) -{ - Q_UNUSED(index); - beginRemoveRows(QModelIndex(), position, position+rows-1); - - for (int row=0; row < rows; ++row) - delete (tasks.takeAt(position)) ; - - endRemoveRows(); - return true; -} - -bool TaskModel::setData(const QModelIndex &index, Task* t, int role) -{ - if (index.isValid() && role == Qt::EditRole) - { - int row = index.row(); - - tasks.replace(row, t); - emit(dataChanged(index, index)); - - return true; - } - - return false; -} - -void TaskModel::emitDataChanged (Task* t) -{ - QModelIndex ix=index (t); - if (ix.isValid() ) - { - int row=ix.row(); - int col=0; - while (colgetBranch()->getModel()==model) n++; - return n; -} - -Task* TaskModel::createTask (BranchItem *bi) -{ - if (bi) - { - foreach (Task* t, tasks) - { - if (t->getBranch()==bi) - { - qWarning()<<"TaskModel::createTask Branch exists already!"; - return NULL; - } - } - Task* task=new Task(this); - task->setBranch (bi); - task->setAwake(Task::Morning); - insertRows(tasks.count(), 1, QModelIndex(),task); - - bi->setTask (task); - - return task; - } - qWarning()<<"TaskEditor::addItem - item exists"; - return NULL; -} - -void TaskModel::deleteTask (Task* t) -{ - int pos=tasks.indexOf(t); - if (pos>=0) - removeRows(pos, 1,QModelIndex() ); -} - -void TaskModel::recalcPriorities() -{ - emit (layoutAboutToBeChanged() ); - int minPrio=1000000; - foreach (Task *t,tasks) - { - int p=0; - BranchItem *bi=t->getBranch(); - - // Status - switch (t->getStatus() ) - { - case Task::NotStarted: break; - case Task::WIP: p+=10; break; - case Task::Finished: p+=2000; break; - } - - // Awake and sleeping - switch (t->getAwake() ) - { - case Task::Morning: p-=1000; break; - case Task::WideAwake: break; - case Task::Sleeping: p+=1000 + t->getDaysSleep(); break; - } - - // Color (importance) - QColor c = bi->getHeadingColor(); - - // light blueish green - if (c == QColor ("#00aa7f") ) p -= 20; - - // green (e.g. from vym < 2.6.3 with #005500) - if (c.red() == 0 && c.blue() == 0 && c.green() < 160) p -= 40; - - // orange - if (c == QColor ("#d95100") ) p -= 60; - - // red - if (c == QColor ("#ff0000") ) p -= 80; - - // Flags - if (bi->hasActiveStandardFlag ("stopsign") ) p-=800; - - // Age - p-=t->getAgeModified(); - p-=t->getAgeCreation() * 1.0 / 365 * 80; // After a year, this is as important as "red" - - // Position in subtree - p += bi->num(); - - t->setPriority (p); - if (psetPriority (1- minPrio + t->getPriority() ); - //emitDataChanged (t); - } - - emit (layoutChanged() ); -} - -void TaskModel::setShowParentsLevel(uint i) -{ - showParentsLevel = i; - recalcPriorities(); // Triggers update of view -} - -uint TaskModel::getShowParentsLevel() -{ - return showParentsLevel; -} -