00001 #include <cstdlib>
00002 #include <sys/types.h>
00003 #include <sys/stat.h>
00004 #include <fcntl.h>
00005 #include <unistd.h>
00006
00007
00008 #include <QApplication>
00009 #include <QFileInfo>
00010 #include <QDir>
00011
00012
00013 #include "mythcontext.h"
00014 #include "mythversion.h"
00015 #include "mythtranslation.h"
00016 #include "mythdbcon.h"
00017 #include "exitcodes.h"
00018 #include "compat.h"
00019 #include "lcddevice.h"
00020 #include "commandlineparser.h"
00021 #include "tv.h"
00022 #include "mythlogging.h"
00023
00024
00025 #include "mythmainwindow.h"
00026 #include "mythuihelper.h"
00027
00028
00029 #include "welcomedialog.h"
00030 #include "welcomesettings.h"
00031
00032
00033 static void initKeys(void)
00034 {
00035 REG_KEY("Welcome", "STARTXTERM", QT_TRANSLATE_NOOP("MythControls",
00036 "Open an Xterm window"), "F12");
00037 REG_KEY("Welcome", "SHOWSETTINGS", QT_TRANSLATE_NOOP("MythControls",
00038 "Show Mythshutdown settings"), "F11");
00039 REG_KEY("Welcome", "STARTSETUP", QT_TRANSLATE_NOOP("MythControls",
00040 "Start Mythtv-Setup"), "");
00041 }
00042
00043 int main(int argc, char **argv)
00044 {
00045 bool bShowSettings = false;
00046
00047 MythWelcomeCommandLineParser cmdline;
00048 if (!cmdline.Parse(argc, argv))
00049 {
00050 cmdline.PrintHelp();
00051 return GENERIC_EXIT_INVALID_CMDLINE;
00052 }
00053
00054 if (cmdline.toBool("showhelp"))
00055 {
00056 cmdline.PrintHelp();
00057 return GENERIC_EXIT_OK;
00058 }
00059
00060 if (cmdline.toBool("showversion"))
00061 {
00062 cmdline.PrintVersion();
00063 return GENERIC_EXIT_OK;
00064 }
00065
00066 QApplication a(argc, argv);
00067 QCoreApplication::setApplicationName(MYTH_APPNAME_MYTHWELCOME);
00068
00069 int retval;
00070 if ((retval = cmdline.ConfigureLogging()) != GENERIC_EXIT_OK)
00071 return retval;
00072
00073 if (cmdline.toBool("setup"))
00074 bShowSettings = true;
00075
00076 gContext = new MythContext(MYTH_BINARY_VERSION);
00077 if (!gContext->Init())
00078 {
00079 LOG(VB_GENERAL, LOG_ERR,
00080 "mythwelcome: Could not initialize MythContext. Exiting.");
00081 return GENERIC_EXIT_NO_MYTHCONTEXT;
00082 }
00083
00084 if (!MSqlQuery::testDBConnection())
00085 {
00086 LOG(VB_GENERAL, LOG_ERR,
00087 "mythwelcome: Could not open the database. Exiting.");
00088 return -1;
00089 }
00090
00091 LCD::SetupLCD();
00092
00093 if (LCD *lcd = LCD::Get())
00094 lcd->switchToTime();
00095
00096 MythTranslation::load("mythfrontend");
00097
00098 GetMythUI()->LoadQtConfig();
00099
00100 MythMainWindow *mainWindow = GetMythMainWindow();
00101 mainWindow->Init();
00102
00103 initKeys();
00104
00105 if (bShowSettings)
00106 {
00107 MythShutdownSettings settings;
00108 settings.exec();
00109 }
00110 else
00111 {
00112 MythScreenStack *mainStack = GetMythMainWindow()->GetMainStack();
00113
00114 WelcomeDialog *welcome = new WelcomeDialog(mainStack, "mythwelcome");
00115
00116 if (welcome->Create())
00117 mainStack->AddScreen(welcome, false);
00118 else
00119 return -1;
00120
00121 do
00122 {
00123 qApp->processEvents();
00124 usleep(5000);
00125 } while (mainStack->TotalScreens() > 0);
00126 }
00127
00128 DestroyMythMainWindow();
00129
00130 delete gContext;
00131
00132 return 0;
00133 }