added error message if settings initalizion failed

This commit is contained in:
fourtf 2019-10-03 18:05:56 +02:00
parent 7fa2c7b4a5
commit 2b9b96abb5
4 changed files with 40 additions and 10 deletions

View file

@ -8,6 +8,7 @@
#include <csignal>
#include "Application.hpp"
#include "common/Modes.hpp"
#include "common/NetworkManager.hpp"
#include "singletons/Paths.hpp"
#include "singletons/Resources.hpp"

View file

@ -5,6 +5,7 @@
#include "BrowserExtension.hpp"
#include "RunGui.hpp"
#include "common/Args.hpp"
#include "common/Modes.hpp"
#include "singletons/Paths.hpp"
#include "singletons/Settings.hpp"
#include "util/IncognitoBrowser.hpp"
@ -28,9 +29,35 @@ int main(int argc, char **argv)
else
{
initArgs(args);
Paths paths;
Settings settings(paths.settingsDirectory);
Paths *paths{};
runGui(a, paths, settings);
try
{
paths = new Paths;
}
catch (std::runtime_error &error)
{
QMessageBox box;
if (Modes::getInstance().isPortable)
{
box.setText(
error.what() +
QStringLiteral(
"\n\nInfo: Portable mode requires the application to "
"be in a writeable location. If you don't want "
"portable mode reinstall the application. "
"https://chatterino.com."));
}
else
{
box.setText(error.what());
}
box.exec();
return 1;
}
Settings settings(paths->settingsDirectory);
runGui(a, *paths, settings);
}
}

View file

@ -11,6 +11,8 @@
#include "common/Modes.hpp"
#include "util/CombinePath.hpp"
using namespace std::literals;
namespace chatterino {
Paths *Paths::instance = nullptr;
@ -22,7 +24,7 @@ Paths::Paths()
this->initAppFilePathHash();
this->initCheckPortable();
this->initAppDataDirectory();
this->initRootDirectory();
this->initSubDirectories();
}
@ -76,7 +78,7 @@ void Paths::initCheckPortable()
combinePath(QCoreApplication::applicationDirPath(), "portable"));
}
void Paths::initAppDataDirectory()
void Paths::initRootDirectory()
{
assert(this->portable_.is_initialized());
@ -95,8 +97,8 @@ void Paths::initAppDataDirectory()
QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);
if (path.isEmpty())
{
throw std::runtime_error(
"Error finding writable location for settings");
throw std::runtime_error("Could not create directory \""s +
path.toStdString() + "\"");
}
// create directory Chatterino2 instead of chatterino on windows because the
@ -123,8 +125,8 @@ void Paths::initSubDirectories()
if (!QDir().mkpath(path))
{
throw std::runtime_error(
"Error creating appdata path %appdata%/chatterino/" + name);
throw std::runtime_error("Could not create directory \""s +
path.toStdString() + "\"");
}
return path;

View file

@ -39,7 +39,7 @@ public:
private:
void initAppFilePathHash();
void initCheckPortable();
void initAppDataDirectory();
void initRootDirectory();
void initSubDirectories();
boost::optional<bool> portable_;