forked from qt-creator/qt-creator
ProjectExplorer: Give build-related errors higher priority
... in the issues pane. Fixes: QTCREATORBUG-23655 Change-Id: Id9dc2c3781d69e0d70b12bb9fe39ced85b3f2084 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -286,13 +286,17 @@ BuildManager *BuildManager::instance()
|
|||||||
void BuildManager::extensionsInitialized()
|
void BuildManager::extensionsInitialized()
|
||||||
{
|
{
|
||||||
TaskHub::addCategory(Constants::TASK_CATEGORY_COMPILE,
|
TaskHub::addCategory(Constants::TASK_CATEGORY_COMPILE,
|
||||||
tr("Compile", "Category for compiler issues listed under 'Issues'"));
|
tr("Compile", "Category for compiler issues listed under 'Issues'"),
|
||||||
|
true, 100);
|
||||||
TaskHub::addCategory(Constants::TASK_CATEGORY_BUILDSYSTEM,
|
TaskHub::addCategory(Constants::TASK_CATEGORY_BUILDSYSTEM,
|
||||||
tr("Build System", "Category for build system issues listed under 'Issues'"));
|
tr("Build System", "Category for build system issues listed under 'Issues'"),
|
||||||
|
true, 100);
|
||||||
TaskHub::addCategory(Constants::TASK_CATEGORY_DEPLOYMENT,
|
TaskHub::addCategory(Constants::TASK_CATEGORY_DEPLOYMENT,
|
||||||
tr("Deployment", "Category for deployment issues listed under 'Issues'"));
|
tr("Deployment", "Category for deployment issues listed under 'Issues'"),
|
||||||
|
true, 100);
|
||||||
TaskHub::addCategory(Constants::TASK_CATEGORY_AUTOTEST,
|
TaskHub::addCategory(Constants::TASK_CATEGORY_AUTOTEST,
|
||||||
tr("Autotests", "Category for autotest issues listed under 'Issues'"));
|
tr("Autotests", "Category for autotest issues listed under 'Issues'"),
|
||||||
|
true, 100);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BuildManager::buildProjectWithoutDependencies(Project *project)
|
void BuildManager::buildProjectWithoutDependencies(Project *project)
|
||||||
|
@@ -64,7 +64,7 @@ class TaskMark : public TextEditor::TextMark
|
|||||||
public:
|
public:
|
||||||
TaskMark(const Task &task) :
|
TaskMark(const Task &task) :
|
||||||
TextMark(task.file, task.line, categoryForType(task.type)),
|
TextMark(task.file, task.line, categoryForType(task.type)),
|
||||||
m_id(task.taskId)
|
m_task(task)
|
||||||
{
|
{
|
||||||
setColor(task.type == Task::Error ? Utils::Theme::ProjectExplorer_TaskError_TextMarkColor
|
setColor(task.type == Task::Error ? Utils::Theme::ProjectExplorer_TaskError_TextMarkColor
|
||||||
: Utils::Theme::ProjectExplorer_TaskWarn_TextMarkColor);
|
: Utils::Theme::ProjectExplorer_TaskWarn_TextMarkColor);
|
||||||
@@ -90,24 +90,24 @@ public:
|
|||||||
void updateLineNumber(int lineNumber) override;
|
void updateLineNumber(int lineNumber) override;
|
||||||
void removedFromEditor() override;
|
void removedFromEditor() override;
|
||||||
private:
|
private:
|
||||||
unsigned int m_id;
|
const Task m_task;
|
||||||
};
|
};
|
||||||
|
|
||||||
void TaskMark::updateLineNumber(int lineNumber)
|
void TaskMark::updateLineNumber(int lineNumber)
|
||||||
{
|
{
|
||||||
TaskHub::updateTaskLineNumber(m_id, lineNumber);
|
TaskHub::updateTaskLineNumber(m_task, lineNumber);
|
||||||
TextMark::updateLineNumber(lineNumber);
|
TextMark::updateLineNumber(lineNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TaskMark::updateFileName(const FilePath &fileName)
|
void TaskMark::updateFileName(const FilePath &fileName)
|
||||||
{
|
{
|
||||||
TaskHub::updateTaskFileName(m_id, fileName.toString());
|
TaskHub::updateTaskFileName(m_task, fileName.toString());
|
||||||
TextMark::updateFileName(FilePath::fromString(fileName.toString()));
|
TextMark::updateFileName(FilePath::fromString(fileName.toString()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void TaskMark::removedFromEditor()
|
void TaskMark::removedFromEditor()
|
||||||
{
|
{
|
||||||
TaskHub::updateTaskLineNumber(m_id, -1);
|
TaskHub::updateTaskLineNumber(m_task, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TaskMark::isClickable() const
|
bool TaskMark::isClickable() const
|
||||||
@@ -117,7 +117,7 @@ bool TaskMark::isClickable() const
|
|||||||
|
|
||||||
void TaskMark::clicked()
|
void TaskMark::clicked()
|
||||||
{
|
{
|
||||||
TaskHub::taskMarkClicked(m_id);
|
TaskHub::taskMarkClicked(m_task);
|
||||||
}
|
}
|
||||||
|
|
||||||
TaskHub::TaskHub()
|
TaskHub::TaskHub()
|
||||||
@@ -132,12 +132,13 @@ TaskHub::~TaskHub()
|
|||||||
m_instance = nullptr;
|
m_instance = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TaskHub::addCategory(Utils::Id categoryId, const QString &displayName, bool visible)
|
void TaskHub::addCategory(Utils::Id categoryId, const QString &displayName, bool visible,
|
||||||
|
int priority)
|
||||||
{
|
{
|
||||||
QTC_CHECK(!displayName.isEmpty());
|
QTC_CHECK(!displayName.isEmpty());
|
||||||
QTC_ASSERT(!m_registeredCategories.contains(categoryId), return);
|
QTC_ASSERT(!m_registeredCategories.contains(categoryId), return);
|
||||||
m_registeredCategories.push_back(categoryId);
|
m_registeredCategories.push_back(categoryId);
|
||||||
emit m_instance->categoryAdded(categoryId, displayName, visible);
|
emit m_instance->categoryAdded(categoryId, displayName, visible, priority);
|
||||||
}
|
}
|
||||||
|
|
||||||
TaskHub *TaskHub::instance()
|
TaskHub *TaskHub::instance()
|
||||||
@@ -178,24 +179,24 @@ void TaskHub::removeTask(const Task &task)
|
|||||||
emit m_instance->taskRemoved(task);
|
emit m_instance->taskRemoved(task);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TaskHub::updateTaskFileName(unsigned int id, const QString &fileName)
|
void TaskHub::updateTaskFileName(const Task &task, const QString &fileName)
|
||||||
{
|
{
|
||||||
emit m_instance->taskFileNameUpdated(id, fileName);
|
emit m_instance->taskFileNameUpdated(task, fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TaskHub::updateTaskLineNumber(unsigned int id, int line)
|
void TaskHub::updateTaskLineNumber(const Task &task, int line)
|
||||||
{
|
{
|
||||||
emit m_instance->taskLineNumberUpdated(id, line);
|
emit m_instance->taskLineNumberUpdated(task, line);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TaskHub::taskMarkClicked(unsigned int id)
|
void TaskHub::taskMarkClicked(const Task &task)
|
||||||
{
|
{
|
||||||
emit m_instance->showTask(id);
|
emit m_instance->showTask(task);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TaskHub::showTaskInEditor(unsigned int id)
|
void TaskHub::showTaskInEditor(const Task &task)
|
||||||
{
|
{
|
||||||
emit m_instance->openTask(id);
|
emit m_instance->openTask(task);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TaskHub::setCategoryVisibility(Utils::Id categoryId, bool visible)
|
void TaskHub::setCategoryVisibility(Utils::Id categoryId, bool visible)
|
||||||
|
@@ -50,26 +50,28 @@ public slots:
|
|||||||
static void removeTask(const ProjectExplorer::Task &task);
|
static void removeTask(const ProjectExplorer::Task &task);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static void addCategory(Utils::Id categoryId, const QString &displayName, bool visible = true);
|
static void addCategory(Utils::Id categoryId, const QString &displayName, bool visible = true,
|
||||||
static void updateTaskFileName(unsigned int id, const QString &fileName);
|
int priority = 0);
|
||||||
static void updateTaskLineNumber(unsigned int id, int line);
|
static void updateTaskFileName(const Task &task, const QString &fileName);
|
||||||
static void taskMarkClicked(unsigned int id);
|
static void updateTaskLineNumber(const Task &task, int line);
|
||||||
static void showTaskInEditor(unsigned int id);
|
static void taskMarkClicked(const Task &task);
|
||||||
|
static void showTaskInEditor(const Task &task);
|
||||||
static void setCategoryVisibility(Utils::Id categoryId, bool visible);
|
static void setCategoryVisibility(Utils::Id categoryId, bool visible);
|
||||||
|
|
||||||
static void requestPopup();
|
static void requestPopup();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void categoryAdded(Utils::Id categoryId, const QString &displayName, bool visible);
|
void categoryAdded(Utils::Id categoryId, const QString &displayName, bool visible,
|
||||||
|
int priority);
|
||||||
void taskAdded(const ProjectExplorer::Task &task);
|
void taskAdded(const ProjectExplorer::Task &task);
|
||||||
void taskRemoved(const ProjectExplorer::Task &task);
|
void taskRemoved(const ProjectExplorer::Task &task);
|
||||||
void tasksCleared(Utils::Id categoryId);
|
void tasksCleared(Utils::Id categoryId);
|
||||||
void taskFileNameUpdated(unsigned int id, const QString &fileName);
|
void taskFileNameUpdated(const Task &task, const QString &fileName);
|
||||||
void taskLineNumberUpdated(unsigned int id, int line);
|
void taskLineNumberUpdated(const Task &task, int line);
|
||||||
void categoryVisibilityChanged(Utils::Id categoryId, bool visible);
|
void categoryVisibilityChanged(Utils::Id categoryId, bool visible);
|
||||||
void popupRequested(int);
|
void popupRequested(int);
|
||||||
void showTask(unsigned int id);
|
void showTask(const Task &task);
|
||||||
void openTask(unsigned int id);
|
void openTask(const Task &task);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
TaskHub();
|
TaskHub();
|
||||||
|
@@ -35,6 +35,9 @@
|
|||||||
#include <QFontMetrics>
|
#include <QFontMetrics>
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
#include <functional>
|
||||||
|
|
||||||
|
using namespace std::placeholders;
|
||||||
|
|
||||||
namespace ProjectExplorer {
|
namespace ProjectExplorer {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
@@ -78,11 +81,12 @@ bool TaskModel::hasFile(const QModelIndex &index) const
|
|||||||
return !m_tasks.at(row).file.isEmpty();
|
return !m_tasks.at(row).file.isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TaskModel::addCategory(Utils::Id categoryId, const QString &categoryName)
|
void TaskModel::addCategory(Utils::Id categoryId, const QString &categoryName, int priority)
|
||||||
{
|
{
|
||||||
QTC_ASSERT(categoryId.isValid(), return);
|
QTC_ASSERT(categoryId.isValid(), return);
|
||||||
CategoryData data;
|
CategoryData data;
|
||||||
data.displayName = categoryName;
|
data.displayName = categoryName;
|
||||||
|
data.priority = priority;
|
||||||
m_categories.insert(categoryId, data);
|
m_categories.insert(categoryId, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -99,9 +103,20 @@ Tasks TaskModel::tasks(Utils::Id categoryId) const
|
|||||||
return taskList;
|
return taskList;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool sortById(const Task &task, unsigned int id)
|
bool TaskModel::compareTasks(const Task &task1, const Task &task2)
|
||||||
{
|
{
|
||||||
return task.taskId < id;
|
if (task1.category == task2.category)
|
||||||
|
return task1.taskId < task2.taskId;
|
||||||
|
|
||||||
|
// Higher-priority task should appear higher up in the view and thus compare less-than.
|
||||||
|
const int prio1 = m_categories.value(task1.category).priority;
|
||||||
|
const int prio2 = m_categories.value(task2.category).priority;
|
||||||
|
if (prio1 < prio2)
|
||||||
|
return false;
|
||||||
|
if (prio1 > prio2)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return task1.taskId < task2.taskId;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TaskModel::addTask(const Task &task)
|
void TaskModel::addTask(const Task &task)
|
||||||
@@ -110,7 +125,8 @@ void TaskModel::addTask(const Task &task)
|
|||||||
CategoryData &data = m_categories[task.category];
|
CategoryData &data = m_categories[task.category];
|
||||||
CategoryData &global = m_categories[Utils::Id()];
|
CategoryData &global = m_categories[Utils::Id()];
|
||||||
|
|
||||||
auto it = std::lower_bound(m_tasks.begin(), m_tasks.end(),task.taskId, sortById);
|
auto it = std::lower_bound(m_tasks.begin(), m_tasks.end(), task,
|
||||||
|
std::bind(&TaskModel::compareTasks, this, _1, task));
|
||||||
int i = it - m_tasks.begin();
|
int i = it - m_tasks.begin();
|
||||||
beginInsertRows(QModelIndex(), i, i);
|
beginInsertRows(QModelIndex(), i, i);
|
||||||
m_tasks.insert(it, task);
|
m_tasks.insert(it, task);
|
||||||
@@ -134,30 +150,31 @@ void TaskModel::removeTask(unsigned int id)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int TaskModel::rowForId(unsigned int id)
|
int TaskModel::rowForTask(const Task &task)
|
||||||
{
|
{
|
||||||
auto it = std::lower_bound(m_tasks.constBegin(), m_tasks.constEnd(), id, sortById);
|
auto it = std::lower_bound(m_tasks.constBegin(), m_tasks.constEnd(), task,
|
||||||
|
std::bind(&TaskModel::compareTasks, this, _1, task));
|
||||||
if (it == m_tasks.constEnd())
|
if (it == m_tasks.constEnd())
|
||||||
return -1;
|
return -1;
|
||||||
return it - m_tasks.constBegin();
|
return it - m_tasks.constBegin();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TaskModel::updateTaskFileName(unsigned int id, const QString &fileName)
|
void TaskModel::updateTaskFileName(const Task &task, const QString &fileName)
|
||||||
{
|
{
|
||||||
int i = rowForId(id);
|
int i = rowForTask(task);
|
||||||
QTC_ASSERT(i != -1, return);
|
QTC_ASSERT(i != -1, return);
|
||||||
if (m_tasks.at(i).taskId == id) {
|
if (m_tasks.at(i).taskId == task.taskId) {
|
||||||
m_tasks[i].file = Utils::FilePath::fromString(fileName);
|
m_tasks[i].file = Utils::FilePath::fromString(fileName);
|
||||||
const QModelIndex itemIndex = index(i, 0);
|
const QModelIndex itemIndex = index(i, 0);
|
||||||
emit dataChanged(itemIndex, itemIndex);
|
emit dataChanged(itemIndex, itemIndex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TaskModel::updateTaskLineNumber(unsigned int id, int line)
|
void TaskModel::updateTaskLineNumber(const Task &task, int line)
|
||||||
{
|
{
|
||||||
int i = rowForId(id);
|
int i = rowForTask(task);
|
||||||
QTC_ASSERT(i != -1, return);
|
QTC_ASSERT(i != -1, return);
|
||||||
if (m_tasks.at(i).taskId == id) {
|
if (m_tasks.at(i).taskId == task.taskId) {
|
||||||
m_tasks[i].movedLine = line;
|
m_tasks[i].movedLine = line;
|
||||||
const QModelIndex itemIndex = index(i, 0);
|
const QModelIndex itemIndex = index(i, 0);
|
||||||
emit dataChanged(itemIndex, itemIndex);
|
emit dataChanged(itemIndex, itemIndex);
|
||||||
|
@@ -52,14 +52,14 @@ public:
|
|||||||
|
|
||||||
QList<Utils::Id> categoryIds() const;
|
QList<Utils::Id> categoryIds() const;
|
||||||
QString categoryDisplayName(Utils::Id categoryId) const;
|
QString categoryDisplayName(Utils::Id categoryId) const;
|
||||||
void addCategory(Utils::Id categoryId, const QString &categoryName);
|
void addCategory(Utils::Id categoryId, const QString &categoryName, int priority);
|
||||||
|
|
||||||
Tasks tasks(Utils::Id categoryId = Utils::Id()) const;
|
Tasks tasks(Utils::Id categoryId = Utils::Id()) const;
|
||||||
void addTask(const Task &t);
|
void addTask(const Task &t);
|
||||||
void removeTask(unsigned int id);
|
void removeTask(unsigned int id);
|
||||||
void clearTasks(Utils::Id categoryId = Utils::Id());
|
void clearTasks(Utils::Id categoryId = Utils::Id());
|
||||||
void updateTaskFileName(unsigned int id, const QString &fileName);
|
void updateTaskFileName(const Task &task, const QString &fileName);
|
||||||
void updateTaskLineNumber(unsigned int id, int line);
|
void updateTaskLineNumber(const Task &task, int line);
|
||||||
|
|
||||||
int sizeOfFile(const QFont &font);
|
int sizeOfFile(const QFont &font);
|
||||||
int sizeOfLineNumber(const QFont &font);
|
int sizeOfLineNumber(const QFont &font);
|
||||||
@@ -74,8 +74,9 @@ public:
|
|||||||
|
|
||||||
bool hasFile(const QModelIndex &index) const;
|
bool hasFile(const QModelIndex &index) const;
|
||||||
|
|
||||||
int rowForId(unsigned int id);
|
int rowForTask(const Task &task);
|
||||||
private:
|
private:
|
||||||
|
bool compareTasks(const Task &t1, const Task &t2);
|
||||||
|
|
||||||
class CategoryData
|
class CategoryData
|
||||||
{
|
{
|
||||||
@@ -105,6 +106,7 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
QString displayName;
|
QString displayName;
|
||||||
|
int priority = 0;
|
||||||
int count = 0;
|
int count = 0;
|
||||||
int warnings = 0;
|
int warnings = 0;
|
||||||
int errors = 0;
|
int errors = 0;
|
||||||
|
@@ -507,9 +507,10 @@ void TaskWindow::visibilityChanged(bool visible)
|
|||||||
delayedInitialization();
|
delayedInitialization();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TaskWindow::addCategory(Utils::Id categoryId, const QString &displayName, bool visible)
|
void TaskWindow::addCategory(Utils::Id categoryId, const QString &displayName, bool visible,
|
||||||
|
int priority)
|
||||||
{
|
{
|
||||||
d->m_model->addCategory(categoryId, displayName);
|
d->m_model->addCategory(categoryId, displayName, priority);
|
||||||
if (!visible) {
|
if (!visible) {
|
||||||
QList<Utils::Id> filters = d->m_filter->filteredCategories();
|
QList<Utils::Id> filters = d->m_filter->filteredCategories();
|
||||||
filters += categoryId;
|
filters += categoryId;
|
||||||
@@ -540,30 +541,30 @@ void TaskWindow::removeTask(const Task &task)
|
|||||||
navigateStateChanged();
|
navigateStateChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TaskWindow::updatedTaskFileName(unsigned int id, const QString &fileName)
|
void TaskWindow::updatedTaskFileName(const Task &task, const QString &fileName)
|
||||||
{
|
{
|
||||||
d->m_model->updateTaskFileName(id, fileName);
|
d->m_model->updateTaskFileName(task, fileName);
|
||||||
emit tasksChanged();
|
emit tasksChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TaskWindow::updatedTaskLineNumber(unsigned int id, int line)
|
void TaskWindow::updatedTaskLineNumber(const Task &task, int line)
|
||||||
{
|
{
|
||||||
d->m_model->updateTaskLineNumber(id, line);
|
d->m_model->updateTaskLineNumber(task, line);
|
||||||
emit tasksChanged();
|
emit tasksChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TaskWindow::showTask(unsigned int id)
|
void TaskWindow::showTask(const Task &task)
|
||||||
{
|
{
|
||||||
int sourceRow = d->m_model->rowForId(id);
|
int sourceRow = d->m_model->rowForTask(task);
|
||||||
QModelIndex sourceIdx = d->m_model->index(sourceRow, 0);
|
QModelIndex sourceIdx = d->m_model->index(sourceRow, 0);
|
||||||
QModelIndex filterIdx = d->m_filter->mapFromSource(sourceIdx);
|
QModelIndex filterIdx = d->m_filter->mapFromSource(sourceIdx);
|
||||||
d->m_listview->setCurrentIndex(filterIdx);
|
d->m_listview->setCurrentIndex(filterIdx);
|
||||||
popup(Core::IOutputPane::ModeSwitch);
|
popup(Core::IOutputPane::ModeSwitch);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TaskWindow::openTask(unsigned int id)
|
void TaskWindow::openTask(const Task &task)
|
||||||
{
|
{
|
||||||
int sourceRow = d->m_model->rowForId(id);
|
int sourceRow = d->m_model->rowForTask(task);
|
||||||
QModelIndex sourceIdx = d->m_model->index(sourceRow, 0);
|
QModelIndex sourceIdx = d->m_model->index(sourceRow, 0);
|
||||||
QModelIndex filterIdx = d->m_filter->mapFromSource(sourceIdx);
|
QModelIndex filterIdx = d->m_filter->mapFromSource(sourceIdx);
|
||||||
triggerDefaultHandler(filterIdx);
|
triggerDefaultHandler(filterIdx);
|
||||||
@@ -583,7 +584,7 @@ void TaskWindow::triggerDefaultHandler(const QModelIndex &index)
|
|||||||
const Utils::FilePath userChoice = Utils::chooseFileFromList(task.fileCandidates);
|
const Utils::FilePath userChoice = Utils::chooseFileFromList(task.fileCandidates);
|
||||||
if (!userChoice.isEmpty()) {
|
if (!userChoice.isEmpty()) {
|
||||||
task.file = userChoice;
|
task.file = userChoice;
|
||||||
updatedTaskFileName(task.taskId, task.file.toString());
|
updatedTaskFileName(task, task.file.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -82,13 +82,13 @@ signals:
|
|||||||
private:
|
private:
|
||||||
void updateFilter() override;
|
void updateFilter() override;
|
||||||
|
|
||||||
void addCategory(Utils::Id categoryId, const QString &displayName, bool visible);
|
void addCategory(Utils::Id categoryId, const QString &displayName, bool visible, int priority);
|
||||||
void addTask(const ProjectExplorer::Task &task);
|
void addTask(const ProjectExplorer::Task &task);
|
||||||
void removeTask(const ProjectExplorer::Task &task);
|
void removeTask(const ProjectExplorer::Task &task);
|
||||||
void updatedTaskFileName(unsigned int id, const QString &fileName);
|
void updatedTaskFileName(const Task &task, const QString &fileName);
|
||||||
void updatedTaskLineNumber(unsigned int id, int line);
|
void updatedTaskLineNumber(const Task &task, int line);
|
||||||
void showTask(unsigned int id);
|
void showTask(const Task &task);
|
||||||
void openTask(unsigned int id);
|
void openTask(const Task &task);
|
||||||
void clearTasks(Utils::Id categoryId);
|
void clearTasks(Utils::Id categoryId);
|
||||||
void setCategoryVisibility(Utils::Id categoryId, bool visible);
|
void setCategoryVisibility(Utils::Id categoryId, bool visible);
|
||||||
void currentChanged(const QModelIndex &index);
|
void currentChanged(const QModelIndex &index);
|
||||||
|
Reference in New Issue
Block a user