int main(int argc, char **argv) { bool bShowSettings = false; MythWelcomeCommandLineParser cmdline; if (!cmdline.Parse(argc, argv)) { cmdline.PrintHelp(); return GENERIC_EXIT_INVALID_CMDLINE; } if (cmdline.toBool("showhelp")) { cmdline.PrintHelp(); return GENERIC_EXIT_OK; } if (cmdline.toBool("showversion")) { cmdline.PrintVersion(); return GENERIC_EXIT_OK; } QApplication a(argc, argv); QCoreApplication::setApplicationName(MYTH_APPNAME_MYTHWELCOME); int retval; if ((retval = cmdline.ConfigureLogging()) != GENERIC_EXIT_OK) return retval; if (cmdline.toBool("setup")) bShowSettings = true; #ifndef _WIN32 QList<int> signallist; signallist << SIGINT << SIGTERM << SIGSEGV << SIGABRT << SIGBUS << SIGFPE << SIGILL; SignalHandler handler(signallist); signal(SIGHUP, SIG_IGN); #endif gContext = new MythContext(MYTH_BINARY_VERSION); if (!gContext->Init()) { LOG(VB_GENERAL, LOG_ERR, "mythwelcome: Could not initialize MythContext. Exiting."); return GENERIC_EXIT_NO_MYTHCONTEXT; } if (!MSqlQuery::testDBConnection()) { LOG(VB_GENERAL, LOG_ERR, "mythwelcome: Could not open the database. Exiting."); return -1; } LCD::SetupLCD(); if (LCD *lcd = LCD::Get()) lcd->switchToTime(); MythTranslation::load("mythfrontend"); GetMythUI()->LoadQtConfig(); MythMainWindow *mainWindow = GetMythMainWindow(); mainWindow->Init(); initKeys(); if (bShowSettings) { MythShutdownSettings settings; settings.exec(); } else { MythScreenStack *mainStack = GetMythMainWindow()->GetMainStack(); WelcomeDialog *welcome = new WelcomeDialog(mainStack, "mythwelcome"); if (welcome->Create()) mainStack->AddScreen(welcome, false); else return -1; do { qApp->processEvents(); usleep(5000); } while (mainStack->TotalScreens() > 0); } DestroyMythMainWindow(); delete gContext; return 0; }
int main(int argc, char **argv) { bool bShowSettings = false; bool cmdline_err; MythCommandLineParser cmdline( kCLPOverrideSettingsFile | kCLPOverrideSettings | kCLPQueryVersion); for (int argpos = 0; argpos < argc; ++argpos) { if (cmdline.PreParse(argc, argv, argpos, cmdline_err)) { if (cmdline_err) return GENERIC_EXIT_INVALID_CMDLINE; if (cmdline.WantsToExit()) return GENERIC_EXIT_OK; } } QApplication a(argc, argv); QFileInfo finfo(a.argv()[0]); QString binname = finfo.baseName(); // Check command line arguments for (int argpos = 1; argpos < a.argc(); ++argpos) { if (!strcmp(a.argv()[argpos],"-v") || !strcmp(a.argv()[argpos],"--verbose")) { if (a.argc()-1 > argpos) { if (parse_verbose_arg(a.argv()[argpos+1]) == GENERIC_EXIT_INVALID_CMDLINE) return GENERIC_EXIT_INVALID_CMDLINE; ++argpos; } else { cerr << "Missing argument to -v/--verbose option\n"; return GENERIC_EXIT_INVALID_CMDLINE; } } else if (!strcmp(a.argv()[argpos],"-s") || !strcmp(a.argv()[argpos],"--setup")) { bShowSettings = true; } else if (!strcmp(a.argv()[argpos], "-l") || !strcmp(a.argv()[argpos], "--logfile")) { if (a.argc()-1 > argpos) { logfile = a.argv()[argpos+1]; if (logfile.startsWith("-")) { cerr << "Invalid or missing argument to -l/--logfile option\n"; return GENERIC_EXIT_INVALID_CMDLINE; } else { ++argpos; } } else { cerr << "Missing argument to -l/--logfile option\n"; return GENERIC_EXIT_INVALID_CMDLINE; } } else if (cmdline.Parse(a.argc(), a.argv(), argpos, cmdline_err)) { if (cmdline_err) return GENERIC_EXIT_INVALID_CMDLINE; if (cmdline.WantsToExit()) return GENERIC_EXIT_OK; } else { showUsage(cmdline); return GENERIC_EXIT_INVALID_CMDLINE; } } gContext = new MythContext(MYTH_BINARY_VERSION); if (!gContext->Init()) { VERBOSE(VB_IMPORTANT, "mythwelcome: Could not initialize MythContext. " "Exiting."); return GENERIC_EXIT_NO_MYTHCONTEXT; } gCoreContext->SetAppName(binname); if (!MSqlQuery::testDBConnection()) { VERBOSE(VB_IMPORTANT, "mythwelcome: Could not open the database. " "Exiting."); return -1; } if (!logfile.isEmpty()) { if (!log_rotate(true)) cerr << "cannot open logfile; using stdout/stderr" << endl; else signal(SIGHUP, &log_rotate_handler); } LCD::SetupLCD(); if (LCD *lcd = LCD::Get()) lcd->switchToTime(); MythTranslation::load("mythfrontend"); GetMythUI()->LoadQtConfig(); #ifdef Q_WS_MACX // Mac OS 10.4 and Qt 4.4 have window-focus problems gCoreContext->SetSetting("RunFrontendInWindow", "1"); #endif MythMainWindow *mainWindow = GetMythMainWindow(); mainWindow->Init(); initKeys(); if (bShowSettings) { MythShutdownSettings settings; settings.exec(); } else { MythScreenStack *mainStack = GetMythMainWindow()->GetMainStack(); WelcomeDialog *welcome = new WelcomeDialog(mainStack, "mythwelcome"); if (welcome->Create()) mainStack->AddScreen(welcome, false); else return -1; do { qApp->processEvents(); usleep(5000); } while (mainStack->TotalScreens() > 0); } DestroyMythMainWindow(); delete gContext; return 0; }