TaskWindow: Do not print negative badge counts

Simplify logic for calculating badge count: Just use the number of
rows in the filtered model instead of doing this ourselves. That
should stop the count from ever becoming negative.

Change-Id: I8107f8649ae8178128760d8938412d230fbaf11d
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
Tobias Hunger
2014-10-23 16:32:26 +02:00
parent 3cb4f6dbf3
commit acd0d02e28

View File

@@ -183,9 +183,7 @@ TaskView::TaskView(QWidget *parent)
}
TaskView::~TaskView()
{
}
{ }
void TaskView::resizeEvent(QResizeEvent *e)
{
@@ -209,7 +207,6 @@ public:
QToolButton *m_filterWarningsButton;
QToolButton *m_categoriesButton;
QMenu *m_categoriesMenu;
int m_badgeCount;
QList<QAction *> m_actions;
};
@@ -246,7 +243,6 @@ TaskWindow::TaskWindow() : d(new TaskWindowPrivate)
d->m_listview->setAttribute(Qt::WA_MacShowFocusRect, false);
d->m_taskWindowContext = new Internal::TaskWindowContext(d->m_listview);
d->m_badgeCount = 0;
Core::ICore::addContextObject(d->m_taskWindowContext);
@@ -300,6 +296,13 @@ TaskWindow::TaskWindow() : d(new TaskWindowPrivate)
this, SLOT(showTask(uint)));
connect(hub, SIGNAL(openTask(uint)),
this, SLOT(openTask(uint)));
connect(d->m_filter, &TaskFilterModel::rowsRemoved,
[this]() { emit setBadgeNumber(d->m_filter->rowCount()); });
connect(d->m_filter, &TaskFilterModel::rowsInserted,
[this]() { emit setBadgeNumber(d->m_filter->rowCount()); });
connect(d->m_filter, &TaskFilterModel::modelReset,
[this]() { emit setBadgeNumber(d->m_filter->rowCount()); });
}
TaskWindow::~TaskWindow()
@@ -364,24 +367,11 @@ QWidget *TaskWindow::outputWidget(QWidget *)
void TaskWindow::clearTasks(Core::Id categoryId)
{
if (categoryId.uniqueIdentifier() != 0 && !d->m_filter->filteredCategories().contains(categoryId)) {
if (d->m_filter->filterIncludesErrors())
d->m_badgeCount -= d->m_model->errorTaskCount(categoryId);
if (d->m_filter->filterIncludesWarnings())
d->m_badgeCount -= d->m_model->warningTaskCount(categoryId);
if (d->m_filter->filterIncludesUnknowns())
d->m_badgeCount -= d->m_model->unknownTaskCount(categoryId);
} else {
d->m_badgeCount = 0;
}
d->m_model->clearTasks(categoryId);
emit tasksChanged();
emit tasksCleared();
navigateStateChanged();
setBadgeNumber(d->m_badgeCount);
}
void TaskWindow::setCategoryVisibility(Core::Id categoryId, bool visible)
@@ -397,17 +387,6 @@ void TaskWindow::setCategoryVisibility(Core::Id categoryId, bool visible)
categories.append(categoryId);
d->m_filter->setFilteredCategories(categories);
int count = 0;
if (d->m_filter->filterIncludesErrors())
count += d->m_model->errorTaskCount(categoryId);
if (d->m_filter->filterIncludesWarnings())
count += d->m_model->warningTaskCount(categoryId);
if (visible)
d->m_badgeCount += count;
else
d->m_badgeCount -= count;
setBadgeNumber(d->m_badgeCount);
}
void TaskWindow::currentChanged(const QModelIndex &index)
@@ -443,18 +422,8 @@ void TaskWindow::addTask(const Task &task)
navigateStateChanged();
if (task.type == Task::Error && d->m_filter->filterIncludesErrors()
&& !d->m_filter->filteredCategories().contains(task.category)) {
&& !d->m_filter->filteredCategories().contains(task.category))
flash();
setBadgeNumber(++d->m_badgeCount);
}
if (task.type == Task::Warning && d->m_filter->filterIncludesWarnings()
&& !d->m_filter->filteredCategories().contains(task.category)) {
setBadgeNumber(++d->m_badgeCount);
}
if (task.type == Task::Unknown && d->m_filter->filterIncludesUnknowns()
&& !d->m_filter->filteredCategories().contains(task.category)) {
setBadgeNumber(++d->m_badgeCount);
}
}
void TaskWindow::removeTask(const Task &task)
@@ -463,19 +432,6 @@ void TaskWindow::removeTask(const Task &task)
emit tasksChanged();
navigateStateChanged();
if (task.type == Task::Error && d->m_filter->filterIncludesErrors()
&& !d->m_filter->filteredCategories().contains(task.category)) {
setBadgeNumber(--d->m_badgeCount);
}
if (task.type == Task::Warning && d->m_filter->filterIncludesWarnings()
&& !d->m_filter->filteredCategories().contains(task.category)) {
setBadgeNumber(--d->m_badgeCount);
}
if (task.type == Task::Unknown && d->m_filter->filterIncludesUnknowns()
&& !d->m_filter->filteredCategories().contains(task.category)) {
setBadgeNumber(--d->m_badgeCount);
}
}
void TaskWindow::updatedTaskFileName(unsigned int id, const QString &fileName)
@@ -545,8 +501,6 @@ void TaskWindow::setShowWarnings(bool show)
{
d->m_filter->setFilterIncludesWarnings(show);
d->m_filter->setFilterIncludesUnknowns(show); // "Unknowns" are often associated with warnings
d->m_badgeCount = d->m_filter->rowCount();
setBadgeNumber(d->m_badgeCount);
}
void TaskWindow::updateCategoriesMenu()