From f958717d43420655519ae079ef0d35aa912411b2 Mon Sep 17 00:00:00 2001 From: Dominik Riebeling Date: Sun, 12 Oct 2008 19:21:58 +0000 Subject: Separate basic functionality from GUI parts by moving it into a separate folder. Some files still need to get cleaned up prior moving them too. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18788 a1c6a512-1295-4272-9138-f99709370657 --- rbutil/rbutilqt/base/bootloaderinstallbase.cpp | 184 +++++++++++++++++++++++++ 1 file changed, 184 insertions(+) create mode 100644 rbutil/rbutilqt/base/bootloaderinstallbase.cpp (limited to 'rbutil/rbutilqt/base/bootloaderinstallbase.cpp') diff --git a/rbutil/rbutilqt/base/bootloaderinstallbase.cpp b/rbutil/rbutilqt/base/bootloaderinstallbase.cpp new file mode 100644 index 0000000000..d0abffa44d --- /dev/null +++ b/rbutil/rbutilqt/base/bootloaderinstallbase.cpp @@ -0,0 +1,184 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * + * Copyright (C) 2008 by Dominik Riebeling + * $Id$ + * + * All files in this archive are subject to the GNU General Public License. + * See the file COPYING in the source tree root for full license agreement. + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY + * KIND, either express or implied. + * + ****************************************************************************/ + + +#include + +#include "bootloaderinstallbase.h" +#include "utils.h" + +BootloaderInstallBase::BootloaderType BootloaderInstallBase::installed(void) +{ + return BootloaderUnknown; +} + + +BootloaderInstallBase::Capabilities BootloaderInstallBase::capabilities(void) +{ + return 0; +} + + +void BootloaderInstallBase::downloadBlStart(QUrl source) +{ + m_http.setFile(&m_tempfile); + m_http.setCache(true); + connect(&m_http, SIGNAL(done(bool)), this, SLOT(downloadBlFinish(bool))); + // connect the http read signal to our logProgess *signal* + // to immediately emit it without any helper function. + connect(&m_http, SIGNAL(dataReadProgress(int, int)), + this, SIGNAL(logProgress(int, int))); + m_http.getFile(source); +} + + +void BootloaderInstallBase::downloadReqFinished(int id, bool error) +{ + qDebug() << __FILE__ << "::" << __func__ << id << error; + qDebug() << "error:" << m_http.errorString(); + + downloadBlFinish(error); +} + + +void BootloaderInstallBase::downloadBlFinish(bool error) +{ + qDebug() << __FILE__ << "::" << __func__ << ": error =" << error; + + // update progress bar + emit logProgress(100, 100); + + if(m_http.httpResponse() != 200) { + emit logItem(tr("Download error: received HTTP error %1.") + .arg(m_http.errorString()), LOGERROR); + emit done(true); + return; + } + if(error) { + emit logItem(tr("Download error: %1") + .arg(m_http.error()), LOGERROR); + emit done(true); + return; + } + else if(m_http.isCached()) + emit logItem(tr("Download finished (cache used)."), LOGOK); + else + emit logItem(tr("Download finished."), LOGOK); + + m_blversion = m_http.timestamp(); + emit downloadDone(); +} + +void BootloaderInstallBase::installBlfile(void) +{ + qDebug() << __FILE__ << __func__; +} + + +//! @brief backup OF file. +//! @param to folder to write backup file to. Folder will get created. +//! @return true on success, false on error. + +bool BootloaderInstallBase::backup(QString to) +{ + qDebug() << __func__; + QDir targetDir("."); + emit logItem(tr("Creating backup of original firmware file."), LOGINFO); + if(!targetDir.mkpath(to)) { + emit logItem(tr("Creating backup folder failed"), LOGERROR); + return false; + } + QString tofile = to + "/" + QFileInfo(m_blfile).fileName(); + qDebug() << "trying to backup" << m_blfile << "to" << tofile; + if(!QFile::copy(resolvePathCase(m_blfile), tofile)) { + emit logItem(tr("Creating backup copy failed."), LOGERROR); + return false; + } + emit logItem(tr("Backup created."), LOGOK); + return true; +} + + +//! @brief log installation to logfile. +//! @param mode action to perform. 0: add to log, 1: remove from log. +//! @return 0 on success +int BootloaderInstallBase::logInstall(LogMode mode) +{ + int result = 0; + QString section = m_blurl.path().section('/', -1); + QSettings s(m_logfile, QSettings::IniFormat, this); + emit logItem(tr("Creating installation log"), LOGINFO); + + if(mode == LogAdd) { + s.setValue("Bootloader/" + section, m_blversion.toString(Qt::ISODate)); + qDebug() << m_blversion.toString(Qt::ISODate); + } + else { + s.remove("Bootloader/" + section); + } + s.sync(); + + return result; +} + + +//! @brief Return post install hints string. +//! @param model model string +//! @return hints. +QString BootloaderInstallBase::postinstallHints(QString model) +{ + bool hint = false; + QString msg = tr("Bootloader installation is almost complete. " + "Installation requires you to perform the " + "following steps manually:"); + + msg += tr("
    "); + msg += tr("
  1. Safely remove your player.
  2. "); + if(model == "h100" || model == "h120" || model == "h300") { + hint = true; + msg += tr("
  3. Reboot your player into the original firmware.
  4. " + "
  5. Perform a firmware upgrade using the update functionality " + "of the original firmware. Please refer to your player's manual " + "on details.
  6. " + "
  7. After the firmware has been updated reboot your player.
  8. "); + } + if(model == "iaudiox5" || model == "iaudiom5" + || model == "iaudiox5v" || model == "iaudiom3") { + hint = true; + msg += tr("
  9. Turn the player off
  10. " + "
  11. Insert the charger
  12. "); + } + if(model == "gigabeatf") { + hint = true; + msg += tr("
  13. Unplug USB and power adaptors
  14. " + "
  15. Hold Power to turn the player off
  16. " + "
  17. Toggle the battery switch on the player
  18. " + "
  19. Hold Power to boot into Rockbox
  20. "); + } + + msg += "
"; + msg += tr("

Note: You can safely install other parts first, but " + "the above steps are required to finish the installation!

"); + + if(hint) + return msg; + else + return QString(""); +} + -- cgit v1.2.3