forked from len0rd/rockbox
rbutilQt: first attempt for bootloader installation. Sansa and irivers are still missing.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14032 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
794c968430
commit
64f36a19e4
8 changed files with 1137 additions and 6 deletions
124
rbutil/rbutilqt/installbl.cpp
Normal file
124
rbutil/rbutilqt/installbl.cpp
Normal file
|
@ -0,0 +1,124 @@
|
||||||
|
/***************************************************************************
|
||||||
|
* __________ __ ___.
|
||||||
|
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||||
|
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||||
|
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||||
|
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||||
|
* \/ \/ \/ \/ \/
|
||||||
|
*
|
||||||
|
* Copyright (C) 2007 by Dominik Wenger
|
||||||
|
* $Id: installbl.cpp 14027 2007-07-27 17:42:49Z domonoky $
|
||||||
|
*
|
||||||
|
* 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 "installbl.h"
|
||||||
|
#include "ui_installfrm.h"
|
||||||
|
#include "ui_installprogressfrm.h"
|
||||||
|
|
||||||
|
|
||||||
|
InstallBl::InstallBl(QWidget *parent) : QDialog(parent)
|
||||||
|
{
|
||||||
|
ui.setupUi(this);
|
||||||
|
connect(ui.buttonBrowse, SIGNAL(clicked()), this, SLOT(browseFolder()));
|
||||||
|
}
|
||||||
|
|
||||||
|
void InstallBl::setProxy(QUrl proxy_url)
|
||||||
|
{
|
||||||
|
proxy = proxy_url;
|
||||||
|
qDebug() << "Install::setProxy" << proxy;
|
||||||
|
}
|
||||||
|
|
||||||
|
void InstallBl::setMountPoint(QString mount)
|
||||||
|
{
|
||||||
|
QFileInfo m(mount);
|
||||||
|
if(m.isDir()) {
|
||||||
|
ui.lineMountPoint->clear();
|
||||||
|
ui.lineMountPoint->insert(mount);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void InstallBl::browseFolder()
|
||||||
|
{
|
||||||
|
QFileDialog browser(this);
|
||||||
|
if(QFileInfo(ui.lineMountPoint->text()).isDir())
|
||||||
|
browser.setDirectory(ui.lineMountPoint->text());
|
||||||
|
else
|
||||||
|
browser.setDirectory("/media");
|
||||||
|
browser.setReadOnly(true);
|
||||||
|
browser.setFileMode(QFileDialog::DirectoryOnly);
|
||||||
|
browser.setAcceptMode(QFileDialog::AcceptOpen);
|
||||||
|
if(browser.exec()) {
|
||||||
|
qDebug() << browser.directory();
|
||||||
|
QStringList files = browser.selectedFiles();
|
||||||
|
setMountPoint(files.at(0));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void InstallBl::accept()
|
||||||
|
{
|
||||||
|
QDialog *downloadProgress = new QDialog(this);
|
||||||
|
dp.setupUi(downloadProgress);
|
||||||
|
// connect close button now as it's needed if we break upon an error
|
||||||
|
connect(dp.buttonAbort, SIGNAL(clicked()), downloadProgress, SLOT(close()));
|
||||||
|
// show dialog with error if mount point is wrong
|
||||||
|
if(QFileInfo(ui.lineMountPoint->text()).isDir()) {
|
||||||
|
mountPoint = ui.lineMountPoint->text();
|
||||||
|
userSettings->setValue("defaults/mountpoint", mountPoint);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
dp.listProgress->addItem(tr("Mount point is wrong!"));
|
||||||
|
dp.buttonAbort->setText(tr("&Ok"));
|
||||||
|
downloadProgress->show();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
userSettings->sync();
|
||||||
|
|
||||||
|
binstaller = new BootloaderInstaller(this);
|
||||||
|
|
||||||
|
binstaller->setMountPoint(mountPoint);
|
||||||
|
binstaller->setProxy(proxy);
|
||||||
|
QString plattform = userSettings->value("defaults/platform").toString();
|
||||||
|
|
||||||
|
binstaller->setDevice(plattform);
|
||||||
|
binstaller->setBootloaderMethod(devices->value(plattform + "/bootloadermethod").toString());
|
||||||
|
binstaller->setBootloaderName(devices->value(plattform + "/bootloadername").toString());
|
||||||
|
binstaller->setBootloaderBaseUrl(devices->value("bootloader_url").toString());
|
||||||
|
|
||||||
|
binstaller->install(&dp);
|
||||||
|
|
||||||
|
connect(binstaller, SIGNAL(done(bool)), this, SLOT(done(bool)));
|
||||||
|
|
||||||
|
downloadProgress->show();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void InstallBl::done(bool error)
|
||||||
|
{
|
||||||
|
qDebug() << "Install::done, error:" << error;
|
||||||
|
|
||||||
|
if(error)
|
||||||
|
{
|
||||||
|
connect(dp.buttonAbort, SIGNAL(clicked()), this, SLOT(close()));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
connect(dp.buttonAbort, SIGNAL(clicked()), this, SLOT(close()));
|
||||||
|
delete binstaller;
|
||||||
|
}
|
||||||
|
|
||||||
|
void InstallBl::setDeviceSettings(QSettings *dev)
|
||||||
|
{
|
||||||
|
devices = dev;
|
||||||
|
qDebug() << "Install::setDeviceSettings:" << devices;
|
||||||
|
}
|
||||||
|
|
||||||
|
void InstallBl::setUserSettings(QSettings *user)
|
||||||
|
{
|
||||||
|
userSettings = user;
|
||||||
|
}
|
66
rbutil/rbutilqt/installbl.h
Normal file
66
rbutil/rbutilqt/installbl.h
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
/***************************************************************************
|
||||||
|
* __________ __ ___.
|
||||||
|
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||||
|
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||||
|
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||||
|
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||||
|
* \/ \/ \/ \/ \/
|
||||||
|
*
|
||||||
|
* Copyright (C) 2007 by Dominik Wenger
|
||||||
|
* $Id: installbl.h 14027 2007-07-27 17:42:49Z domonoky $
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifndef INSTALLBL_H
|
||||||
|
#define INSTALLBL_H
|
||||||
|
|
||||||
|
#include <QtGui>
|
||||||
|
|
||||||
|
#include <QSettings>
|
||||||
|
|
||||||
|
#include "ui_installbootloaderfrm.h"
|
||||||
|
#include "ui_installprogressfrm.h"
|
||||||
|
|
||||||
|
#include "installbootloader.h"
|
||||||
|
|
||||||
|
class InstallBl : public QDialog
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
InstallBl(QWidget *parent = 0);
|
||||||
|
void setProxy(QUrl);
|
||||||
|
void setMountPoint(QString);
|
||||||
|
void setUserSettings(QSettings*);
|
||||||
|
void setDeviceSettings(QSettings*);
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void accept(void);
|
||||||
|
|
||||||
|
private:
|
||||||
|
Ui::InstallBootloaderFrm ui;
|
||||||
|
Ui::InstallProgressFrm dp;
|
||||||
|
QUrl proxy;
|
||||||
|
QSettings *devices;
|
||||||
|
QSettings *userSettings;
|
||||||
|
QDialog *downloadProgress;
|
||||||
|
QHttp *download;
|
||||||
|
QFile *target;
|
||||||
|
QString file;
|
||||||
|
QString fileName;
|
||||||
|
QString mountPoint;
|
||||||
|
BootloaderInstaller* binstaller;
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void browseFolder(void);
|
||||||
|
void done(bool);
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
702
rbutil/rbutilqt/installbootloader.cpp
Normal file
702
rbutil/rbutilqt/installbootloader.cpp
Normal file
|
@ -0,0 +1,702 @@
|
||||||
|
/***************************************************************************
|
||||||
|
* __________ __ ___.
|
||||||
|
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||||
|
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||||
|
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||||
|
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||||
|
* \/ \/ \/ \/ \/
|
||||||
|
*
|
||||||
|
* Copyright (C) 2007 by Dominik Wenger
|
||||||
|
* $Id: installbootloader.cpp 13990 2007-07-25 22:26:10Z Dominik Wenger $
|
||||||
|
*
|
||||||
|
* 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 "installbootloader.h"
|
||||||
|
|
||||||
|
BootloaderInstaller::BootloaderInstaller(QObject* parent): QObject(parent)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void BootloaderInstaller::install(Ui::InstallProgressFrm* dp)
|
||||||
|
{
|
||||||
|
m_dp = dp;
|
||||||
|
m_install = true;
|
||||||
|
m_dp->listProgress->addItem(tr("Starting bootloader installation"));
|
||||||
|
|
||||||
|
if(m_bootloadermethod == "gigabeatf")
|
||||||
|
{
|
||||||
|
// connect internal signal
|
||||||
|
connect(this,SIGNAL(prepare()),this,SLOT(gigabeatPrepare()));
|
||||||
|
connect(this,SIGNAL(finish()),this,SLOT(gigabeatFinish()));
|
||||||
|
}
|
||||||
|
else if(m_bootloadermethod == "iaudio")
|
||||||
|
{
|
||||||
|
// connect internal signal
|
||||||
|
connect(this,SIGNAL(prepare()),this,SLOT(iaudioPrepare()));
|
||||||
|
connect(this,SIGNAL(finish()),this,SLOT(iaudioFinish()));
|
||||||
|
}
|
||||||
|
else if(m_bootloadermethod == "h10")
|
||||||
|
{
|
||||||
|
// connect internal signal
|
||||||
|
connect(this,SIGNAL(prepare()),this,SLOT(h10Prepare()));
|
||||||
|
connect(this,SIGNAL(finish()),this,SLOT(h10Finish()));
|
||||||
|
}
|
||||||
|
else if(m_bootloadermethod == "ipodpatcher")
|
||||||
|
{
|
||||||
|
// connect internal signal
|
||||||
|
connect(this,SIGNAL(prepare()),this,SLOT(ipodPrepare()));
|
||||||
|
connect(this,SIGNAL(finish()),this,SLOT(ipodFinish()));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("unsupported install Method"));
|
||||||
|
emit done(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
emit prepare();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BootloaderInstaller::uninstall(Ui::InstallProgressFrm* dp)
|
||||||
|
{
|
||||||
|
m_dp = dp;
|
||||||
|
m_install = false;
|
||||||
|
m_dp->listProgress->addItem(tr("Starting bootloader uninstallation"));
|
||||||
|
|
||||||
|
if(m_bootloadermethod == "gigabeatf")
|
||||||
|
{
|
||||||
|
// connect internal signal
|
||||||
|
connect(this,SIGNAL(prepare()),this,SLOT(gigabeatPrepare()));
|
||||||
|
}
|
||||||
|
else if(m_bootloadermethod == "iaudio")
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("No uninstallation possible"));
|
||||||
|
emit done(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if(m_bootloadermethod == "iaudio")
|
||||||
|
{
|
||||||
|
// connect internal signal
|
||||||
|
connect(this,SIGNAL(prepare()),this,SLOT(h10Prepare()));
|
||||||
|
}
|
||||||
|
else if(m_bootloadermethod == "ipodpatcher")
|
||||||
|
{
|
||||||
|
// connect internal signal
|
||||||
|
connect(this,SIGNAL(prepare()),this,SLOT(ipodPrepare()));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("unsupported install Method"));
|
||||||
|
emit done(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
emit prepare();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BootloaderInstaller::downloadRequestFinished(int id, bool error)
|
||||||
|
{
|
||||||
|
qDebug() << "BootloaderInstall::downloadRequestFinished" << id << error;
|
||||||
|
qDebug() << "error:" << getter->errorString();
|
||||||
|
|
||||||
|
downloadDone(error);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BootloaderInstaller::downloadDone(bool error)
|
||||||
|
{
|
||||||
|
qDebug() << "Install::downloadDone, error:" << error;
|
||||||
|
|
||||||
|
// update progress bar
|
||||||
|
|
||||||
|
int max = m_dp->progressBar->maximum();
|
||||||
|
if(max == 0) {
|
||||||
|
max = 100;
|
||||||
|
m_dp->progressBar->setMaximum(max);
|
||||||
|
}
|
||||||
|
m_dp->progressBar->setValue(max);
|
||||||
|
if(getter->httpResponse() != 200) {
|
||||||
|
m_dp->listProgress->addItem(tr("Download error: received HTTP error %1.").arg(getter->httpResponse()));
|
||||||
|
m_dp->buttonAbort->setText(tr("&Ok"));
|
||||||
|
emit done(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(error) {
|
||||||
|
m_dp->listProgress->addItem(tr("Download error: %1").arg(getter->errorString()));
|
||||||
|
m_dp->buttonAbort->setText(tr("&Ok"));
|
||||||
|
emit done(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else m_dp->listProgress->addItem(tr("Download finished."));
|
||||||
|
|
||||||
|
emit finish();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void BootloaderInstaller::updateDataReadProgress(int read, int total)
|
||||||
|
{
|
||||||
|
m_dp->progressBar->setMaximum(total);
|
||||||
|
m_dp->progressBar->setValue(read);
|
||||||
|
qDebug() << "progress:" << read << "/" << total;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************
|
||||||
|
*** gigabeat secific code
|
||||||
|
***************************************************/
|
||||||
|
|
||||||
|
void BootloaderInstaller::gigabeatPrepare()
|
||||||
|
{
|
||||||
|
if(m_install) // Installation
|
||||||
|
{
|
||||||
|
QString url = m_bootloaderUrlBase + "/gigabeat/" + m_bootloadername;
|
||||||
|
|
||||||
|
m_dp->listProgress->addItem(tr("Downloading file %1.%2")
|
||||||
|
.arg(QFileInfo(url).baseName(), QFileInfo(url).completeSuffix()));
|
||||||
|
|
||||||
|
// temporary file needs to be opened to get the filename
|
||||||
|
downloadFile.open();
|
||||||
|
m_tempfilename = downloadFile.fileName();
|
||||||
|
downloadFile.close();
|
||||||
|
// get the real file.
|
||||||
|
getter = new HttpGet(this);
|
||||||
|
getter->setProxy(m_proxy);
|
||||||
|
getter->setFile(&downloadFile);
|
||||||
|
getter->getFile(QUrl(url));
|
||||||
|
// connect signals from HttpGet
|
||||||
|
connect(getter, SIGNAL(done(bool)), this, SLOT(downloadDone(bool)));
|
||||||
|
//connect(getter, SIGNAL(requestFinished(int, bool)), this, SLOT(downloadRequestFinished(int, bool)));
|
||||||
|
connect(getter, SIGNAL(dataReadProgress(int, int)), this, SLOT(updateDataReadProgress(int, int)));
|
||||||
|
|
||||||
|
}
|
||||||
|
else //UnInstallation
|
||||||
|
{
|
||||||
|
QString firmware = m_mountpoint + "/GBSYSTEM/FWIMG/FWIMG01.DAT";
|
||||||
|
QString firmwareOrig = firmware.append(".ORIG");
|
||||||
|
|
||||||
|
QFileInfo firmwareOrigFI(firmwareOrig);
|
||||||
|
|
||||||
|
// check if original firmware exists
|
||||||
|
if(!firmwareOrigFI.exists())
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("Could not find the Original Firmware at: %1")
|
||||||
|
.arg(firmwareOrig));
|
||||||
|
emit done(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
QFile firmwareFile(firmware);
|
||||||
|
QFile firmwareOrigFile(firmwareOrig);
|
||||||
|
|
||||||
|
//remove modified firmware
|
||||||
|
if(!firmwareFile.remove())
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("Could not remove the Firmware at: %1")
|
||||||
|
.arg(firmware));
|
||||||
|
emit done(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//copy original firmware
|
||||||
|
if(!firmwareOrigFile.copy(firmware))
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("Could not copy the Firmware from: %1 to %2")
|
||||||
|
.arg(firmwareOrig,firmware));
|
||||||
|
emit done(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
emit done(false); //success
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void BootloaderInstaller::gigabeatFinish()
|
||||||
|
{
|
||||||
|
// this step is only need for installation, so no code for uninstall here
|
||||||
|
|
||||||
|
m_dp->listProgress->addItem(tr("Finishing bootloader install"));
|
||||||
|
|
||||||
|
QString firmware = m_mountpoint + "/GBSYSTEM/FWIMG/" + m_bootloadername;
|
||||||
|
|
||||||
|
QFileInfo firmwareFI(firmware);
|
||||||
|
|
||||||
|
// check if firmware exists
|
||||||
|
if(!firmwareFI.exists())
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("Could not find the Firmware at: %1")
|
||||||
|
.arg(firmware));
|
||||||
|
emit done(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString firmwareOrig = firmware;
|
||||||
|
firmwareOrig.append(".ORIG");
|
||||||
|
QFileInfo firmwareOrigFI(firmwareOrig);
|
||||||
|
|
||||||
|
// rename the firmware, if there is no original firmware there
|
||||||
|
if(!firmwareOrigFI.exists())
|
||||||
|
{
|
||||||
|
QFile firmwareFile(firmware);
|
||||||
|
if(!firmwareFile.rename(firmwareOrig))
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("Could not rename: %1 to %2")
|
||||||
|
.arg(firmware,firmwareOrig));
|
||||||
|
emit done(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else // or remove the normal firmware, if the original is there
|
||||||
|
{
|
||||||
|
QFile firmwareFile(firmware);
|
||||||
|
firmwareFile.remove();
|
||||||
|
}
|
||||||
|
|
||||||
|
//copy the firmware
|
||||||
|
if(!downloadFile.copy(firmware))
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("Could not copy: %1 to %2")
|
||||||
|
.arg(m_tempfilename,firmware));
|
||||||
|
emit done(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
downloadFile.remove();
|
||||||
|
|
||||||
|
m_dp->listProgress->addItem(tr("Bootloader install finished successfully."));
|
||||||
|
m_dp->buttonAbort->setText(tr("&Ok"));
|
||||||
|
|
||||||
|
emit done(false); // success
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************
|
||||||
|
*** iaudio secific code
|
||||||
|
***************************************************/
|
||||||
|
void BootloaderInstaller::iaudioPrepare()
|
||||||
|
{
|
||||||
|
|
||||||
|
QString url = m_bootloaderUrlBase + "/iaudio/" + m_bootloadername;
|
||||||
|
|
||||||
|
m_dp->listProgress->addItem(tr("Downloading file %1.%2")
|
||||||
|
.arg(QFileInfo(url).baseName(), QFileInfo(url).completeSuffix()));
|
||||||
|
|
||||||
|
// temporary file needs to be opened to get the filename
|
||||||
|
downloadFile.open();
|
||||||
|
m_tempfilename = downloadFile.fileName();
|
||||||
|
downloadFile.close();
|
||||||
|
// get the real file.
|
||||||
|
getter = new HttpGet(this);
|
||||||
|
getter->setProxy(m_proxy);
|
||||||
|
getter->setFile(&downloadFile);
|
||||||
|
getter->getFile(QUrl(url));
|
||||||
|
// connect signals from HttpGet
|
||||||
|
connect(getter, SIGNAL(done(bool)), this, SLOT(downloadDone(bool)));
|
||||||
|
//connect(getter, SIGNAL(requestFinished(int, bool)), this, SLOT(downloadRequestFinished(int, bool)));
|
||||||
|
connect(getter, SIGNAL(dataReadProgress(int, int)), this, SLOT(updateDataReadProgress(int, int)));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void BootloaderInstaller::iaudioFinish()
|
||||||
|
{
|
||||||
|
QString firmware = m_mountpoint + "/FIRMWARE/" + m_bootloadername;
|
||||||
|
|
||||||
|
//copy the firmware
|
||||||
|
if(!downloadFile.copy(firmware))
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("Could not copy: %1 to %2")
|
||||||
|
.arg(m_tempfilename,firmware));
|
||||||
|
emit done(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
downloadFile.remove();
|
||||||
|
|
||||||
|
m_dp->listProgress->addItem(tr("Bootloader install finished successfully."));
|
||||||
|
m_dp->buttonAbort->setText(tr("&Ok"));
|
||||||
|
|
||||||
|
emit done(false); // success
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************
|
||||||
|
*** h10 secific code
|
||||||
|
***************************************************/
|
||||||
|
void BootloaderInstaller::h10Prepare()
|
||||||
|
{
|
||||||
|
if(m_install) // Installation
|
||||||
|
{
|
||||||
|
QString url = m_bootloaderUrlBase + "/iriver/" + m_bootloadername;
|
||||||
|
|
||||||
|
m_dp->listProgress->addItem(tr("Downloading file %1.%2")
|
||||||
|
.arg(QFileInfo(url).baseName(), QFileInfo(url).completeSuffix()));
|
||||||
|
|
||||||
|
// temporary file needs to be opened to get the filename
|
||||||
|
downloadFile.open();
|
||||||
|
m_tempfilename = downloadFile.fileName();
|
||||||
|
downloadFile.close();
|
||||||
|
// get the real file.
|
||||||
|
getter = new HttpGet(this);
|
||||||
|
getter->setProxy(m_proxy);
|
||||||
|
getter->setFile(&downloadFile);
|
||||||
|
getter->getFile(QUrl(url));
|
||||||
|
// connect signals from HttpGet
|
||||||
|
connect(getter, SIGNAL(done(bool)), this, SLOT(downloadDone(bool)));
|
||||||
|
//connect(getter, SIGNAL(requestFinished(int, bool)), this, SLOT(downloadRequestFinished(int, bool)));
|
||||||
|
connect(getter, SIGNAL(dataReadProgress(int, int)), this, SLOT(updateDataReadProgress(int, int)));
|
||||||
|
}
|
||||||
|
else // Uninstallation
|
||||||
|
{
|
||||||
|
|
||||||
|
QString firmwarename = m_bootloadername.section('/', -1);
|
||||||
|
|
||||||
|
QString firmware = m_mountpoint + "/SYSTEM/" + firmwarename;
|
||||||
|
QString firmwareOrig = m_mountpoint + "/SYSTEM/Original.mi4";
|
||||||
|
|
||||||
|
QFileInfo firmwareFI(firmware);
|
||||||
|
if(!firmwareFI.exists()) //Firmware dosent exists on player
|
||||||
|
{
|
||||||
|
firmware = m_mountpoint + "/SYSTEM/H10EMP.mi4"; //attempt other firmwarename
|
||||||
|
firmwareFI.setFile(firmware);
|
||||||
|
if(!firmwareFI.exists()) //Firmware dosent exists on player
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("Firmware doesn not exist: %1")
|
||||||
|
.arg(firmware));
|
||||||
|
emit done(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QFileInfo firmwareOrigFI(firmwareOrig);
|
||||||
|
if(!firmwareOrigFI.exists()) //Original Firmware dosent exists on player
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("Original Firmware doesn not exist: %1")
|
||||||
|
.arg(firmwareOrig));
|
||||||
|
emit done(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
QFile firmwareFile(firmware);
|
||||||
|
QFile firmwareOrigFile(firmwareOrig);
|
||||||
|
|
||||||
|
//remove modified firmware
|
||||||
|
if(!firmwareFile.remove())
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("Could not remove the Firmware at: %1")
|
||||||
|
.arg(firmware));
|
||||||
|
emit done(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//copy original firmware
|
||||||
|
if(!firmwareOrigFile.copy(firmware))
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("Could not copy the Firmware from: %1 to %2")
|
||||||
|
.arg(firmwareOrig,firmware));
|
||||||
|
emit done(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
emit done(false); //success
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BootloaderInstaller::h10Finish()
|
||||||
|
{
|
||||||
|
QString firmwarename = m_bootloadername.section('/', -1);
|
||||||
|
|
||||||
|
QString firmware = m_mountpoint + "/SYSTEM/" + firmwarename;
|
||||||
|
QString firmwareOrig = m_mountpoint + "/SYSTEM/Original.mi4";
|
||||||
|
|
||||||
|
QFileInfo firmwareFI(firmware);
|
||||||
|
|
||||||
|
if(!firmwareFI.exists()) //Firmware dosent exists on player
|
||||||
|
{
|
||||||
|
firmware = m_mountpoint + "/SYSTEM/H10EMP.mi4"; //attempt other firmwarename
|
||||||
|
firmwareFI.setFile(firmware);
|
||||||
|
if(!firmwareFI.exists()) //Firmware dosent exists on player
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("Firmware does not exist: %1")
|
||||||
|
.arg(firmware));
|
||||||
|
emit done(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QFileInfo firmwareOrigFI(firmwareOrig);
|
||||||
|
|
||||||
|
if(!firmwareOrigFI.exists()) //there is already a original firmware
|
||||||
|
{
|
||||||
|
QFile firmwareFile(firmware);
|
||||||
|
if(!firmwareFile.rename(firmwareOrig)) //rename Firmware to Original
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("Could not rename: %1 to %2")
|
||||||
|
.arg(firmware,firmwareOrig));
|
||||||
|
emit done(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
QFile firmwareFile(firmware);
|
||||||
|
firmwareFile.remove();
|
||||||
|
}
|
||||||
|
//copy the firmware
|
||||||
|
if(!downloadFile.copy(firmware))
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("Could not copy: %1 to %2")
|
||||||
|
.arg(m_tempfilename,firmware));
|
||||||
|
emit done(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
downloadFile.remove();
|
||||||
|
|
||||||
|
m_dp->listProgress->addItem(tr("Bootloader install finished successfully."));
|
||||||
|
m_dp->buttonAbort->setText(tr("&Ok"));
|
||||||
|
|
||||||
|
emit done(false); // success
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************
|
||||||
|
*** ipod secific code
|
||||||
|
***************************************************/
|
||||||
|
int verbose =0;
|
||||||
|
// reserves memory for ipodpatcher
|
||||||
|
bool initIpodpatcher()
|
||||||
|
{
|
||||||
|
if (ipod_alloc_buffer(§orbuf,BUFFER_SIZE) < 0) return true;
|
||||||
|
else return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BootloaderInstaller::ipodPrepare()
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("Searching for ipods"));
|
||||||
|
struct ipod_t ipod;
|
||||||
|
|
||||||
|
int n = ipod_scan(&ipod);
|
||||||
|
if (n == 0)
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("No Ipods found"));
|
||||||
|
emit done(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (n > 1)
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("Too many Ipods found"));
|
||||||
|
emit done(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(m_install) // Installation
|
||||||
|
{
|
||||||
|
|
||||||
|
QString url = m_bootloaderUrlBase + "/ipod/bootloader-" + m_bootloadername + ".ipod";
|
||||||
|
|
||||||
|
m_dp->listProgress->addItem(tr("Downloading file %1.%2")
|
||||||
|
.arg(QFileInfo(url).baseName(), QFileInfo(url).completeSuffix()));
|
||||||
|
|
||||||
|
// temporary file needs to be opened to get the filename
|
||||||
|
downloadFile.open();
|
||||||
|
m_tempfilename = downloadFile.fileName();
|
||||||
|
downloadFile.close();
|
||||||
|
// get the real file.
|
||||||
|
getter = new HttpGet(this);
|
||||||
|
getter->setProxy(m_proxy);
|
||||||
|
getter->setFile(&downloadFile);
|
||||||
|
getter->getFile(QUrl(url));
|
||||||
|
// connect signals from HttpGet
|
||||||
|
connect(getter, SIGNAL(done(bool)), this, SLOT(downloadDone(bool)));
|
||||||
|
//connect(getter, SIGNAL(requestFinished(int, bool)), this, SLOT(downloadRequestFinished(int, bool)));
|
||||||
|
connect(getter, SIGNAL(dataReadProgress(int, int)), this, SLOT(updateDataReadProgress(int, int)));
|
||||||
|
|
||||||
|
}
|
||||||
|
else // Uninstallation
|
||||||
|
{
|
||||||
|
if (ipod_open(&ipod, 0) < 0)
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("could not open ipod"));
|
||||||
|
emit done(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (read_partinfo(&ipod,0) < 0)
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("could not read partitiontable"));
|
||||||
|
emit done(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ipod.pinfo[0].start==0)
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("No partition 0 on disk"));
|
||||||
|
|
||||||
|
int i;
|
||||||
|
double sectors_per_MB = (1024.0*1024.0)/ipod.sector_size;
|
||||||
|
m_dp->listProgress->addItem(tr("[INFO] Part Start Sector End Sector Size (MB) Type\n"));
|
||||||
|
for ( i = 0; i < 4; i++ )
|
||||||
|
{
|
||||||
|
if (ipod.pinfo[i].start != 0)
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("[INFO] %1 %2 %3 %4 %5 (%6)").arg(
|
||||||
|
i).arg(
|
||||||
|
ipod.pinfo[i].start).arg(
|
||||||
|
ipod.pinfo[i].start+ipod.pinfo[i].size-1).arg(
|
||||||
|
ipod.pinfo[i].size/sectors_per_MB).arg(
|
||||||
|
get_parttype(ipod.pinfo[i].type)).arg(
|
||||||
|
ipod.pinfo[i].type));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
emit done(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
read_directory(&ipod);
|
||||||
|
|
||||||
|
if (ipod.nimages <= 0)
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("Failed to read firmware directory"));
|
||||||
|
emit done(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (getmodel(&ipod,(ipod.ipod_directory[0].vers>>8)) < 0)
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("Unknown version number in firmware (%1)").arg(
|
||||||
|
ipod.ipod_directory[0].vers));
|
||||||
|
emit done(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ipod.macpod)
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("Warning this is a MacPod, Rockbox doesnt work on this. Convert it to WinPod"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ipod_reopen_rw(&ipod) < 0)
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("Could not open Ipod in RW mode"));
|
||||||
|
emit done(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ipod.ipod_directory[0].entryOffset==0) {
|
||||||
|
m_dp->listProgress->addItem(tr("No bootloader detected."));
|
||||||
|
emit done(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (delete_bootloader(&ipod)==0)
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("Successfully removed Bootloader"));
|
||||||
|
emit done(true);
|
||||||
|
ipod_close(&ipod);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("--delete-bootloader failed."));
|
||||||
|
emit done(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BootloaderInstaller::ipodFinish()
|
||||||
|
{
|
||||||
|
struct ipod_t ipod;
|
||||||
|
ipod_scan(&ipod);
|
||||||
|
|
||||||
|
if (ipod_open(&ipod, 0) < 0)
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("could not open ipod"));
|
||||||
|
emit done(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (read_partinfo(&ipod,0) < 0)
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("could not read partitiontable"));
|
||||||
|
emit done(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ipod.pinfo[0].start==0)
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("No partition 0 on disk"));
|
||||||
|
|
||||||
|
int i;
|
||||||
|
double sectors_per_MB = (1024.0*1024.0)/ipod.sector_size;
|
||||||
|
|
||||||
|
m_dp->listProgress->addItem(tr("[INFO] Part Start Sector End Sector Size (MB) Type\n"));
|
||||||
|
|
||||||
|
for ( i = 0; i < 4; i++ )
|
||||||
|
{
|
||||||
|
if (ipod.pinfo[i].start != 0)
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("[INFO] %1 %2 %3 %4 %5 (%6)").arg(
|
||||||
|
i).arg(
|
||||||
|
ipod.pinfo[i].start).arg(
|
||||||
|
ipod.pinfo[i].start+ipod.pinfo[i].size-1).arg(
|
||||||
|
ipod.pinfo[i].size/sectors_per_MB).arg(
|
||||||
|
get_parttype(ipod.pinfo[i].type)).arg(
|
||||||
|
ipod.pinfo[i].type));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
emit done(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
read_directory(&ipod);
|
||||||
|
|
||||||
|
if (ipod.nimages <= 0)
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("Failed to read firmware directory"));
|
||||||
|
emit done(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (getmodel(&ipod,(ipod.ipod_directory[0].vers>>8)) < 0)
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("Unknown version number in firmware (%1)").arg(
|
||||||
|
ipod.ipod_directory[0].vers));
|
||||||
|
emit done(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ipod.macpod)
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("Warning this is a MacPod, Rockbox doesnt work on this. Convert it to WinPod"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ipod_reopen_rw(&ipod) < 0)
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("Could not open Ipod in RW mode"));
|
||||||
|
emit done(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (add_bootloader(&ipod, m_tempfilename.toLatin1().data(), FILETYPE_DOT_IPOD)==0)
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("Successfully added Bootloader"));
|
||||||
|
emit done(true);
|
||||||
|
ipod_close(&ipod);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_dp->listProgress->addItem(tr("failed to add Bootloader"));
|
||||||
|
ipod_close(&ipod);
|
||||||
|
emit done(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
94
rbutil/rbutilqt/installbootloader.h
Normal file
94
rbutil/rbutilqt/installbootloader.h
Normal file
|
@ -0,0 +1,94 @@
|
||||||
|
/***************************************************************************
|
||||||
|
* __________ __ ___.
|
||||||
|
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||||
|
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||||
|
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||||
|
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||||
|
* \/ \/ \/ \/ \/
|
||||||
|
*
|
||||||
|
* Copyright (C) 2007 by Dominik Wenger
|
||||||
|
* $Id: installbootloader.h 13990 2007-07-25 22:26:10Z Dominik Wenger $
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifndef INSTALLBOOTLOADER_H
|
||||||
|
#define INSTALLBOOTLOADER_H
|
||||||
|
|
||||||
|
#include <QtGui>
|
||||||
|
|
||||||
|
#include "ui_installprogressfrm.h"
|
||||||
|
#include "httpget.h"
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
// Ipodpatcher
|
||||||
|
#include "../ipodpatcher/ipodpatcher.h"
|
||||||
|
};
|
||||||
|
|
||||||
|
bool initIpodpatcher();
|
||||||
|
|
||||||
|
class BootloaderInstaller : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
BootloaderInstaller(QObject* parent);
|
||||||
|
~BootloaderInstaller() {}
|
||||||
|
|
||||||
|
void install(Ui::InstallProgressFrm* dp);
|
||||||
|
void uninstall(Ui::InstallProgressFrm* dp);
|
||||||
|
|
||||||
|
void setMountPoint(QString mountpoint) {m_mountpoint = mountpoint;}
|
||||||
|
void setProxy(QUrl proxy) {m_proxy= proxy;}
|
||||||
|
void setDevice(QString device) {m_device= device;}
|
||||||
|
void setBootloaderMethod(QString method) {m_bootloadermethod= method;}
|
||||||
|
void setBootloaderName(QString name){m_bootloadername= name;}
|
||||||
|
void setBootloaderBaseUrl(QString baseUrl){m_bootloaderUrlBase = baseUrl;}
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void done(bool error); //installation finished.
|
||||||
|
|
||||||
|
// internal signals. Dont use this from out side.
|
||||||
|
void prepare();
|
||||||
|
void finish();
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void updateDataReadProgress(int, int);
|
||||||
|
void downloadDone(bool);
|
||||||
|
void downloadRequestFinished(int, bool);
|
||||||
|
|
||||||
|
// gigabeat specific routines
|
||||||
|
void gigabeatPrepare();
|
||||||
|
void gigabeatFinish();
|
||||||
|
|
||||||
|
//iaudio specific routines
|
||||||
|
void iaudioPrepare();
|
||||||
|
void iaudioFinish();
|
||||||
|
|
||||||
|
//h10 specific routines
|
||||||
|
void h10Prepare();
|
||||||
|
void h10Finish();
|
||||||
|
|
||||||
|
//ipod specific routines
|
||||||
|
void ipodPrepare();
|
||||||
|
void ipodFinish();
|
||||||
|
|
||||||
|
private:
|
||||||
|
QString m_mountpoint, m_device,m_bootloadermethod,m_bootloadername;
|
||||||
|
QString m_bootloaderUrlBase,m_tempfilename;
|
||||||
|
QUrl m_proxy;
|
||||||
|
bool m_install;
|
||||||
|
|
||||||
|
|
||||||
|
HttpGet *getter;
|
||||||
|
QTemporaryFile downloadFile;
|
||||||
|
|
||||||
|
Ui::InstallProgressFrm* m_dp;
|
||||||
|
|
||||||
|
};
|
||||||
|
#endif
|
108
rbutil/rbutilqt/installbootloaderfrm.ui
Normal file
108
rbutil/rbutilqt/installbootloaderfrm.ui
Normal file
|
@ -0,0 +1,108 @@
|
||||||
|
<ui version="4.0" >
|
||||||
|
<class>InstallBootloaderFrm</class>
|
||||||
|
<widget class="QDialog" name="InstallBootloaderFrm" >
|
||||||
|
<property name="windowModality" >
|
||||||
|
<enum>Qt::WindowModal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="geometry" >
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>673</width>
|
||||||
|
<height>453</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle" >
|
||||||
|
<string>Install Bootloader</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" >
|
||||||
|
<item rowspan="8" row="0" column="0" >
|
||||||
|
<widget class="QLabel" name="label" >
|
||||||
|
<property name="text" >
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="pixmap" >
|
||||||
|
<pixmap resource="rbutilqt.qrc" >:/icons/icons/wizard.xpm</pixmap>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1" colspan="3" >
|
||||||
|
<widget class="QLabel" name="label_2" >
|
||||||
|
<property name="text" >
|
||||||
|
<string>Select your device in the filesystem</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1" colspan="2" >
|
||||||
|
<widget class="QLineEdit" name="lineMountPoint" />
|
||||||
|
</item>
|
||||||
|
<item row="1" column="3" >
|
||||||
|
<widget class="QToolButton" name="buttonBrowse" >
|
||||||
|
<property name="text" >
|
||||||
|
<string>&Browse</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="7" column="2" colspan="2" >
|
||||||
|
<widget class="QDialogButtonBox" name="buttonBox" >
|
||||||
|
<property name="orientation" >
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="standardButtons" >
|
||||||
|
<set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item rowspan="4" row="2" column="1" colspan="3" >
|
||||||
|
<spacer>
|
||||||
|
<property name="orientation" >
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" >
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<resources>
|
||||||
|
<include location="rbutilqt.qrc" />
|
||||||
|
</resources>
|
||||||
|
<connections>
|
||||||
|
<connection>
|
||||||
|
<sender>buttonBox</sender>
|
||||||
|
<signal>accepted()</signal>
|
||||||
|
<receiver>InstallBootloaderFrm</receiver>
|
||||||
|
<slot>accept()</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel" >
|
||||||
|
<x>248</x>
|
||||||
|
<y>254</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel" >
|
||||||
|
<x>157</x>
|
||||||
|
<y>274</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>buttonBox</sender>
|
||||||
|
<signal>rejected()</signal>
|
||||||
|
<receiver>InstallBootloaderFrm</receiver>
|
||||||
|
<slot>reject()</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel" >
|
||||||
|
<x>316</x>
|
||||||
|
<y>260</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel" >
|
||||||
|
<x>286</x>
|
||||||
|
<y>274</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
</connections>
|
||||||
|
</ui>
|
|
@ -25,7 +25,9 @@
|
||||||
#include "ui_aboutbox.h"
|
#include "ui_aboutbox.h"
|
||||||
#include "configure.h"
|
#include "configure.h"
|
||||||
#include "install.h"
|
#include "install.h"
|
||||||
|
#include "installbl.h"
|
||||||
#include "httpget.h"
|
#include "httpget.h"
|
||||||
|
#include "installbootloader.h"
|
||||||
|
|
||||||
RbUtilQt::RbUtilQt(QWidget *parent) : QMainWindow(parent)
|
RbUtilQt::RbUtilQt(QWidget *parent) : QMainWindow(parent)
|
||||||
{
|
{
|
||||||
|
@ -71,6 +73,7 @@ RbUtilQt::RbUtilQt(QWidget *parent) : QMainWindow(parent)
|
||||||
connect(ui.action_Configure, SIGNAL(triggered()), this, SLOT(configDialog()));
|
connect(ui.action_Configure, SIGNAL(triggered()), this, SLOT(configDialog()));
|
||||||
connect(ui.comboBoxDevice, SIGNAL(currentIndexChanged(int)), this, SLOT(updateDevice(int)));
|
connect(ui.comboBoxDevice, SIGNAL(currentIndexChanged(int)), this, SLOT(updateDevice(int)));
|
||||||
connect(ui.buttonRockbox, SIGNAL(clicked()), this, SLOT(install()));
|
connect(ui.buttonRockbox, SIGNAL(clicked()), this, SLOT(install()));
|
||||||
|
connect(ui.buttonBootloader, SIGNAL(clicked()), this, SLOT(installBl()));
|
||||||
|
|
||||||
// disable unimplemented stuff
|
// disable unimplemented stuff
|
||||||
ui.buttonThemes->setEnabled(false);
|
ui.buttonThemes->setEnabled(false);
|
||||||
|
@ -80,7 +83,9 @@ RbUtilQt::RbUtilQt(QWidget *parent) : QMainWindow(parent)
|
||||||
ui.buttonGames->setEnabled(false);
|
ui.buttonGames->setEnabled(false);
|
||||||
ui.buttonFonts->setEnabled(false);
|
ui.buttonFonts->setEnabled(false);
|
||||||
ui.buttonComplete->setEnabled(false);
|
ui.buttonComplete->setEnabled(false);
|
||||||
|
ui.buttonDetect->setEnabled(false);
|
||||||
|
|
||||||
|
initIpodpatcher();
|
||||||
downloadInfo();
|
downloadInfo();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -229,3 +234,16 @@ void RbUtilQt::install()
|
||||||
|
|
||||||
installWindow->show();
|
installWindow->show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RbUtilQt::installBl()
|
||||||
|
{
|
||||||
|
InstallBl *installWindow = new InstallBl(this);
|
||||||
|
installWindow->setUserSettings(userSettings);
|
||||||
|
installWindow->setDeviceSettings(devices);
|
||||||
|
if(userSettings->value("defaults/proxytype") == "manual")
|
||||||
|
installWindow->setProxy(QUrl(userSettings->value("defaults/proxy").toString()));
|
||||||
|
installWindow->setMountPoint(userSettings->value("defaults/mountpoint").toString());
|
||||||
|
|
||||||
|
installWindow->show();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
* \/ \/ \/ \/ \/
|
* \/ \/ \/ \/ \/
|
||||||
*
|
*
|
||||||
* Copyright (C) 2007 by Dominik Riebeling
|
* Copyright (C) 2007 by Dominik Riebeling
|
||||||
* $Id:$
|
* $Id$
|
||||||
*
|
*
|
||||||
* All files in this archive are subject to the GNU General Public License.
|
* 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.
|
* See the file COPYING in the source tree root for full license agreement.
|
||||||
|
@ -26,7 +26,6 @@
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
#include <QTemporaryFile>
|
#include <QTemporaryFile>
|
||||||
|
|
||||||
|
|
||||||
class RbUtilQt : public QMainWindow
|
class RbUtilQt : public QMainWindow
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
@ -50,6 +49,7 @@ class RbUtilQt : public QMainWindow
|
||||||
void configDialog(void);
|
void configDialog(void);
|
||||||
void updateDevice(int);
|
void updateDevice(int);
|
||||||
void install(void);
|
void install(void);
|
||||||
|
void installBl(void);
|
||||||
void downloadDone(bool);
|
void downloadDone(bool);
|
||||||
void downloadDone(int, bool);
|
void downloadDone(int, bool);
|
||||||
void downloadInfo(void);
|
void downloadInfo(void);
|
||||||
|
|
|
@ -5,7 +5,11 @@ SOURCES += rbutilqt.cpp \
|
||||||
configure.cpp \
|
configure.cpp \
|
||||||
zip/zip.cpp \
|
zip/zip.cpp \
|
||||||
zip/unzip.cpp \
|
zip/unzip.cpp \
|
||||||
installzip.cpp
|
installzip.cpp \
|
||||||
|
installbootloader.cpp \
|
||||||
|
installbl.cpp \
|
||||||
|
../ipodpatcher/ipodpatcher.c
|
||||||
|
|
||||||
|
|
||||||
HEADERS += rbutilqt.h \
|
HEADERS += rbutilqt.h \
|
||||||
settings.h \
|
settings.h \
|
||||||
|
@ -18,8 +22,14 @@ HEADERS += rbutilqt.h \
|
||||||
zip/unzip_p.h \
|
zip/unzip_p.h \
|
||||||
zip/zip_p.h \
|
zip/zip_p.h \
|
||||||
version.h \
|
version.h \
|
||||||
installzip.h
|
installzip.h \
|
||||||
|
installbootloader.h \
|
||||||
|
installbl.h \
|
||||||
|
../ipodpatcher/ipodpatcher.h \
|
||||||
|
../ipodpatcher/ipodio.h \
|
||||||
|
../ipodpatcher/parttypes.h
|
||||||
|
|
||||||
|
|
||||||
TEMPLATE = app
|
TEMPLATE = app
|
||||||
CONFIG += release \
|
CONFIG += release \
|
||||||
warn_on \
|
warn_on \
|
||||||
|
@ -30,8 +40,17 @@ FORMS += rbutilqtfrm.ui \
|
||||||
aboutbox.ui \
|
aboutbox.ui \
|
||||||
installfrm.ui \
|
installfrm.ui \
|
||||||
installprogressfrm.ui \
|
installprogressfrm.ui \
|
||||||
configurefrm.ui
|
configurefrm.ui \
|
||||||
|
installbootloaderfrm.ui
|
||||||
RESOURCES += rbutilqt.qrc
|
RESOURCES += rbutilqt.qrc
|
||||||
|
|
||||||
TRANSLATIONS += rbutil_de.ts
|
TRANSLATIONS += rbutil_de.ts
|
||||||
QT += network
|
QT += network
|
||||||
|
|
||||||
|
win32{
|
||||||
|
SOURCES += ../ipodpatcher/ipodio-win32.c
|
||||||
|
}
|
||||||
|
|
||||||
|
!win32{
|
||||||
|
SOURCES += ../ipodpatcher/ipodio-posix.c
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue