/* # Copyright (c) 2010,2011 - RZ Uni Freiburg # Copyright (c) 2010,2011 - OpenSLX Project # # This program/file is free software distributed under the GPL version 2. # See http://openslx.org/COPYING # # If you have any feedback please consult http://openslx.org/feedback and # send your feedback to feedback@openslx.org # # General information about OpenSLX can be found under http://openslx.org # # # Main class of the fbgui: # - Manages display of components and their communications # */ #ifndef FBGUI_H #define FBGUI_H #include #include #include #include // Internal default settings #define DEFAULT_URL "http://www.google.com" #define DEFAULT_DOWNLOAD_DIR "/tmp/fbgui/downloads" #define DEFAULT_CONFIG_PATH "/etc/fbgui.conf" #define DEFAULT_UPDATE_INTERVAL 1; #define DEFAULT_QRC_HTML_DIR ":/html" #define DEFAULT_FILE_TRIGGER "/tmp/fbgui/trigger" // Global settings variables extern QString ipConfigFilePath; extern QThread dmThread; extern QString serialLocation; extern QString fileToTriggerURL; extern QString sessionID; extern QString binPath; extern QString downloadPath; extern QUrl baseURL; extern int debugMode; extern int updateInterval; class fbgui: public QMainWindow { Q_OBJECT public: fbgui(); ~fbgui(); private: //------------------- // layout setup: //------------------- // Sets the layout depending on the debug mode: // no debug or debugMode = 0 -> only browser shown. // debugMode = 1 -> split main window in browser and debug console. void setupLayout(); // Create all actions for the GUI. (Currently only quit.) void createActions(); // Create a debug console widget as QTextEdit in order to print debug messages // directly within the GUI. This was needed since ttys can't really be used // for debugging purposes in the preboot environment. void createDebugConsole(); //---------------------------------------- // control the display of components: //---------------------------------------- // watches for the file triggering the loading of the URL. // the file can be specified by the corresponding option. void watchForTrigger(); bool checkHost() const; void loadURL(); QByteArray generatePOSTData(); //---------------------------------- // widgets constituing the gui: //---------------------------------- // QWebView for displaying internet content QWebView* _webView; // QSplitter to split the main window in two resizable frames. QSplitter* _splitter; // QTextEdit implementing a minimalistic debug console. QTextEdit* _debugConsole; //------------------ // action list: //------------------ // closes the main window provoking the application to quit. QAction* _quit; // triggers toggleDebugConsole() QAction* _toggleDebugConsole; // watcher to detect changes in the observed directory. QFileSystemWatcher* _watcher; private slots: // toggles debug console when action _toggleDebugConsole happens. void toggleDebugConsole(); // triggered by fileChanged Signal of _watcher // deletes _watcher, since we don't need it anymore and tries to load URL. void prepareURLLoad(); // shut off the system void performShutDown(); // reboot the system void performReboot(); // prepareKexec void prepareKexec(); void runKexec(); }; #endif // FBGUI_H