mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Allow switching the user from the command line
This is a feature that many people have asked for. This implementation is somewhat simplistic because we simply use a different name for the program settings - but interestingly enough this appears to be enough to capture a lot of the core functionality that people are looking for in multi-user support. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
f536da0ee3
commit
3f63660267
3 changed files with 20 additions and 2 deletions
|
@ -4,6 +4,8 @@
|
|||
#include <QTextCodec>
|
||||
#include "helpers.h"
|
||||
|
||||
char *settings_suffix = NULL;
|
||||
|
||||
void init_qt_late()
|
||||
{
|
||||
QApplication *application = qApp;
|
||||
|
@ -19,7 +21,14 @@ void init_qt_late()
|
|||
|
||||
QCoreApplication::setOrganizationName("Subsurface");
|
||||
QCoreApplication::setOrganizationDomain("subsurface.hohndel.org");
|
||||
QCoreApplication::setApplicationName("Subsurface");
|
||||
// enable user specific settings (based on command line argument)
|
||||
if (settings_suffix) {
|
||||
if (verbose)
|
||||
qDebug() << "using custom config for" << QString("Subsurface-%1").arg(settings_suffix);
|
||||
QCoreApplication::setApplicationName(QString("Subsurface-%1").arg(settings_suffix));
|
||||
} else {
|
||||
QCoreApplication::setApplicationName("Subsurface");
|
||||
}
|
||||
// find plugins installed in the application directory (without this SVGs don't work on Windows)
|
||||
QCoreApplication::addLibraryPath(QCoreApplication::applicationDirPath());
|
||||
QLocale loc;
|
||||
|
|
|
@ -197,6 +197,11 @@ void parse_argument(const char *arg)
|
|||
continue;
|
||||
case '-':
|
||||
/* long options with -- */
|
||||
/* first test for --user=bla which allows the use of user specific settings */
|
||||
if (strncmp(arg, "--user=", sizeof("--user=") - 1) == 0) {
|
||||
settings_suffix = strdup(arg + sizeof("--user=") - 1);
|
||||
return;
|
||||
}
|
||||
if (strcmp(arg, "--help") == 0) {
|
||||
print_help();
|
||||
exit(0);
|
||||
|
@ -254,8 +259,10 @@ void setup_system_prefs(void)
|
|||
subsurface_OS_pref_setup();
|
||||
default_prefs.divelist_font = strdup(system_divelist_default_font);
|
||||
default_prefs.font_size = system_divelist_default_font_size;
|
||||
default_prefs.default_filename = system_default_filename();
|
||||
|
||||
#if !defined(SUBSURFACE_MOBILE)
|
||||
default_prefs.default_filename = system_default_filename();
|
||||
#endif
|
||||
env = getenv("LC_MEASUREMENT");
|
||||
if (!env)
|
||||
env = getenv("LC_ALL");
|
||||
|
|
|
@ -19,6 +19,8 @@ void free_prefs(void);
|
|||
void copy_prefs(struct preferences *src, struct preferences *dest);
|
||||
void print_files(void);
|
||||
|
||||
extern char *settings_suffix;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
Loading…
Add table
Reference in a new issue