summaryrefslogtreecommitdiffstats
path: root/subsurface-desktop-main.cpp
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2015-11-02 19:54:34 -0800
committerGravatar Dirk Hohndel <dirk@hohndel.org>2015-11-02 19:54:34 -0800
commit8ea7f404574c2ee571d2dde6bb6be3791e962150 (patch)
tree6a050178bfc71bf10558968f2a3bc0a12d8c525f /subsurface-desktop-main.cpp
parentb273c1b0ca7bfe933e7c83742f1610f6bbe3f4d3 (diff)
parentdf7818a9b8495285b4d9812e5d6d50d6f9c08813 (diff)
downloadsubsurface-8ea7f404574c2ee571d2dde6bb6be3791e962150.tar.gz
Merge branch 'cmakeAndPreferences'
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;
+}