Add Developer > Display Crash Options menu item

Is enabled by default. Disabling it stops the display of the crash
handling options dialog at start-up.
This commit is contained in:
David Rowe 2015-08-24 13:24:31 -07:00
parent 9c782f6a6d
commit f6cf77ae68
6 changed files with 21 additions and 11 deletions

View file

@ -257,6 +257,8 @@ bool setupEssentials(int& argc, char** argv) {
// Set build version // Set build version
QCoreApplication::setApplicationVersion(BUILD_VERSION); QCoreApplication::setApplicationVersion(BUILD_VERSION);
Setting::preInit();
CrashHandler::checkForAndHandleCrash(); CrashHandler::checkForAndHandleCrash();
CrashHandler::writeRunningMarkerFiler(); CrashHandler::writeRunningMarkerFiler();
qAddPostRoutine(CrashHandler::deleteRunningMarkerFile); qAddPostRoutine(CrashHandler::deleteRunningMarkerFile);

View file

@ -22,14 +22,20 @@
#include <QStandardPaths> #include <QStandardPaths>
#include <QVBoxLayout> #include <QVBoxLayout>
#include "Menu.h"
static const QString RUNNING_MARKER_FILENAME = "Interface.running"; static const QString RUNNING_MARKER_FILENAME = "Interface.running";
void CrashHandler::checkForAndHandleCrash() { void CrashHandler::checkForAndHandleCrash() {
QFile runningMarkerFile(runningMarkerFilePath()); QFile runningMarkerFile(runningMarkerFilePath());
if (runningMarkerFile.exists()) { if (runningMarkerFile.exists()) {
Action action = promptUserForAction(); QSettings settings;
if (action != DO_NOTHING) { settings.beginGroup("Developer");
handleCrash(action); if (settings.value(MenuOption::DisplayCrashOptions).toBool()) {
Action action = promptUserForAction();
if (action != DO_NOTHING) {
handleCrash(action);
}
} }
} }
} }
@ -93,9 +99,5 @@ void CrashHandler::deleteRunningMarkerFile() {
} }
const QString CrashHandler::runningMarkerFilePath() { const QString CrashHandler::runningMarkerFilePath() {
QSettings::setDefaultFormat(QSettings::IniFormat);
QSettings applicationInfo(PathUtils::resourcesPath() + "info/ApplicationInfo.ini", QSettings::IniFormat);
applicationInfo.beginGroup("INFO");
QCoreApplication::setOrganizationName(applicationInfo.value("organizationName").toString());
return QStandardPaths::writableLocation(QStandardPaths::DataLocation) + "/" + RUNNING_MARKER_FILENAME; return QStandardPaths::writableLocation(QStandardPaths::DataLocation) + "/" + RUNNING_MARKER_FILENAME;
} }

View file

@ -575,6 +575,7 @@ Menu::Menu() {
addCheckableActionToQMenuAndActionHash(physicsOptionsMenu, MenuOption::PhysicsShowOwned); addCheckableActionToQMenuAndActionHash(physicsOptionsMenu, MenuOption::PhysicsShowOwned);
addCheckableActionToQMenuAndActionHash(physicsOptionsMenu, MenuOption::PhysicsShowHulls); addCheckableActionToQMenuAndActionHash(physicsOptionsMenu, MenuOption::PhysicsShowHulls);
addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::DisplayCrashOptions, 0, true);
addActionToQMenuAndActionHash(developerMenu, MenuOption::CrashInterface, 0, qApp, SLOT(crashApplication())); addActionToQMenuAndActionHash(developerMenu, MenuOption::CrashInterface, 0, qApp, SLOT(crashApplication()));
MenuWrapper* helpMenu = addMenu("Help"); MenuWrapper* helpMenu = addMenu("Help");

View file

@ -173,6 +173,7 @@ namespace MenuOption {
const QString DisableLightEntities = "Disable Light Entities"; const QString DisableLightEntities = "Disable Light Entities";
const QString DisableNackPackets = "Disable Entity NACK Packets"; const QString DisableNackPackets = "Disable Entity NACK Packets";
const QString DiskCacheEditor = "Disk Cache Editor"; const QString DiskCacheEditor = "Disk Cache Editor";
const QString DisplayCrashOptions = "Display Crash Options";
const QString DisplayHands = "Show Hand Info"; const QString DisplayHands = "Show Hand Info";
const QString DisplayHandTargets = "Show Hand Targets"; const QString DisplayHandTargets = "Show Hand Targets";
const QString DisplayModelBounds = "Display Model Bounds"; const QString DisplayModelBounds = "Display Model Bounds";

View file

@ -35,9 +35,9 @@ namespace Setting {
settingsManagerThread->quit(); settingsManagerThread->quit();
settingsManagerThread->wait(); settingsManagerThread->wait();
} }
// Sets up the settings private instance. Should only be run once at startup // Set up application settings. Should only be run once at startup.
void init() { void preInit() {
// read the ApplicationInfo.ini file for Name/Version/Domain information // read the ApplicationInfo.ini file for Name/Version/Domain information
QSettings::setDefaultFormat(QSettings::IniFormat); QSettings::setDefaultFormat(QSettings::IniFormat);
QSettings applicationInfo(PathUtils::resourcesPath() + "info/ApplicationInfo.ini", QSettings::IniFormat); QSettings applicationInfo(PathUtils::resourcesPath() + "info/ApplicationInfo.ini", QSettings::IniFormat);
@ -46,7 +46,10 @@ namespace Setting {
QCoreApplication::setApplicationName(applicationInfo.value("name").toString()); QCoreApplication::setApplicationName(applicationInfo.value("name").toString());
QCoreApplication::setOrganizationName(applicationInfo.value("organizationName").toString()); QCoreApplication::setOrganizationName(applicationInfo.value("organizationName").toString());
QCoreApplication::setOrganizationDomain(applicationInfo.value("organizationDomain").toString()); QCoreApplication::setOrganizationDomain(applicationInfo.value("organizationDomain").toString());
}
// Sets up the settings private instance. Should only be run once at startup. preInit() must be run beforehand,
void init() {
// Let's set up the settings Private instance on its own thread // Let's set up the settings Private instance on its own thread
QThread* thread = new QThread(); QThread* thread = new QThread();
Q_CHECK_PTR(thread); Q_CHECK_PTR(thread);

View file

@ -16,6 +16,7 @@
#include <QVariant> #include <QVariant>
namespace Setting { namespace Setting {
void preInit();
void init(); void init();
void cleanupSettings(); void cleanupSettings();