save custom domain server hostname to QSettings

This commit is contained in:
Stephen Birarda 2013-07-18 17:23:52 -07:00
parent 30be3f9a4e
commit 01e6891fd3
3 changed files with 60 additions and 19 deletions

View file

@ -235,6 +235,31 @@ Application::Application(int& argc, char** argv, timeval &startup_time) :
NodeList::getInstance()->getNodeSocket()->setBlocking(false);
}
// setup QSettings
#ifdef Q_WS_MAC
QString resourcesPath = QCoreApplication::applicationDirPath() + "/../Resources";
#else
QString resourcesPath = QCoreApplication::applicationDirPath() + "/resources";
#endif
// read the ApplicationInfo.ini file for Name/Version/Domain information
QSettings applicationInfo(resourcesPath + "/info/ApplicationInfo.ini", QSettings::IniFormat);
// set the associated application properties
applicationInfo.beginGroup("INFO");
setApplicationName(applicationInfo.value("name").toString());
setApplicationVersion(applicationInfo.value("version").toString());
setOrganizationName(applicationInfo.value("organizationName").toString());
setOrganizationDomain(applicationInfo.value("organizationDomain").toString());
_settings = new QSettings(this);
// check if there is a saved domain server hostname
// this must be done now instead of with the other setting checks to allow manual override with
// --domain or --local options
NodeList::getInstance()->loadData(_settings);
const char* domainIP = getCmdOption(argc, constArgv, "--domain");
if (domainIP) {
NodeList::getInstance()->setDomainIP(domainIP);
@ -268,23 +293,6 @@ Application::Application(int& argc, char** argv, timeval &startup_time) :
_window->setCentralWidget(_glWidget);
#ifdef Q_WS_MAC
QString resourcesPath = QCoreApplication::applicationDirPath() + "/../Resources";
#else
QString resourcesPath = QCoreApplication::applicationDirPath() + "/resources";
#endif
// read the ApplicationInfo.ini file for Name/Version/Domain information
QSettings applicationInfo(resourcesPath + "/info/ApplicationInfo.ini", QSettings::IniFormat);
// set the associated application properties
applicationInfo.beginGroup("INFO");
setApplicationName(applicationInfo.value("name").toString());
setApplicationVersion(applicationInfo.value("version").toString());
setOrganizationName(applicationInfo.value("organizationName").toString());
setOrganizationDomain(applicationInfo.value("organizationDomain").toString());
#if defined(Q_WS_MAC) && defined(QT_NO_DEBUG)
// if this is a release OS X build use fervor to check for an update
FvUpdater::sharedUpdater()->SetFeedURL("https://s3-us-west-1.amazonaws.com/highfidelity/appcast.xml");
@ -1781,7 +1789,6 @@ void Application::initMenu() {
settingsMenu->addAction("Export settings", this, SLOT(exportSettings()));
_networkAccessManager = new QNetworkAccessManager(this);
_settings = new QSettings(this);
}
void Application::updateFrustumRenderModeAction() {
@ -3451,7 +3458,7 @@ void Application::saveSettings(QSettings* settings) {
if (!settings) {
settings = getSettings();
}
settings->setValue("headCameraPitchYawScale", _headCameraPitchYawScale);
settings->setValue("audioJitterBufferSamples", _audioJitterBufferSamples);
settings->setValue("horizontalFieldOfView", _horizontalFieldOfView);
@ -3466,6 +3473,9 @@ void Application::saveSettings(QSettings* settings) {
scanMenuBar(&Application::saveAction, settings);
getAvatar()->saveData(settings);
_swatch.saveData(settings);
// ask the NodeList to save its data
NodeList::getInstance()->saveData(settings);
}
void Application::importSettings() {

View file

@ -499,6 +499,32 @@ void NodeList::startSilentNodeRemovalThread() {
void NodeList::stopSilentNodeRemovalThread() {
silentNodeThreadStopFlag = true;
pthread_join(removeSilentNodesThread, NULL);
}
const QString QSETTINGS_GROUP_NAME = "NodeList";
const QString DOMAIN_SERVER_SETTING_KEY = "domainServerHostname";
void NodeList::loadData(QSettings *settings) {
settings->beginGroup(DOMAIN_SERVER_SETTING_KEY);
QString domainServerHostname = settings->value(DOMAIN_SERVER_SETTING_KEY).toString();
if (domainServerHostname.size() > 0) {
memset(_domainHostname, 0, MAX_HOSTNAME_BYTES);
memcpy(_domainHostname, domainServerHostname.toAscii().constData(), domainServerHostname.size());
}
settings->endGroup();
}
void NodeList::saveData(QSettings* settings) {
if (memcmp(_domainHostname, DEFAULT_DOMAIN_HOSTNAME, strlen(DEFAULT_DOMAIN_HOSTNAME)) != 0) {
// the user is using a different hostname, store it
settings->beginGroup(DOMAIN_SERVER_SETTING_KEY);
settings->setValue(DOMAIN_SERVER_SETTING_KEY, QVariant(_domainHostname));
settings->endGroup();
}
}
NodeList::iterator NodeList::begin() const {

View file

@ -14,6 +14,8 @@
#include <iterator>
#include <unistd.h>
#include <QSettings>
#include "Node.h"
#include "UDPSocket.h"
@ -99,6 +101,9 @@ public:
void startSilentNodeRemovalThread();
void stopSilentNodeRemovalThread();
void loadData(QSettings* settings);
void saveData(QSettings* settings);
friend class NodeListIterator;
private:
static NodeList* _sharedInstance;