Main: separate the QApplication and UI creation

When some arguments like --help and --version are passed to the
executable, we don't need to create the UI at all.

This patch separates the QApplication creation which is at first
only needed to parse the arguments and then if exit() is not
called from subsurfacestartup.c, we can call some of the
"init" methods such as setup_system_prefs(), fill_profile_color()
etc.

At this point init_ui() can be called which no longer needs
to accept the command line argument list.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Lubomir I. Ivanov 2014-03-19 18:23:43 +02:00 committed by Dirk Hohndel
parent 71f2fd91b5
commit ee2e43f11a
3 changed files with 18 additions and 17 deletions

View file

@ -19,13 +19,7 @@ int main(int argc, char **argv)
int i;
bool no_filenames = true;
setup_system_prefs();
prefs = default_prefs;
fill_profile_color();
init_ui(&argc, &argv);
parse_xml_init();
taglist_init_global();
init_qt(&argc, &argv);
QStringList files;
QStringList importedFiles;
QStringList arguments = QCoreApplication::arguments();
@ -47,13 +41,20 @@ int main(int argc, char **argv)
if (!defaultFile.isEmpty())
files.push_back(QString(prefs.default_filename));
}
parse_xml_exit();
setup_system_prefs();
prefs = default_prefs;
fill_profile_color();
parse_xml_init();
taglist_init_global();
init_ui();
MainWindow *m = MainWindow::instance();
m->setLoadedWithFiles( !files.isEmpty() || !importedFiles.isEmpty());
m->setLoadedWithFiles(!files.isEmpty() || !importedFiles.isEmpty());
m->loadFiles(files);
m->importFiles(importedFiles);
if (!quit)
run_ui();
exit_ui();
parse_xml_exit();
return 0;
}

View file

@ -78,12 +78,14 @@ static QString decodeUtf8(const QByteArray &fname)
}
#endif
void init_ui(int *argcp, char ***argvp)
void init_qt(int *argcp, char ***argvp)
{
application = new QApplication(*argcp, *argvp);
}
void init_ui(void)
{
QVariant v;
application = new QApplication(*argcp, *argvp);
// tell Qt to use system proxies
// note: on Linux, "system" == "environment variables"
QNetworkProxyFactory::setUseSystemConfiguration(true);
@ -155,8 +157,6 @@ void init_ui(int *argcp, char ***argvp)
window->setTitle(MWTF_FILENAME);
else
window->setTitle(MWTF_DEFAULT);
return;
}
void run_ui(void)

View file

@ -1,8 +1,8 @@
#ifndef QT_GUI_H
#define QT_GUI_H
void init_ui(int *argcp, char ***argvp);
void init_qt_ui(int *argcp, char ***argvp, char *errormessage);
void init_qt(int *argcp, char ***argvp);
void init_ui(void);
void run_ui(void);
void exit_ui(void);