From 9ca29354e1de9859044bdcfce0309b0509bafb90 Mon Sep 17 00:00:00 2001 From: Dominik Wenger Date: Sat, 9 May 2009 18:17:05 +0000 Subject: rbutil: enforce parents for bootloader install classes. and rework OF handling a bit. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20892 a1c6a512-1295-4272-9138-f99709370657 --- rbutil/rbutilqt/base/bootloaderinstallbase.h | 35 ++++++++++++++++++--------- rbutil/rbutilqt/base/bootloaderinstallfile.h | 2 +- rbutil/rbutilqt/base/bootloaderinstallhex.cpp | 21 +++++++++++++--- rbutil/rbutilqt/base/bootloaderinstallhex.h | 5 +--- rbutil/rbutilqt/base/bootloaderinstallipod.h | 2 +- rbutil/rbutilqt/base/bootloaderinstallmi4.h | 2 +- 6 files changed, 44 insertions(+), 23 deletions(-) (limited to 'rbutil/rbutilqt/base') diff --git a/rbutil/rbutilqt/base/bootloaderinstallbase.h b/rbutil/rbutilqt/base/bootloaderinstallbase.h index 0916935208..470a23a7ab 100644 --- a/rbutil/rbutilqt/base/bootloaderinstallbase.h +++ b/rbutil/rbutilqt/base/bootloaderinstallbase.h @@ -24,39 +24,50 @@ #include "progressloggerinterface.h" #include "httpget.h" - +//! baseclass for all Bootloader installs class BootloaderInstallBase : public QObject { Q_OBJECT - public: enum Capability { Install = 0x01, Uninstall = 0x02, Backup = 0x04, - IsFile = 0x08, IsRaw = 0x10, NeedsFlashing = 0x20, + IsFile = 0x08, IsRaw = 0x10, NeedsOf = 0x20, CanCheckInstalled = 0x40, CanCheckVersion = 0x80 }; Q_DECLARE_FLAGS(Capabilities, Capability) enum BootloaderType { BootloaderNone, BootloaderRockbox, BootloaderOther, BootloaderUnknown }; - BootloaderInstallBase(QObject *parent = 0) : QObject(parent) + BootloaderInstallBase(QObject *parent) : QObject(parent) { } - virtual bool install(void) - { return false; } - virtual bool uninstall(void) - { return false; } - virtual BootloaderType installed(void); - virtual Capabilities capabilities(void); + //! install the bootloader, must be implemented + virtual bool install(void) = 0; + //! uninstall the bootloader, must be implemented + virtual bool uninstall(void) = 0; + //! returns the installed bootloader + virtual BootloaderType installed(void)=0; + //! returns the capabilities of the bootloader class + virtual Capabilities capabilities(void)=0; + //! returns a OF Firmware hint or empty if there is none + virtual QString ofHint() {return QString();} + + + //! backup a already installed bootloader bool backup(QString to); + //! set the differen filenames and paths void setBlFile(QString f) { m_blfile = f; } void setBlUrl(QUrl u) { m_blurl = u; } void setLogfile(QString f) { m_logfile = f; } - + void setOfFile(QString f) + {m_offile = f;} + + //! returns a port Install Hint or empty if there is none + //! static and in the base class, so the installer classes dont need to be modified for new targets static QString postinstallHints(QString model); protected slots: @@ -76,7 +87,7 @@ class BootloaderInstallBase : public QObject QUrl m_blurl; //! bootloader download URL QTemporaryFile m_tempfile; //! temporary file for download QDateTime m_blversion; //! download timestamp used for version information - + QString m_offile; //! path to the offile signals: void downloadDone(void); //! internal signal sent when download finished. void done(bool); diff --git a/rbutil/rbutilqt/base/bootloaderinstallfile.h b/rbutil/rbutilqt/base/bootloaderinstallfile.h index 075f047ed2..f77ec7f20d 100644 --- a/rbutil/rbutilqt/base/bootloaderinstallfile.h +++ b/rbutil/rbutilqt/base/bootloaderinstallfile.h @@ -30,7 +30,7 @@ class BootloaderInstallFile : public BootloaderInstallBase Q_OBJECT public: - BootloaderInstallFile(QObject *parent = 0); + BootloaderInstallFile(QObject *parent); bool install(void); bool uninstall(void); BootloaderInstallBase::BootloaderType installed(void); diff --git a/rbutil/rbutilqt/base/bootloaderinstallhex.cpp b/rbutil/rbutilqt/base/bootloaderinstallhex.cpp index a52f8d0584..31659981f7 100644 --- a/rbutil/rbutilqt/base/bootloaderinstallhex.cpp +++ b/rbutil/rbutilqt/base/bootloaderinstallhex.cpp @@ -44,10 +44,23 @@ BootloaderInstallHex::BootloaderInstallHex(QObject *parent) { } +QString BootloaderInstallHex::ofHint() +{ + return tr("Bootloader installation requires you to provide " + "a firmware file of the original firmware (hex file). " + "You need to download this file yourself due to legal " + "reasons. Please refer to the " + "manual and the " + "IriverBoot wiki page on " + "how to obtain this file.
" + "Press Ok to continue and browse your computer for the firmware " + "file."); +} bool BootloaderInstallHex::install(void) { - if(m_hex.isEmpty()) + if(m_offile.isEmpty()) return false; m_hashindex = -1; @@ -55,7 +68,7 @@ bool BootloaderInstallHex::install(void) emit logItem(tr("checking MD5 hash of input file ..."), LOGINFO); QByteArray filedata; // read hex file into QByteArray - QFile file(m_hex); + QFile file(m_offile); file.open(QIODevice::ReadOnly); filedata = file.readAll(); file.close(); @@ -97,7 +110,7 @@ bool BootloaderInstallHex::install(void) emit logItem(tr("Descrambling file"), LOGINFO); m_descrambled.open(); int result; - result = iriver_decode(m_hex.toAscii().data(), + result = iriver_decode(m_offile.toAscii().data(), m_descrambled.fileName().toAscii().data(), FALSE, STRIP_NONE); qDebug() << "iriver_decode" << result; @@ -223,7 +236,7 @@ BootloaderInstallBase::BootloaderType BootloaderInstallHex::installed(void) BootloaderInstallBase::Capabilities BootloaderInstallHex::capabilities(void) { - return (Install | NeedsFlashing); + return (Install | NeedsOf); } QString BootloaderInstallHex::scrambleError(int err) diff --git a/rbutil/rbutilqt/base/bootloaderinstallhex.h b/rbutil/rbutilqt/base/bootloaderinstallhex.h index 04b657a193..1b64d4925f 100644 --- a/rbutil/rbutilqt/base/bootloaderinstallhex.h +++ b/rbutil/rbutilqt/base/bootloaderinstallhex.h @@ -37,12 +37,9 @@ class BootloaderInstallHex : public BootloaderInstallBase bool uninstall(void); BootloaderInstallBase::BootloaderType installed(void); Capabilities capabilities(void); - - void setHexfile(QString h) - { m_hex = h; } + QString ofHint(); private: - QString m_hex; int m_hashindex; int m_model; QTemporaryFile m_descrambled; diff --git a/rbutil/rbutilqt/base/bootloaderinstallipod.h b/rbutil/rbutilqt/base/bootloaderinstallipod.h index 5867b754f1..7e24ae1539 100644 --- a/rbutil/rbutilqt/base/bootloaderinstallipod.h +++ b/rbutil/rbutilqt/base/bootloaderinstallipod.h @@ -31,7 +31,7 @@ class BootloaderInstallIpod : public BootloaderInstallBase Q_OBJECT public: - BootloaderInstallIpod(QObject *parent = 0); + BootloaderInstallIpod(QObject *parent); ~BootloaderInstallIpod(); bool install(void); bool uninstall(void); diff --git a/rbutil/rbutilqt/base/bootloaderinstallmi4.h b/rbutil/rbutilqt/base/bootloaderinstallmi4.h index c746b0c87f..313f61ad12 100644 --- a/rbutil/rbutilqt/base/bootloaderinstallmi4.h +++ b/rbutil/rbutilqt/base/bootloaderinstallmi4.h @@ -30,7 +30,7 @@ class BootloaderInstallMi4 : public BootloaderInstallBase Q_OBJECT public: - BootloaderInstallMi4(QObject *parent = 0); + BootloaderInstallMi4(QObject *parent); bool install(void); bool uninstall(void); BootloaderInstallBase::BootloaderType installed(void); -- cgit v1.2.3