138 lines
3.5 KiB
C++
138 lines
3.5 KiB
C++
#include "browserwidget.h"
|
|
#include "ui_browserwidget.h"
|
|
|
|
BrowserWidget::BrowserWidget(QWidget *parent) :
|
|
QWidget(parent),
|
|
ui(new Ui::BrowserWidget)
|
|
{
|
|
ui->setupUi(this);
|
|
}
|
|
|
|
BrowserWidget::~BrowserWidget()
|
|
{
|
|
delete ui;
|
|
}
|
|
|
|
void BrowserWidget::newRootTask()
|
|
{
|
|
PTask rootTask = mTaskTreeModel->addTask(QModelIndex(), Storage::instance().topOfTaskTree().size());
|
|
QModelIndex rootIndex = mTaskTreeModel->getIndex(rootTask);
|
|
ui->mTaskTree->setCurrentIndex(rootIndex);
|
|
ui->mTaskTree->edit(rootIndex);
|
|
}
|
|
|
|
void BrowserWidget::newTask()
|
|
{
|
|
QModelIndex index = ui->mTaskTree->currentIndex();
|
|
if (index.isValid())
|
|
ui->mTaskTree->expand(index);
|
|
PTask parent = mTaskTreeModel->getTask(index);
|
|
if (!parent)
|
|
return;
|
|
|
|
PTask child = mTaskTreeModel->addTask(index, parent->children().size());
|
|
if (!child)
|
|
return;
|
|
|
|
QModelIndex childIndex = mTaskTreeModel->getIndex(child);
|
|
ui->mTaskTree->setCurrentIndex(childIndex);
|
|
ui->mTaskTree->edit(childIndex);
|
|
}
|
|
|
|
void BrowserWidget::newSibling()
|
|
{
|
|
QModelIndex index = ui->mTaskTree->currentIndex();
|
|
if (!index.isValid())
|
|
return;
|
|
PTask currentTask = mTaskTreeModel->getTask(index);
|
|
if (!currentTask)
|
|
return;
|
|
|
|
PTask t = mTaskTreeModel->addTask(index.parent(), index.row() + 1);
|
|
QModelIndex i = mTaskTreeModel->getIndex(t);
|
|
|
|
ui->mTaskTree->setCurrentIndex(i);
|
|
ui->mTaskTree->edit(i);
|
|
}
|
|
|
|
void BrowserWidget::moveUp()
|
|
{
|
|
QModelIndex index = ui->mTaskTree->currentIndex();
|
|
if (!index.isValid())
|
|
return;
|
|
|
|
PTask currentTask = mTaskTreeModel->getTask(index);
|
|
if (!currentTask)
|
|
return;
|
|
|
|
if (index.row() == 0)
|
|
return;
|
|
|
|
mTaskTreeModel->moveTask(currentTask, -1);
|
|
ui->mTaskTree->setCurrentIndex(mTaskTreeModel->getIndex(currentTask));
|
|
}
|
|
|
|
void BrowserWidget::moveDown()
|
|
{
|
|
QModelIndex index = ui->mTaskTree->currentIndex();
|
|
if (!index.isValid())
|
|
return;
|
|
|
|
PTask currentTask = mTaskTreeModel->getTask(index);
|
|
if (!currentTask)
|
|
return;
|
|
|
|
if (currentTask->parent())
|
|
{
|
|
if (index.row() == currentTask->parent()->children().size() - 1)
|
|
return;
|
|
}
|
|
else
|
|
if (index.row() == Storage::instance().topOfTaskTree().size() - 1)
|
|
return;
|
|
|
|
mTaskTreeModel->moveTask(currentTask, +1);
|
|
ui->mTaskTree->setCurrentIndex(mTaskTreeModel->getIndex(currentTask));
|
|
}
|
|
|
|
void BrowserWidget::renameTask()
|
|
{
|
|
QModelIndex index = ui->mTaskTree->currentIndex();
|
|
if (index.isValid())
|
|
ui->mTaskTree->edit(index);
|
|
}
|
|
|
|
void BrowserWidget::deleteTask()
|
|
{
|
|
QModelIndex index = ui->mTaskTree->currentIndex();
|
|
if (!index.isValid())
|
|
return;
|
|
|
|
PTask t = mTaskTreeModel->getTask(index);
|
|
if (!t)
|
|
return;
|
|
|
|
// Check if deleted task
|
|
if (mCurrentTask == t)
|
|
{
|
|
alertBox(tr("Problem"), tr("Impossible to delete active task. Please stop tracking before task delete."), AlertType_Warning);
|
|
}
|
|
else
|
|
{
|
|
if (mSettings->data()[KEY_ASK_BEFORE_DELETE].toBool())
|
|
{
|
|
auto reply = QMessageBox::question(this,
|
|
tr("Are you sure?"),
|
|
tr("Are you sure you want to delete ") + t->title(),
|
|
QMessageBox::Yes | QMessageBox::No);
|
|
if (reply == QMessageBox::No)
|
|
return;
|
|
}
|
|
|
|
if (mAutomaticTask == t)
|
|
mAutomaticTask.reset();
|
|
|
|
mTaskTreeModel->deleteTask(ui->mTaskTree->currentIndex());
|
|
}
|
|
}
|