fix: no dialogs in headless mode

This commit is contained in:
Andreas Stallinger
2017-03-14 18:22:46 +01:00
parent a8edf47685
commit c8404aa83d
5 changed files with 74 additions and 36 deletions
+21 -9
View File
@@ -31,13 +31,22 @@ Task::TaskState TaskFinishParsing::doUpdate(std::shared_ptr<Blackboard> blackboa
{
TimePoint start = utility::durationStart();
m_dialogView->showStatusDialog("Finish Indexing", "Optimizing database");
if (m_dialogView)
{
m_dialogView->showStatusDialog("Finish Indexing", "Optimizing database");
}
m_storage->optimizeMemory();
m_dialogView->showStatusDialog("Finish Indexing", "Building caches");
if (m_dialogView)
{
m_dialogView->showStatusDialog("Finish Indexing", "Building caches");
}
m_storage->buildCaches();
m_dialogView->hideStatusDialog();
if (m_dialogView)
{
m_dialogView->hideStatusDialog();
}
MessageFinishedParsing().dispatch();
float time = utility::duration(start);
@@ -62,12 +71,15 @@ Task::TaskState TaskFinishParsing::doUpdate(std::shared_ptr<Blackboard> blackboa
int sourceFileCount = 0;
blackboard->get("source_file_count", sourceFileCount);
m_dialogView->finishedIndexingDialog(
indexedSourceFileCount,
sourceFileCount,
time,
m_storageAccess->getErrorCount()
);
if (m_dialogView)
{
m_dialogView->finishedIndexingDialog(
indexedSourceFileCount,
sourceFileCount,
time,
m_storageAccess->getErrorCount()
);
}
return STATE_SUCCESS;
}
+4 -1
View File
@@ -23,7 +23,10 @@ void TaskShowStatusDialog::doEnter(std::shared_ptr<Blackboard> blackboard)
Task::TaskState TaskShowStatusDialog::doUpdate(std::shared_ptr<Blackboard> blackboard)
{
m_dialogView->showStatusDialog(m_title, m_message);
if (m_dialogView)
{
m_dialogView->showStatusDialog(m_title, m_message);
}
return STATE_SUCCESS;
}
+6 -3
View File
@@ -57,9 +57,12 @@ Task::TaskState TaskBuildIndex::doUpdate(std::shared_ptr<Blackboard> blackboard)
int indexedSourceFileCount = 0;
blackboard->get("indexed_source_file_count", indexedSourceFileCount);
m_dialogView->updateIndexingDialog(
indexedSourceFileCount, sourceFileCount, indexerCommand->getSourceFilePath().str()
);
if (m_dialogView)
{
m_dialogView->updateIndexingDialog(
indexedSourceFileCount, sourceFileCount, indexerCommand->getSourceFilePath().str()
);
}
}
// file register only copies the DileRegisterStateData
+4 -1
View File
@@ -30,7 +30,10 @@ void TaskParseWrapper::doEnter(std::shared_ptr<Blackboard> blackboard)
{
int sourceFileCount = 0;
blackboard->get("source_file_count", sourceFileCount);
m_dialogView->updateIndexingDialog(0, sourceFileCount, "");
if (m_dialogView)
{
m_dialogView->updateIndexingDialog(0, sourceFileCount, "");
}
m_start = utility::durationStart();
+39 -22
View File
@@ -92,28 +92,31 @@ bool JavaProject::prepareIndexing()
const FilePath mavenPath = ApplicationSettings::getInstance()->getMavenPath();
const FilePath projectRootPath = m_projectSettings->getAbsoluteMavenProjectFilePath().parentDirectory();
ScopedFunctor dialogHider([this](){
getDialogView()->hideStatusDialog();
});
getDialogView()->showStatusDialog("Preparing Project", "Maven\nGenerating Source Files");
bool success = utility::mavenGenerateSources(
mavenPath, projectRootPath
);
if (!success)
if (Application::getInstance()->hasGUI())
{
const std::string dialogMessage =
"Coati was unable to locate Maven on this machine.\n"
"Please make sure to provide the correct Maven Path in the preferences.";
ScopedFunctor dialogHider([this](){
getDialogView()->hideStatusDialog();
});
MessageStatus(dialogMessage, true, false).dispatch();
getDialogView()->showStatusDialog("Preparing Project", "Maven\nGenerating Source Files");
bool success = utility::mavenGenerateSources(
mavenPath, projectRootPath
);
Application::getInstance()->handleDialog(dialogMessage);
return false;
if (!success)
{
const std::string dialogMessage =
"Coati was unable to locate Maven on this machine.\n"
"Please make sure to provide the correct Maven Path in the preferences.";
MessageStatus(dialogMessage, true, false).dispatch();
Application::getInstance()->handleDialog(dialogMessage);
return false;
}
getDialogView()->showStatusDialog("Preparing Project", "Maven\nExporting Dependencies");
}
getDialogView()->showStatusDialog("Preparing Project", "Maven\nExporting Dependencies");
utility::mavenCopyDependencies(
mavenPath, projectRootPath, m_projectSettings->getAbsoluteMavenDependenciesDirectory()
);
@@ -148,9 +151,15 @@ std::vector<std::shared_ptr<IndexerCommand>> JavaProject::getIndexerCommands()
if (!m_rootDirectories)
{
getDialogView()->showStatusDialog("Preparing Project", "Gathering Root\nDirectories");
if (Application::getInstance()->hasGUI())
{
getDialogView()->showStatusDialog("Preparing Project", "Gathering Root\nDirectories");
}
fetchRootDirectories();
getDialogView()->hideStatusDialog();
if (Application::getInstance()->hasGUI())
{
getDialogView()->hideStatusDialog();
}
}
for (FilePath rootDirectory: *(m_rootDirectories.get()))
@@ -193,13 +202,21 @@ void JavaProject::updateFileManager(FileManager& fileManager)
std::vector<FilePath> sourcePaths;
if (m_projectSettings->getAbsoluteMavenProjectFilePath().exists())
{
getDialogView()->showStatusDialog("Preparing Project", "Maven\nFetching Source Directories");
if (Application::getInstance()->hasGUI())
{
getDialogView()->showStatusDialog("Preparing Project", "Maven\nFetching Source Directories");
}
const FilePath mavenPath(ApplicationSettings::getInstance()->getMavenPath());
const FilePath projectRootPath = m_projectSettings->getAbsoluteMavenProjectFilePath().parentDirectory();
sourcePaths = utility::mavenGetAllDirectoriesFromEffectivePom(mavenPath, projectRootPath, m_projectSettings->getShouldIndexMavenTests());
getDialogView()->hideStatusDialog();
if (Application::getInstance()->hasGUI())
{
getDialogView()->hideStatusDialog();
}
}
else
{