From 45c97640739198cf9a9cc5c42e81fb9811702b46 Mon Sep 17 00:00:00 2001 From: Tomaz Canabrava Date: Thu, 3 Sep 2015 14:49:59 -0300 Subject: main.cpp -> {android-main, desktop-main} This is needed to compile both in a single call to make. Also it will help removing some of the mistakes in the current android version: it always created the mainwindow, even without using it for anything, so tons of memory will be freed now for the android version, making it snappier and smoother. This is a necessary move so we don't need to #ifdef all over the place for the two different versions, and imo the changes needed to keep both versions will not be that huge if we keep things in subsurface-core sane. Signed-off-by: Tomaz Canabrava Signed-off-by: Dirk Hohndel --- subsurface-desktop-main.cpp | 97 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 subsurface-desktop-main.cpp (limited to 'subsurface-desktop-main.cpp') diff --git a/subsurface-desktop-main.cpp b/subsurface-desktop-main.cpp new file mode 100644 index 000000000..e7259c3f3 --- /dev/null +++ b/subsurface-desktop-main.cpp @@ -0,0 +1,97 @@ +/* main.c */ +#include +#include +#include +#include +#include + +#include "dive.h" +#include "qt-gui.h" +#include "subsurfacestartup.h" +#include "desktop-widgets/mainwindow.h" +#include "desktop-widgets/diveplanner.h" +#include "subsurface-core/color.h" +#include "qthelper.h" + +#include +#include +#include +#include + +QTranslator *qtTranslator, *ssrfTranslator; + +int main(int argc, char **argv) +{ + int i; + bool no_filenames = true; + QLoggingCategory::setFilterRules(QStringLiteral("qt.bluetooth* = true")); + QApplication *application = new QApplication(argc, argv); + QStringList files; + QStringList importedFiles; + QStringList arguments = QCoreApplication::arguments(); + + bool dedicated_console = arguments.length() > 1 && + (arguments.at(1) == QString("--win32console")); + subsurface_console_init(dedicated_console); + + const char *default_directory = system_default_directory(); + const char *default_filename = system_default_filename(); + subsurface_mkdir(default_directory); + + for (i = 1; i < arguments.length(); i++) { + QString a = arguments.at(i); + if (a.isEmpty()) + continue; + if (a.at(0) == '-') { + parse_argument(a.toLocal8Bit().data()); + continue; + } + if (imported) { + importedFiles.push_back(a); + } else { + no_filenames = false; + files.push_back(a); + } + } +#if !LIBGIT2_VER_MAJOR && LIBGIT2_VER_MINOR < 22 + git_threads_init(); +#else + git_libgit2_init(); +#endif + setup_system_prefs(); + copy_prefs(&default_prefs, &prefs); + fill_profile_color(); + parse_xml_init(); + taglist_init_global(); + init_ui(); + if (no_filenames) { + if (prefs.default_file_behavior == LOCAL_DEFAULT_FILE) { + QString defaultFile(prefs.default_filename); + if (!defaultFile.isEmpty()) + files.push_back(QString(prefs.default_filename)); + } else if (prefs.default_file_behavior == CLOUD_DEFAULT_FILE) { + QString cloudURL; + if (getCloudURL(cloudURL) == 0) + files.push_back(cloudURL); + } + } + MainWindow *m = MainWindow::instance(); + m->setLoadedWithFiles(!files.isEmpty() || !importedFiles.isEmpty()); + m->loadFiles(files); + m->importFiles(importedFiles); + // in case something has gone wrong make sure we show the error message + m->showError(); + + if (verbose > 0) + print_files(); + if (!quit) + run_ui(); + exit_ui(); + taglist_free(g_tag_list); + parse_xml_exit(); + free((void *)default_directory); + free((void *)default_filename); + subsurface_console_exit(); + free_prefs(); + return 0; +} -- cgit v1.2.3-70-g09d2