logic: Inspect errors during indexing (issue #235)

* Enabled errors table during indexing
* Store intermediate errors in StorageCache
* Open tab for errors if no tab yet
* "Show errors" for file disabled during indexing
* Hide indexing dialogs with ESC instead of stopping indexing
This commit is contained in:
Eberhard Graether
2018-12-06 15:46:42 +01:00
parent 09c6155583
commit b47a0b5b72
21 changed files with 231 additions and 59 deletions
@@ -30,7 +30,7 @@ void ErrorController::errorFilterChanged(const ErrorFilter& filter)
void ErrorController::showError(Id errorId)
{
if (!m_tabShowsErrors[TabId::currentTab()])
if (!m_tabShowsErrors[TabId::currentTab()] || m_newErrorsAdded)
{
errorFilterChanged(getView()->getErrorFilter());
}
@@ -82,6 +82,9 @@ void ErrorController::handleMessage(MessageErrorCountClear* message)
void ErrorController::handleMessage(MessageErrorCountUpdate* message)
{
m_storageAccess->addErrorsToCache(message->newErrors, message->errorCount);
m_newErrorsAdded = true;
ErrorFilter filter = getView()->getErrorFilter();
int room = filter.limit - m_errorCount;
@@ -116,18 +119,21 @@ void ErrorController::handleMessage(MessageErrorCountUpdate* message)
void ErrorController::handleMessage(MessageErrorsAll* message)
{
if (canDisplayErrors())
{
MessageActivateErrors(getView()->getErrorFilter()).dispatch();
}
MessageActivateErrors(getView()->getErrorFilter()).dispatch();
}
void ErrorController::handleMessage(MessageErrorsForFile* message)
{
if (canDisplayErrors())
Project* project = Application::getInstance()->getCurrentProject().get();
if (project && project->isIndexing())
{
MessageActivateErrors(ErrorFilter(), message->file).dispatch();
Application::getInstance()->getDialogView(DialogView::UseCase::GENERAL)->confirm(
"Showing errors for a file is not possible while indexing."
);
return;
}
MessageActivateErrors(ErrorFilter(), message->file).dispatch();
}
void ErrorController::handleMessage(MessageErrorsHelpMessage* message)
@@ -155,16 +161,16 @@ void ErrorController::handleMessage(MessageErrorsHelpMessage* message)
void ErrorController::handleMessage(MessageIndexingFinished* message)
{
m_storageAccess->setUseErrorCache(false);
clear();
showErrors(getView()->getErrorFilter(), false);
getView()->setEnabled(true);
}
void ErrorController::handleMessage(MessageIndexingStarted* message)
{
getView()->setEnabled(false);
m_storageAccess->setUseErrorCache(true);
}
void ErrorController::handleMessage(MessageShowError* message)
@@ -182,6 +188,7 @@ void ErrorController::clear()
m_errorCount = 0;
m_tabShowsErrors.clear();
m_tabActiveFilePath.clear();
m_newErrorsAdded = false;
getView()->clear();
}
@@ -213,17 +220,3 @@ bool ErrorController::showErrors(const ErrorFilter& filter, bool scrollTo)
return errors.size();
}
bool ErrorController::canDisplayErrors() const
{
Project* project = Application::getInstance()->getCurrentProject().get();
if (project && project->isIndexing())
{
Application::getInstance()->getDialogView(DialogView::UseCase::GENERAL)->confirm(
"Errors cannot be activated while indexing."
);
return false;
}
return true;
}