From ce42f447314d241d725f77d4dd12b00f7ca5a7b6 Mon Sep 17 00:00:00 2001
From: Jonathan Bauer
Date: Sun, 24 Apr 2011 02:22:03 +0200
Subject: download manager threaded again, debug preload page
---
src/html/preload-debug.html | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
(limited to 'src/html/preload-debug.html')
diff --git a/src/html/preload-debug.html b/src/html/preload-debug.html
index cc69aa1..0aad6c5 100644
--- a/src/html/preload-debug.html
+++ b/src/html/preload-debug.html
@@ -13,13 +13,13 @@ function quitgui(){
--
cgit v1.2.3-55-g7522
From 03ac351f38316d8f923f3797aa7dd0deade7ed5d Mon Sep 17 00:00:00 2001
From: Jonathan Bauer
Date: Sun, 24 Apr 2011 21:36:26 +0200
Subject: url status handling, 5sec delay before closing gui when exiting with
failure (not actually returning 1 atm), lots of formatting...
---
src/downloadmanager.cpp | 160 ++++++++++++++++++++------------------------
src/downloadmanager.h | 57 ++++++++--------
src/fbgui.cpp | 82 ++++++++++++-----------
src/fbgui.h | 34 +++++-----
src/fbgui.qrc | 4 +-
src/html/background.png | Bin 0 -> 316905 bytes
src/html/bg.png | Bin 316905 -> 0 bytes
src/html/preload-debug.html | 2 +-
src/html/preload.css | 97 +++++++++++++++++++++++++++
src/html/preload.html | 2 +-
src/html/style.css | 97 ---------------------------
src/javascriptinterface.cpp | 20 +++---
src/javascriptinterface.h | 36 +++++-----
src/loggerengine.cpp | 16 ++---
src/loggerengine.h | 31 +++++----
src/main.cpp | 39 +++++------
src/sysinfo.cpp | 30 +++------
src/sysinfo.h | 28 ++++----
src/sysinfolibsysfs.cpp | 15 ++---
src/sysinfolibsysfs.h | 36 +++++-----
20 files changed, 377 insertions(+), 409 deletions(-)
create mode 100644 src/html/background.png
delete mode 100644 src/html/bg.png
create mode 100644 src/html/preload.css
delete mode 100644 src/html/style.css
(limited to 'src/html/preload-debug.html')
diff --git a/src/downloadmanager.cpp b/src/downloadmanager.cpp
index 22c1c09..8f7d8bb 100644
--- a/src/downloadmanager.cpp
+++ b/src/downloadmanager.cpp
@@ -1,55 +1,48 @@
#include "downloadmanager.h"
-int DownloadManager::downloaded = 0;
+int DownloadManager::_downloaded = 0;
// -------------------------------------------------------------------------------------------------------
DownloadManager::DownloadManager() {
qxtLog->debug() << "Initializing download manager...";
- checkDownloadDirectory();
+ check_downloadDirectory();
_qnam = new QNetworkAccessManager();
_qnam->moveToThread(&dmThread);
- dip = false;
+ _dip = false;
}
DownloadManager::~DownloadManager() {
delete _qnam;
}
// -------------------------------------------------------------------------------------------------------
-void DownloadManager::checkDownloadDirectory() {
+void DownloadManager::check_downloadDirectory() {
// check if downloadPath exists, if not create it.
- downloadDir = QDir(downloadPath);
- if (!downloadDir.exists()) {
- qxtLog->debug() << "[dm] Download directory: " << downloadDir.path()
- << " doesn't exist.";
+ _downloadDir = QDir(downloadPath);
+ if (!_downloadDir.exists()) {
+ qxtLog->debug() << "[dm] Download directory: " << _downloadDir.path() << " doesn't exist.";
// try to create the directory
if (QDir::current().mkdir(downloadPath))
- qxtLog->debug() << "[dm] Created download directory: "
- << downloadDir.path();
+ qxtLog->debug() << "[dm] Created download directory: " << _downloadDir.path();
else {
- qxtLog->debug() << "[dm] Failed to create directory: "
- << downloadDir.path();
+ qxtLog->debug() << "[dm] Failed to create directory: " << _downloadDir.path();
// try to save to /tmp/fbgui
- downloadDir.setPath(QDir::tempPath() + "/fbgui");
- if (!downloadDir.exists()) {
+ _downloadDir.setPath(QDir::tempPath() + "/fbgui");
+ if (!_downloadDir.exists()) {
if (QDir::current().mkdir(QDir::tempPath() + "/fbgui"))
- qxtLog->debug() << "[dm] Successfully created: "
- << downloadDir.absolutePath();
+ qxtLog->debug() << "[dm] Successfully created: " << _downloadDir.absolutePath();
else {
// just in case
- qxtLog->debug() << "[dm] Failed to create: "
- << downloadDir.absolutePath();
+ qxtLog->debug() << "[dm] Failed to create: " << _downloadDir.absolutePath();
qxtLog->debug() << "[dm] Exiting...";
exit( EXIT_FAILURE);
}
} else
- qxtLog->debug() << "[dm] " << downloadDir.absolutePath()
- << " already exists.";
+ qxtLog->debug() << "[dm] " << _downloadDir.absolutePath() << " already exists.";
}
} else
- qxtLog->debug() << "[dm] Download directory: "
- << downloadDir.absolutePath() << " already exists.";
+ qxtLog->debug() << "[dm] Download directory: " << _downloadDir.absolutePath()
+ << " already exists.";
- qxtLog->debug() << "[dm] Saving downloads to: "
- << downloadDir.absolutePath();
- downloadPath = downloadDir.absolutePath();
+ qxtLog->debug() << "[dm] Saving downloads to: " << _downloadDir.absolutePath();
+ downloadPath = _downloadDir.absolutePath();
}
// -------------------------------------------------------------------------------------------------------
// Public access
@@ -71,11 +64,11 @@ void DownloadManager::processDownloadRequest(const QUrl& url) {
return;
}
qxtLog->debug() << "[dm] Enqueueing: " << url.toString();
- dlQ.enqueue(url);
- if (dip) {
+ _downloadQueue.enqueue(url);
+ if (_dip) {
// download in progress, return.
- qxtLog->debug() << "[dm] Download in progress! Queued:" << url.toString()
- << "(" << dlQ.size() << " in queue)";
+ qxtLog->debug() << "[dm] Download in progress! Queued:" << url.toString() << "("
+ << _downloadQueue.size() << " in queue)";
return;
}
// no running downloads: start next in queue
@@ -84,53 +77,51 @@ void DownloadManager::processDownloadRequest(const QUrl& url) {
// -------------------------------------------------------------------------------------------------------
void DownloadManager::startNextDownload() {
QWSServer::instance()->setCursorVisible(false);
- if (dlQ.isEmpty()) {
+ if (_downloadQueue.isEmpty()) {
emit downloadQueueEmpty();
qxtLog->debug() << "[dm] Download manager ready. (1)";
return;
}
- qxtLog->debug() << "[dm] Starting next download: " << dlQ.head().toString()
- << " (" << dlQ.size() - 1 << " in queue.)";
+ qxtLog->debug() << "[dm] Starting next download: " << _downloadQueue.head().toString() << " ("
+ << _downloadQueue.size() - 1 << " in queue.)";
// dequeue next URL to download.
- QUrl url = dlQ.dequeue();
+ QUrl url = _downloadQueue.dequeue();
// get filename from URL.
QString tmp = url.path();
tmp.remove(0, tmp.lastIndexOf(QChar('/')) + 1);
// check if filename exists on target file system
- if (downloadDir.exists(tmp)) {
- qxtLog->debug() << "[dm] File already exists: "
- << downloadDir.absoluteFilePath(tmp);
- outfile.setFileName(
- QString(downloadDir.absolutePath() + "/" + tmp + ".\%1").arg(
- downloaded));
+ if (_downloadDir.exists(tmp)) {
+ qxtLog->debug() << "[dm] File already exists: " << _downloadDir.absoluteFilePath(tmp);
+ _outfile.setFileName(
+ QString(_downloadDir.absolutePath() + "/" + tmp + ".\%1").arg(_downloaded));
} else
- outfile.setFileName(downloadDir.absoluteFilePath(tmp));
- qxtLog->debug() << "[dm] Saving to: " << outfile.fileName();
+ _outfile.setFileName(_downloadDir.absoluteFilePath(tmp));
+ qxtLog->debug() << "[dm] Saving to: " << _outfile.fileName();
// try to open for writing
- if (!outfile.open(QIODevice::WriteOnly)) {
- qxtLog->debug() << "[dm] No write access to " << outfile.fileName()
+ if (!_outfile.open(QIODevice::WriteOnly)) {
+ qxtLog->debug() << "[dm] No write access to " << _outfile.fileName()
<< " . Skipping download...";
return;
}
// send the request for the file
QNetworkRequest request(url);
- currentDownload = _qnam->get(request);
- lastProgress = 0;
- currentProgress = 0;
- dip = true;
- _time.start();
- QObject::connect(currentDownload, SIGNAL(readyRead()), this, SLOT(
+ _currentDownload = _qnam->get(request);
+ _lastProgress = 0;
+ _currentProgress = 0;
+ _dip = true;
+ time.start();
+ QObject::connect(_currentDownload, SIGNAL(readyRead()), this, SLOT(
downloadReady()));
- QObject::connect(currentDownload, SIGNAL(metaDataChanged()), this, SLOT(
+ QObject::connect(_currentDownload, SIGNAL(metaDataChanged()), this, SLOT(
processMetaInfo()));
- QObject::connect(currentDownload, SIGNAL(downloadProgress(qint64, qint64)),
- this, SLOT(downloadProgress(qint64, qint64)));
- QObject::connect(currentDownload, SIGNAL(finished()), this, SLOT(
+ QObject::connect(_currentDownload, SIGNAL(downloadProgress(qint64, qint64)), this,
+ SLOT(downloadProgress(qint64, qint64)));
+ QObject::connect(_currentDownload, SIGNAL(finished()), this, SLOT(
downloadFinished()));
}
// -------------------------------------------------------------------------------------------------------
@@ -139,26 +130,26 @@ void DownloadManager::startNextDownload() {
void DownloadManager::processMetaInfo() {
// fetch filesize from header & filename from URL (for now)
const QByteArray cltag = "Content-Length";
- QByteArray clinfo = currentDownload->rawHeader(cltag);
- QFileInfo fi(outfile);
- qxtLog->debug() << "[dm] Download Info: " << fi.fileName() << " (Size: "
- << clinfo.toDouble() << ")";
+ QByteArray clinfo = _currentDownload->rawHeader(cltag);
+ QFileInfo fi(_outfile);
+ qxtLog->debug() << "[dm] Download Info: " << fi.fileName() << " (Size: " << clinfo.toDouble()
+ << ")";
emit downloadInfo(fi.fileName(), clinfo.toDouble());
}
// -------------------------------------------------------------------------------------------------------
void DownloadManager::downloadReady() {
// data ready, save it
- outfile.write(currentDownload->readAll());
+ _outfile.write(_currentDownload->readAll());
}
// -------------------------------------------------------------------------------------------------------
void DownloadManager::downloadProgress(qint64 bytesIn, qint64 bytesTotal) {
if (bytesIn > bytesTotal || bytesTotal <= 0) {
- qxtLog->debug() << "[dm] downloadProgress invalid values:" << "In:"
- << bytesIn << " / Total: " << bytesTotal;
+ qxtLog->debug() << "[dm] downloadProgress invalid values:" << "In:" << bytesIn
+ << " / Total: " << bytesTotal;
return;
}
// calculate current speed
- double speed = bytesIn * 1000 / _time.elapsed();
+ double speed = bytesIn * 1000 / time.elapsed();
QString unit;
if (speed < 1024) {
unit = "bytes/sec";
@@ -170,46 +161,41 @@ void DownloadManager::downloadProgress(qint64 bytesIn, qint64 bytesTotal) {
unit = "MB/s";
}
// update progress only if difference higher than the updateInterval setting
- currentProgress = ((bytesIn * 100) / bytesTotal);
- if (currentProgress - lastProgress >= updateInterval) {
- lastProgress = currentProgress;
+ _currentProgress = ((bytesIn * 100) / bytesTotal);
+ if (_currentProgress - _lastProgress >= updateInterval) {
+ _lastProgress = _currentProgress;
emit
- updateProgress(currentProgress, speed, unit);
- qxtLog->debug() << "[dm] Download progress of "
- << currentDownload->url().toString() << ": " << bytesIn << "/"
- << bytesTotal << "(" << currentProgress << "\%)";
+ updateProgress(_currentProgress, speed, unit);
+ qxtLog->debug() << "[dm] Download progress of " << _currentDownload->url().toString() << ": "
+ << bytesIn << "/" << bytesTotal << "(" << _currentProgress << "\%)";
}
}
// -------------------------------------------------------------------------------------------------------
void DownloadManager::downloadFinished() {
// check for errors
- if (currentDownload->error()) {
- outfile.close();
- outfile.remove();
- int statusCode = currentDownload->attribute(
- QNetworkRequest::HttpStatusCodeAttribute).toInt();
- qxtLog->debug() << "[dm] Download of "
- << currentDownload->url().toString()
+ if (_currentDownload->error()) {
+ _outfile.close();
+ _outfile.remove();
+ int statusCode =
+ _currentDownload->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
+ qxtLog->debug() << "[dm] Download of " << _currentDownload->url().toString()
<< " failed with HTTP error code: " << statusCode;
emit
notify(QString("Download failed! HTTP Status Code: %1").arg(statusCode));
- currentDownload->deleteLater();
+ _currentDownload->deleteLater();
} else {
// end download
- outfile.close();
- downloaded++;
- qxtLog->debug() << "[dm] Download of "
- << currentDownload->url().toString() << " finished. (downloaded = "
- << downloaded << ")";
+ _outfile.close();
+ _downloaded++;
+ qxtLog->debug() << "[dm] Download of " << _currentDownload->url().toString()
+ << " finished. (_downloaded = " << _downloaded << ")";
emit
- notify(
- QString("Successfully downloaded %1").arg(
- currentDownload->url().toString()));
- currentDownload->deleteLater();
+ notify(QString("Successfully _downloaded %1").arg(_currentDownload->url().toString()));
+ _currentDownload->deleteLater();
}
- dip = false;
+ _dip = false;
// process next in queue, if any
- if (dlQ.isEmpty()) {
+ if (_downloadQueue.isEmpty()) {
emit downloadQueueEmpty();
qxtLog->debug() << "[dm] Download manager ready. (2)";
return;
diff --git a/src/downloadmanager.h b/src/downloadmanager.h
index dfb4d03..58bcd53 100644
--- a/src/downloadmanager.h
+++ b/src/downloadmanager.h
@@ -1,21 +1,21 @@
/*
- # 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
- #
- #
- # Class managing download requests:
- # - provides queueing functionality
- # - static info: filename, filesize
- # - dynamic info: download progress, current speed
- #
+ * 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
+ *
+ *
+ * Class managing download requests:
+ * - provides queueing functionality
+ * - static info: filename, filesize
+ * - dynamic info: download progress, current speed
+ *
*/
#ifndef DOWNLOADMANAGER_H
@@ -35,35 +35,34 @@ Q_OBJECT
public:
DownloadManager();
~DownloadManager();
- QTime _time;
+ QTime time;
private:
// checks for valid download directory, ran once in constructor
- void checkDownloadDirectory();
+ void check_downloadDirectory();
// private control function for queueing mechanism.
void processDownloadRequest(const QUrl& url);
// base objects for downloading
QNetworkAccessManager* _qnam;
- QQueue
dlQ;
- QNetworkReply* currentDownload;
- QFile outfile;
- QDir downloadDir;
+ QQueue _downloadQueue;
+ QNetworkReply* _currentDownload;
+ QFile _outfile;
+ QDir _downloadDir;
// download progress variables
- int currentProgress, lastProgress;
+ int _currentProgress, _lastProgress;
// download in progress flag
- bool dip;
+ bool _dip;
// static counter
- static int downloaded;
+ static int _downloaded;
- signals:
+signals:
// notify sends a message to the javascript interface to be evaluated there
void notify(const QString& msg);
// downloadInfo sends static information (name, size) to the interface.
void downloadInfo(const QString& filename, const double& filesize);
// updateProgress sends download progress information to the interface.
- void updateProgress(const int& percent, const double& speed,
- const QString& unit);
+ void updateProgress(const int& percent, const double& speed, const QString& unit);
// signal emitted when download queue is empty.
void downloadQueueEmpty();
diff --git a/src/fbgui.cpp b/src/fbgui.cpp
index 3494b83..9a0ee1d 100644
--- a/src/fbgui.cpp
+++ b/src/fbgui.cpp
@@ -34,10 +34,8 @@ int debugMode = -1;
* @see DownloadManager
*/
fbgui::fbgui() {
+
// test for libsys function
- //SysInfoLibsysfs* sil = new SysInfoLibsysfs();
- //sil->getInfoAboutNetworkInterface();
- //sil->getInfoMainboardSerial();
//SysInfo si;
//qxtLog->debug() << si.getInfo("mbserial");
//si.getInfo("usb");
@@ -46,28 +44,22 @@ fbgui::fbgui() {
createActions();
// initialize javascript interface
- JavascriptInterface* jsi = new JavascriptInterface(
- _webView->page()->mainFrame());
+ JavascriptInterface* jsi = new JavascriptInterface(_webView->page()->mainFrame());
QObject::connect(jsi, SIGNAL(quitFbgui()), this, SLOT(close()));
- QObject::connect(jsi, SIGNAL(shutDownClient()), this,
- SLOT(performShutDown()));
+ QObject::connect(jsi, SIGNAL(shutDownClient()), this, SLOT(performShutDown()));
QObject::connect(_webView->page()->mainFrame(), SIGNAL(
javaScriptWindowObjectCleared()), jsi, SLOT(attachToDOM()));
// initialize download manager
DownloadManager* dm = new DownloadManager();
- QObject::connect(dm, SIGNAL(downloadInfo(const QString&, const double&)),
- jsi, SLOT(downloadInfo(const QString&, const double&)));
- QObject::connect(dm, SIGNAL(notify(const QString&)), jsi,
- SLOT(notify(const QString&)));
+ QObject::connect(dm, SIGNAL(downloadInfo(const QString&, const double&)), jsi,
+ SLOT(downloadInfo(const QString&, const double&)));
+ QObject::connect(dm, SIGNAL(notify(const QString&)), jsi, SLOT(notify(const QString&)));
QObject::connect(jsi, SIGNAL(requestFile(const QString&)), dm,
SLOT(downloadFile(const QString&)));
- QObject::connect(dm,
- SIGNAL(updateProgress(const int&, const double&, const QString&)),
- jsi,
+ QObject::connect(dm, SIGNAL(updateProgress(const int&, const double&, const QString&)), jsi,
SLOT(updateProgressBar(const int&, const double&, const QString&)));
- QObject::connect(dm, SIGNAL(downloadQueueEmpty()), jsi,
- SLOT(callbackOnFinished()));
+ QObject::connect(dm, SIGNAL(downloadQueueEmpty()), jsi, SLOT(callbackOnFinished()));
QObject::connect(dm, SIGNAL(downloadQueueEmpty()), this, SLOT(loadSystem()));
// move download manager to its own thread
@@ -80,7 +72,6 @@ fbgui::fbgui() {
} else {
_webView->load(QUrl("qrc:/html/preload.html"));
}
- //statusBar()->showMessage("Waiting for internet...");
// start watching for fileToTriggerURL
watchForTrigger();
@@ -92,7 +83,7 @@ fbgui::fbgui() {
showFullScreen();
}
fbgui::~fbgui() {
- //dmThread.quit();
+ dmThread.quit();
}
//-------------------------------------------------------------------------------------------
// Layout / actions setup
@@ -154,16 +145,15 @@ void fbgui::watchForTrigger() {
qxtLog->debug() << "[gui] Created: " << fileToTriggerURL;
file.close();
} else {
- qxtLog->debug() << "[gui] Creation of " << fileToTriggerURL
- << " failed! Exiting...";
- exit( EXIT_FAILURE);
+ qxtLog->debug() << "[gui] Creation of " << fileToTriggerURL << " failed!";
+ qxtLog->debug() << "[gui] Exiting in 5 seconds...";
+ QTimer::singleShot(5000, this, SLOT(close()));
}
}
// watch the path to trigger file
qxtLog->debug() << "[watcher] Watching " << fileToTriggerURL;
_watcher = new QFileSystemWatcher(QStringList(fileToTriggerURL), this);
- QObject::connect(_watcher, SIGNAL(fileChanged(const QString&)), this,
- SLOT(prepareURLLoad()));
+ QObject::connect(_watcher, SIGNAL(fileChanged(const QString&)), this, SLOT(prepareURLLoad()));
}
//-------------------------------------------------------------------------------------------
@@ -198,8 +188,8 @@ void fbgui::prepareURLLoad() {
bool fbgui::checkHost() const {
QHostInfo hostInfo = QHostInfo::fromName(baseURL.host());
if (hostInfo.error() != QHostInfo::NoError) {
- qxtLog->debug() << "[gui] Lookup of " << baseURL.host()
- << "failed. Exiting...";
+ qxtLog->debug() << "[gui] Lookup of " << baseURL.host() << "failed.";
+ qxtLog->debug() << "[gui] Host can not be reached.";
return false;
} else {
qxtLog->debug() << "[gui] Lookup of " << baseURL.host() << " succeeded.";
@@ -219,7 +209,7 @@ bool fbgui::checkHost() const {
*/
void fbgui::loadURL() {
if (checkHost()) {
- qxtLog->debug() << "[gui] Loading URL...";
+ qxtLog->debug() << "[gui] Loading URL: " << baseURL.toString() << " ...";
// Generate POST identification data needed by PBS.
QByteArray postData = generatePOSTData();
@@ -227,10 +217,22 @@ void fbgui::loadURL() {
// show cursor again since user is about to interact.
QWSServer::instance()->setCursorVisible(true);
+ QObject::connect(_webView, SIGNAL(loadFinished(bool)), this, SLOT(loadURLDone(bool)));
_webView->load(req, QNetworkAccessManager::PostOperation, postData);
}
// TODO: error page if no host.
}
+void fbgui::loadURLDone(bool success) {
+ // done contains the success of the loading: false / true
+ if (!success) {
+ qxtLog->debug() << "[gui] Loading failed. URL: " << _webView->url().toString();
+ qxtLog->debug() << "[gui] Exiting in 5 seconds...";
+ QTimer::singleShot(5000, this, SLOT(close()));
+ }
+ else {
+ qxtLog->debug() << "[gui] Loaded URL: " << _webView->url().toString();
+ }
+}
//-------------------------------------------------------------------------------------------
/**
* This method generates the POST data body.
@@ -382,24 +384,22 @@ void fbgui::prepareKexec() {
// load the kernel + initramfs + append of kcl into kexec.
QProcess *process = new QProcess(this);
QString cmdline = "kexec -l " + downloadPath.toUtf8() + "/kernel --initrd="
- + downloadPath.toUtf8() + "/initramfs --append=\"" + kcl.toUtf8()
- + "\"";
+ + downloadPath.toUtf8() + "/initramfs --append=\"" + kcl.toUtf8() + "\"";
qxtLog->debug() << "[gui] kexec cmdline: " << cmdline;
process->start(cmdline);
bool ret = process->waitForFinished();
if (!ret) {
- qxtLog->debug() << "[sysinfo] Failed to load kexec! Exiting...";
- exit( EXIT_FAILURE);
+ qxtLog->debug() << "[gui] Failed to execute: " << cmdline;
+ qxtLog->debug() << "[gui] Exiting in 5 seconds...";
+ QTimer::singleShot(5000, this, SLOT(close()));
} else {
- qxtLog->debug() << "[gui] Kexec load successfull.";
+ qxtLog->debug() << "[gui] Kexec load was successfull.";
if (debugMode < 0) {
// if process successfully finished, try to run kexec -e
runKexec();
} else {
- qxtLog->debug()
- << "[gui] Skipping execution of kexec - open debug shell.";
- qxtLog->debug()
- << "[gui] To start the system execute \"kexec -e\" in your shell.";
+ qxtLog->debug() << "[gui] Skipping execution of kexec - open debug shell.";
+ qxtLog->debug() << "[gui] To start the system execute \"kexec -e\" in your shell.";
close();
}
}
@@ -416,7 +416,8 @@ void fbgui::runKexec() {
process->startDetached("kexec -e");
if (!process->waitForStarted()) {
qxtLog->debug() << "[gui] Failed to execute: kexec -e";
- exit( EXIT_FAILURE);
+ qxtLog->debug() << "[gui] Exiting in 5 seconds...";
+ QTimer::singleShot(5000, this, SLOT(close()));
//TODO: Handle failure properly...
}
}
@@ -466,11 +467,12 @@ void fbgui::toggleDebugConsole() {
//
//-------------------------------------------------------------------------------------------
void fbgui::loadSystem() {
- // stop the thread for the download manager
- qxtLog->debug() << "[gui] Stopping download manager's thread...";
- dmThread.quit();
-
//show loading system page.
_webView->load(QUrl("qrc:/html/loadsystem.html"));
prepareKexec();
}
+//-------------------------------------------------------------------------------------------
+void fbgui::quitFailure() {
+}
+void fbgui::quitSuccess() {
+}
diff --git a/src/fbgui.h b/src/fbgui.h
index 98ab4c4..80cbb25 100644
--- a/src/fbgui.h
+++ b/src/fbgui.h
@@ -1,19 +1,19 @@
/*
- # 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
- #
+ * 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
@@ -106,6 +106,7 @@ private slots:
// triggered by fileChanged Signal of _watcher
// deletes _watcher, since we don't need it anymore and tries to load URL.
void prepareURLLoad();
+ void loadURLDone(bool success);
// shut off the system
void performShutDown();
@@ -115,6 +116,9 @@ private slots:
void loadSystem();
void prepareKexec();
void runKexec();
+ void quitSuccess();
+ void quitFailure();
+
};
#endif // FBGUI_H
diff --git a/src/fbgui.qrc b/src/fbgui.qrc
index 8f576cc..e378bed 100644
--- a/src/fbgui.qrc
+++ b/src/fbgui.qrc
@@ -4,9 +4,9 @@
html/js/jquery-1.5.1.min.js
html/js/jquery-ui-1.8.11.min.js
html/js/test.js
- html/style.css
+ html/background.png
+ html/preload.css
html/preload.html
- html/bg.png
html/preload-debug.html
html/loadsystem.css
html/loadsystem.html
diff --git a/src/html/background.png b/src/html/background.png
new file mode 100644
index 0000000..84dd7b3
Binary files /dev/null and b/src/html/background.png differ
diff --git a/src/html/bg.png b/src/html/bg.png
deleted file mode 100644
index 84dd7b3..0000000
Binary files a/src/html/bg.png and /dev/null differ
diff --git a/src/html/preload-debug.html b/src/html/preload-debug.html
index 0aad6c5..8c0f481 100644
--- a/src/html/preload-debug.html
+++ b/src/html/preload-debug.html
@@ -1,6 +1,6 @@
-
+
-
-
Loading system, please wait...
+
+
+
Loading system, please wait...
@@ -33,11 +31,5 @@ window.setTimeout(rotate, 100);
-
-
-
-
diff --git a/src/html/old.png b/src/html/old.png
new file mode 100644
index 0000000..84dd7b3
Binary files /dev/null and b/src/html/old.png differ
diff --git a/src/html/preload-debug.html b/src/html/preload-debug.html
index 8c0f481..29d7391 100644
--- a/src/html/preload-debug.html
+++ b/src/html/preload-debug.html
@@ -12,6 +12,8 @@ function quitgui(){
+
+