mirror of
https://github.com/subsurface/subsurface.git
synced 2024-12-01 06:30:26 +00:00
7564c89360
We use random numbers for file names, both temporary filename when creating a zip for divelogs.de upload and for filename on form data for facebook upload. This does not require for true randomness but we still want these to not be constant on each run of Subsurface. Thus we need to initialize the random number generator. Signed-off-by: Miika Turkia <miika.turkia@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
116 lines
2.9 KiB
C++
116 lines
2.9 KiB
C++
/* 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/maintab.h"
|
|
#include "profile-widget/profilewidget2.h"
|
|
#include "preferences/preferencesdialog.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;
|
|
|
|
static bool filesOnCommandLine = false;
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
int i;
|
|
bool no_filenames = true;
|
|
QLoggingCategory::setFilterRules(QStringLiteral("qt.bluetooth* = true"));
|
|
QApplication *application = new QApplication(argc, argv);
|
|
(void)application;
|
|
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
|
|
/*
|
|
* Initialize the random number generator - not really secure as
|
|
* this is based only on current time, but it should not matter
|
|
* that much in our context. Moreover this is better than
|
|
* the constant numbers we used to get before.
|
|
*/
|
|
qsrand(time(NULL));
|
|
|
|
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();
|
|
filesOnCommandLine = !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;
|
|
}
|
|
|
|
bool haveFilesOnCommandLine()
|
|
{
|
|
return filesOnCommandLine;
|
|
}
|