summaryrefslogtreecommitdiffstats
path: root/subsurface-desktop-main.cpp
diff options
context:
space:
mode:
authorGravatar Tomaz Canabrava <tomaz.canabrava@intel.com>2015-09-03 14:49:59 -0300
committerGravatar Dirk Hohndel <dirk@hohndel.org>2015-10-30 10:36:49 -0700
commit45c97640739198cf9a9cc5c42e81fb9811702b46 (patch)
tree4390fe4387d073ac7802bb6bff3bc0bbe69a836d /subsurface-desktop-main.cpp
parente49d6213ad129284a45d53c3fcdc03249e84efe2 (diff)
downloadsubsurface-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.cpp97
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;
+}