noo/client/browserwidget.cpp

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());
}
}