diff options
author | Tomaz Canabrava <tomaz.canabrava@intel.com> | 2015-09-03 14:49:59 -0300 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2015-10-30 10:36:49 -0700 |
commit | 45c97640739198cf9a9cc5c42e81fb9811702b46 (patch) | |
tree | 4390fe4387d073ac7802bb6bff3bc0bbe69a836d /subsurface-desktop-main.cpp | |
parent | e49d6213ad129284a45d53c3fcdc03249e84efe2 (diff) | |
download | subsurface-45c97640739198cf9a9cc5c42e81fb9811702b46.tar.gz |
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 <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'subsurface-desktop-main.cpp')
-rw-r--r-- | subsurface-desktop-main.cpp | 97 |
1 files changed, 97 insertions, 0 deletions
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 <locale.h> +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <time.h> + +#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 <QStringList> +#include <QApplication> +#include <QLoggingCategory> +#include <git2.h> + +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; +} |