diff --git a/rbutil/rbutilqt/install.cpp b/rbutil/rbutilqt/install.cpp index 948cf2005a..2272b4e865 100644 --- a/rbutil/rbutilqt/install.cpp +++ b/rbutil/rbutilqt/install.cpp @@ -100,10 +100,8 @@ void Install::browseFolder() void Install::accept() { - QDialog *downloadProgress = new QDialog(this); + 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(); @@ -165,12 +163,13 @@ void Install::done(bool error) if(error) { - connect(dp.buttonAbort, SIGNAL(clicked()), this, SLOT(close())); + connect(dp.buttonAbort, SIGNAL(clicked()), downloadProgress, SLOT(close())); return; } connect(dp.buttonAbort, SIGNAL(clicked()), this, SLOT(close())); - delete installer; + connect(dp.buttonAbort, SIGNAL(clicked()),downloadProgress, SLOT(close())); + } diff --git a/rbutil/rbutilqt/installbl.cpp b/rbutil/rbutilqt/installbl.cpp index 6d6169f7c6..c5f9d9fe86 100644 --- a/rbutil/rbutilqt/installbl.cpp +++ b/rbutil/rbutilqt/installbl.cpp @@ -1,179 +1,176 @@ -/*************************************************************************** - * __________ __ ___. - * 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())); - connect(ui.buttonBrowseOF, SIGNAL(clicked()), this, SLOT(browseOF())); - -} - -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::setOFPath(QString path) -{ - QFileInfo m(path); - if(m.exists()) { - ui.lineOriginalFirmware->clear(); - ui.lineOriginalFirmware->insert(path); - } -} - -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::browseOF() -{ - QFileDialog browser(this); - if(QFileInfo(ui.lineOriginalFirmware->text()).exists()) - browser.setDirectory(ui.lineOriginalFirmware->text()); - else - browser.setDirectory("/media"); - browser.setReadOnly(true); - browser.setAcceptMode(QFileDialog::AcceptOpen); - if(browser.exec()) { - qDebug() << browser.directory(); - QStringList files = browser.selectedFiles(); - setOFPath(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; - } - - if(QFileInfo(ui.lineOriginalFirmware->text()).exists()) - { - m_OrigFirmware = ui.lineOriginalFirmware->text(); - } - else - { - dp.listProgress->addItem(tr("Original Firmware Path 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->setOrigFirmwarePath(m_OrigFirmware); - - 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; - - if(userSettings->value("defaults/platform").toString() == "h100" || - userSettings->value("defaults/platform").toString() == "h120" || - userSettings->value("defaults/platform").toString() == "h300") - { - ui.buttonBrowseOF->show(); - ui.lineOriginalFirmware->show(); - ui.label_3->show(); - } - else - { - ui.buttonBrowseOF->hide(); - ui.lineOriginalFirmware->hide(); - ui.label_3->hide(); - } - qDebug() << "Install::setDeviceSettings:" << devices; -} - -void InstallBl::setUserSettings(QSettings *user) -{ - userSettings = user; -} +/*************************************************************************** + * __________ __ ___. + * 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_installprogressfrm.h" + + +InstallBl::InstallBl(QWidget *parent) : QDialog(parent) +{ + ui.setupUi(this); + connect(ui.buttonBrowse, SIGNAL(clicked()), this, SLOT(browseFolder())); + connect(ui.buttonBrowseOF, SIGNAL(clicked()), this, SLOT(browseOF())); + +} + +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::setOFPath(QString path) +{ + QFileInfo m(path); + if(m.exists()) { + ui.lineOriginalFirmware->clear(); + ui.lineOriginalFirmware->insert(path); + } +} + +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::browseOF() +{ + QFileDialog browser(this); + if(QFileInfo(ui.lineOriginalFirmware->text()).exists()) + browser.setDirectory(ui.lineOriginalFirmware->text()); + else + browser.setDirectory("/media"); + browser.setReadOnly(true); + browser.setAcceptMode(QFileDialog::AcceptOpen); + if(browser.exec()) { + qDebug() << browser.directory(); + QStringList files = browser.selectedFiles(); + setOFPath(files.at(0)); + } +} + +void InstallBl::accept() +{ + downloadProgress = new QDialog(this); + dp.setupUi(downloadProgress); + // 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; + } + + if(QFileInfo(ui.lineOriginalFirmware->text()).exists()) + { + m_OrigFirmware = ui.lineOriginalFirmware->text(); + } + else + { + dp.listProgress->addItem(tr("Original Firmware Path 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->setOrigFirmwarePath(m_OrigFirmware); + + 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()), downloadProgress, SLOT(close())); + return; + } + + connect(dp.buttonAbort, SIGNAL(clicked()), this, SLOT(close())); + connect(dp.buttonAbort, SIGNAL(clicked()),downloadProgress, SLOT(close())); +} + +void InstallBl::setDeviceSettings(QSettings *dev) +{ + devices = dev; + + if(userSettings->value("defaults/platform").toString() == "h100" || + userSettings->value("defaults/platform").toString() == "h120" || + userSettings->value("defaults/platform").toString() == "h300") + { + ui.buttonBrowseOF->show(); + ui.lineOriginalFirmware->show(); + ui.label_3->show(); + } + else + { + ui.buttonBrowseOF->hide(); + ui.lineOriginalFirmware->hide(); + ui.label_3->hide(); + } + qDebug() << "Install::setDeviceSettings:" << devices; +} + +void InstallBl::setUserSettings(QSettings *user) +{ + userSettings = user; +} diff --git a/rbutil/rbutilqt/installzip.cpp b/rbutil/rbutilqt/installzip.cpp index 82e9486d06..d4072f852a 100644 --- a/rbutil/rbutilqt/installzip.cpp +++ b/rbutil/rbutilqt/installzip.cpp @@ -48,7 +48,7 @@ void ZipInstaller::install(Ui::InstallProgressFrm* dp) connect(getter, SIGNAL(done(bool)), this, SLOT(downloadDone(bool))); connect(getter, SIGNAL(downloadDone(int, bool)), this, SLOT(downloadRequestFinished(int, bool))); connect(getter, SIGNAL(dataReadProgress(int, int)), this, SLOT(updateDataReadProgress(int, int))); - + connect(m_dp->buttonAbort, SIGNAL(clicked()), getter, SLOT(abort())); } void ZipInstaller::downloadRequestFinished(int id, bool error) @@ -63,7 +63,6 @@ void ZipInstaller::downloadDone(bool error) { qDebug() << "Install::downloadDone, error:" << error; - // update progress bar int max = m_dp->progressBar->maximum(); diff --git a/rbutil/rbutilqt/installzipfrm.ui b/rbutil/rbutilqt/installzipfrm.ui new file mode 100644 index 0000000000..fe88e024f4 --- /dev/null +++ b/rbutil/rbutilqt/installzipfrm.ui @@ -0,0 +1,108 @@ + + InstallZipFrm + + + Qt::WindowModal + + + + 0 + 0 + 665 + 499 + + + + Install Zip + + + + + + + + + :/icons/icons/wizard.xpm + + + + + + + Select your device in the filesystem + + + + + + + + + + &Browse + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + buttonBox + accepted() + InstallZipFrm + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + InstallZipFrm + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/rbutil/rbutilqt/installzipwindow.cpp b/rbutil/rbutilqt/installzipwindow.cpp new file mode 100644 index 0000000000..00a6a2b1ed --- /dev/null +++ b/rbutil/rbutilqt/installzipwindow.cpp @@ -0,0 +1,128 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * + * Copyright (C) 2007 by Dominik Wenger + * $Id: installzipwindow.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 "installzipwindow.h" +#include "ui_installprogressfrm.h" + + +InstallZipWindow::InstallZipWindow(QWidget *parent) : QDialog(parent) +{ + ui.setupUi(this); + connect(ui.buttonBrowse, SIGNAL(clicked()), this, SLOT(browseFolder())); +} + +void InstallZipWindow::setProxy(QUrl proxy_url) +{ + proxy = proxy_url; + qDebug() << "Install::setProxy" << proxy; +} + +void InstallZipWindow::setMountPoint(QString mount) +{ + QFileInfo m(mount); + if(m.isDir()) { + ui.lineMountPoint->clear(); + ui.lineMountPoint->insert(mount); + } +} + +void InstallZipWindow::setUrl(QString path) +{ + url = path; +} + +void InstallZipWindow::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 InstallZipWindow::accept() +{ + downloadProgress = new QDialog(this); + dp.setupUi(downloadProgress); + + // 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(); + + installer = new ZipInstaller(this); + + QString fileName = url.section('/', -1); + + installer->setFilename(fileName); + installer->setUrl(url); + installer->setProxy(proxy); + installer->setLogSection(logsection); + installer->setMountPoint(mountPoint); + installer->install(&dp); + + connect(installer, SIGNAL(done(bool)), this, SLOT(done(bool))); + + downloadProgress->show(); + +} + + +void InstallZipWindow::done(bool error) +{ + qDebug() << "Install::done, error:" << error; + + if(error) + { + // connect close button now as it's needed if we break upon an error + connect(dp.buttonAbort, SIGNAL(clicked()), downloadProgress, SLOT(close())); + return; + } + + connect(dp.buttonAbort, SIGNAL(clicked()), this, SLOT(close())); + connect(dp.buttonAbort, SIGNAL(clicked()),downloadProgress, SLOT(close())); +} + +void InstallZipWindow::setDeviceSettings(QSettings *dev) +{ + devices = dev; + qDebug() << "Install::setDeviceSettings:" << devices; +} + +void InstallZipWindow::setUserSettings(QSettings *user) +{ + userSettings = user; +} diff --git a/rbutil/rbutilqt/installzipwindow.h b/rbutil/rbutilqt/installzipwindow.h new file mode 100644 index 0000000000..733d40fdc8 --- /dev/null +++ b/rbutil/rbutilqt/installzipwindow.h @@ -0,0 +1,68 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * + * Copyright (C) 2007 by Dominik Wenger + * $Id: installzipwindow.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 INSTALLZIPWINDOW_H +#define INSTALLZIPWINDOW_H + +#include + +#include + +#include "ui_installzipfrm.h" +#include "ui_installprogressfrm.h" +#include "installzip.h" + + +class InstallZipWindow : public QDialog +{ + Q_OBJECT + public: + InstallZipWindow(QWidget *parent = 0); + void setProxy(QUrl); + void setMountPoint(QString); + void setUrl(QString); + void setLogSection(QString name){logsection = name; } + void setUserSettings(QSettings*); + void setDeviceSettings(QSettings*); + + public slots: + void accept(void); + + private: + Ui::InstallZipFrm ui; + Ui::InstallProgressFrm dp; + QUrl proxy; + QSettings *devices; + QSettings *userSettings; + QDialog *downloadProgress; + QString file; + QString fileName; + QString mountPoint; + QString url; + QString logsection; + ZipInstaller* installer; + + private slots: + void browseFolder(void); + void done(bool); + +}; + + +#endif diff --git a/rbutil/rbutilqt/rbutil.ini b/rbutil/rbutilqt/rbutil.ini index a9deb7009c..84112c12ee 100644 --- a/rbutil/rbutilqt/rbutil.ini +++ b/rbutil/rbutilqt/rbutil.ini @@ -3,7 +3,7 @@ download_url=http://www.rockbox.org/download/ daily_url=http://download.rockbox.org/daily/ bleeding_url=http://build.rockbox.org/dist/build- server_conf_url=http://www.rockbox.org/daily/build-info -font_url=http://www.rockbox.org/daily/fonts/rockbox-fonts- +font_url=http://www.rockbox.org/daily/fonts/rockbox-fonts.zip last_release=2.5 prog_name=rockbox bootloader_url=http://download.rockbox.org/bootloader diff --git a/rbutil/rbutilqt/rbutilqt.cpp b/rbutil/rbutilqt/rbutilqt.cpp index d891acd0f3..fa3e63ac32 100644 --- a/rbutil/rbutilqt/rbutilqt.cpp +++ b/rbutil/rbutilqt/rbutilqt.cpp @@ -1,249 +1,279 @@ -/*************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ - * - * Copyright (C) 2007 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 "version.h" -#include "rbutilqt.h" -#include "ui_rbutilqtfrm.h" -#include "ui_aboutbox.h" -#include "configure.h" -#include "install.h" -#include "installbl.h" -#include "httpget.h" -#include "installbootloader.h" - -RbUtilQt::RbUtilQt(QWidget *parent) : QMainWindow(parent) -{ - QString programPath = qApp->arguments().at(0); - absolutePath = QFileInfo(programPath).absolutePath() + "/"; - // use built-in rbutil.ini if no external file in binary folder - QString iniFile = absolutePath + "rbutil.ini"; - if(QFileInfo(iniFile).isFile()) { - qDebug() << "using external rbutil.ini"; - devices = new QSettings(iniFile, QSettings::IniFormat, 0); - } - else { - qDebug() << "using built-in rbutil.ini"; - devices = new QSettings(":/ini/rbutil.ini", QSettings::IniFormat, 0); - } - - ui.setupUi(this); - initDeviceNames(); - - // portable installation: - // check for a configuration file in the program folder. - QFileInfo config; - config.setFile(absolutePath + "RockboxUtility.ini"); - if(config.isFile()) { - userSettings = new QSettings(absolutePath + "RockboxUtility.ini", - QSettings::IniFormat, 0); - qDebug() << "config: portable"; - } - else { - userSettings = new QSettings(QSettings::IniFormat, - QSettings::UserScope, "rockbox.org", "RockboxUtility"); - qDebug() << "config: system"; - } - - userSettings->beginGroup("defaults"); - platform = userSettings->value("platform").toString(); - userSettings->endGroup(); - ui.comboBoxDevice->setCurrentIndex(ui.comboBoxDevice->findData(platform)); - updateDevice(ui.comboBoxDevice->currentIndex()); - - connect(ui.actionAbout_Qt, SIGNAL(triggered()), qApp, SLOT(aboutQt())); - connect(ui.action_About, SIGNAL(triggered()), this, SLOT(about())); - connect(ui.action_Configure, SIGNAL(triggered()), this, SLOT(configDialog())); - connect(ui.comboBoxDevice, SIGNAL(currentIndexChanged(int)), this, SLOT(updateDevice(int))); - connect(ui.buttonRockbox, SIGNAL(clicked()), this, SLOT(install())); - connect(ui.buttonBootloader, SIGNAL(clicked()), this, SLOT(installBl())); - - // disable unimplemented stuff - ui.buttonThemes->setEnabled(false); - ui.buttonSmall->setEnabled(false); - ui.buttonRemoveRockbox->setEnabled(false); - ui.buttonRemoveBootloader->setEnabled(false); - ui.buttonGames->setEnabled(false); - ui.buttonFonts->setEnabled(false); - ui.buttonComplete->setEnabled(false); - ui.buttonDetect->setEnabled(false); - - initIpodpatcher(); - downloadInfo(); - -} - - -void RbUtilQt::downloadInfo() -{ - // try to get the current build information - daily = new HttpGet(this); - connect(daily, SIGNAL(done(bool)), this, SLOT(downloadDone(bool))); - connect(daily, SIGNAL(requestFinished(int, bool)), this, SLOT(downloadDone(int, bool))); - if(userSettings->value("defaults/proxytype") == "manual") - daily->setProxy(QUrl(userSettings->value("defaults/proxy").toString())); - - qDebug() << "downloading build info"; - daily->setFile(&buildInfo); - daily->getFile(QUrl(devices->value("server_conf_url").toString())); -} - - -void RbUtilQt::downloadDone(bool error) -{ - if(error) qDebug() << "network error:" << daily->error(); - qDebug() << "network status:" << daily->error(); - -} - - -void RbUtilQt::downloadDone(int id, bool error) -{ - QString errorString; - errorString = tr("Network error: %1. Please check your network and proxy settings.").arg(daily->errorString()); - if(error) QMessageBox::about(this, "Network Error", errorString); - qDebug() << "downloadDone:" << id << error; -} - - -void RbUtilQt::about() -{ - QDialog *window = new QDialog; - Ui::aboutBox about; - about.setupUi(window); - - QFile licence(":/docs/gpl-2.0.html"); - licence.open(QIODevice::ReadOnly); - QTextStream c(&licence); - QString cline = c.readAll(); - about.browserLicense->insertHtml(cline); - about.browserLicense->moveCursor(QTextCursor::Start, QTextCursor::MoveAnchor); - QFile credits(":/docs/CREDITS"); - credits.open(QIODevice::ReadOnly); - QTextStream r(&credits); - QString rline = r.readAll(); - about.browserCredits->insertPlainText(rline); - about.browserCredits->moveCursor(QTextCursor::Start, QTextCursor::MoveAnchor); - QString title = QString("The Rockbox Utility Version %1").arg(VERSION); - about.labelTitle->setText(title); - - window->show(); - -} - - -void RbUtilQt::configDialog() -{ - Config *cw = new Config(this); - cw->setUserSettings(userSettings); - cw->show(); - connect(cw, SIGNAL(settingsUpdated()), this, SLOT(downloadInfo())); -} - - -void RbUtilQt::initDeviceNames() -{ - qDebug() << "RbUtilQt::initDeviceNames()"; - devices->beginGroup("platforms"); - QStringList a = devices->childKeys(); - devices->endGroup(); - - for(int it = 0; it < a.size(); it++) { - QString curdev; - devices->beginGroup("platforms"); - curdev = devices->value(a.at(it), "null").toString(); - devices->endGroup(); - QString curname; - devices->beginGroup(curdev); - curname = devices->value("name", "null").toString(); - devices->endGroup(); - ui.comboBoxDevice->addItem(curname, curdev); - } -} - - -void RbUtilQt::updateDevice(int index) -{ - platform = ui.comboBoxDevice->itemData(index).toString(); - userSettings->setValue("defaults/platform", platform); - userSettings->sync(); - - devices->beginGroup(platform); - if(devices->value("needsbootloader", "") == "no") { - ui.buttonBootloader->setEnabled(false); - ui.buttonRemoveBootloader->setEnabled(false); - ui.labelBootloader->setEnabled(false); - ui.labelRemoveBootloader->setEnabled(false); - } - else { - ui.buttonBootloader->setEnabled(true); - ui.labelBootloader->setEnabled(true); - if(devices->value("bootloadermethod") == "fwpatcher") { - ui.labelRemoveBootloader->setEnabled(false); - ui.buttonRemoveBootloader->setEnabled(false); - } - else { - ui.labelRemoveBootloader->setEnabled(true); - ui.buttonRemoveBootloader->setEnabled(true); - } - } - devices->endGroup(); - - qDebug() << "new device selected:" << platform; -} - - -void RbUtilQt::install() -{ - Install *installWindow = new Install(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()); - - buildInfo.open(); - QSettings info(buildInfo.fileName(), QSettings::IniFormat, this); - buildInfo.close(); - installWindow->setArchivedString(info.value("dailies/date").toString()); - - devices->beginGroup(platform); - QString released = devices->value("released").toString(); - devices->endGroup(); - if(released == "yes") - installWindow->setReleased(devices->value("last_release", "").toString()); - else - installWindow->setReleased(0); - - 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(); -} - +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * + * Copyright (C) 2007 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 "version.h" +#include "rbutilqt.h" +#include "ui_rbutilqtfrm.h" +#include "ui_aboutbox.h" +#include "configure.h" +#include "install.h" +#include "installbl.h" +#include "httpget.h" +#include "installbootloader.h" +#include "installzipwindow.h" + +RbUtilQt::RbUtilQt(QWidget *parent) : QMainWindow(parent) +{ + QString programPath = qApp->arguments().at(0); + absolutePath = QFileInfo(programPath).absolutePath() + "/"; + // use built-in rbutil.ini if no external file in binary folder + QString iniFile = absolutePath + "rbutil.ini"; + if(QFileInfo(iniFile).isFile()) { + qDebug() << "using external rbutil.ini"; + devices = new QSettings(iniFile, QSettings::IniFormat, 0); + } + else { + qDebug() << "using built-in rbutil.ini"; + devices = new QSettings(":/ini/rbutil.ini", QSettings::IniFormat, 0); + } + + ui.setupUi(this); + initDeviceNames(); + + // portable installation: + // check for a configuration file in the program folder. + QFileInfo config; + config.setFile(absolutePath + "RockboxUtility.ini"); + if(config.isFile()) { + userSettings = new QSettings(absolutePath + "RockboxUtility.ini", + QSettings::IniFormat, 0); + qDebug() << "config: portable"; + } + else { + userSettings = new QSettings(QSettings::IniFormat, + QSettings::UserScope, "rockbox.org", "RockboxUtility"); + qDebug() << "config: system"; + } + + userSettings->beginGroup("defaults"); + platform = userSettings->value("platform").toString(); + userSettings->endGroup(); + ui.comboBoxDevice->setCurrentIndex(ui.comboBoxDevice->findData(platform)); + updateDevice(ui.comboBoxDevice->currentIndex()); + + connect(ui.actionAbout_Qt, SIGNAL(triggered()), qApp, SLOT(aboutQt())); + connect(ui.action_About, SIGNAL(triggered()), this, SLOT(about())); + connect(ui.action_Configure, SIGNAL(triggered()), this, SLOT(configDialog())); + connect(ui.comboBoxDevice, SIGNAL(currentIndexChanged(int)), this, SLOT(updateDevice(int))); + connect(ui.buttonRockbox, SIGNAL(clicked()), this, SLOT(install())); + connect(ui.buttonBootloader, SIGNAL(clicked()), this, SLOT(installBl())); + connect(ui.buttonFonts, SIGNAL(clicked()), this, SLOT(installFonts())); + connect(ui.buttonGames, SIGNAL(clicked()), this, SLOT(installDoom())); + + // disable unimplemented stuff + ui.buttonThemes->setEnabled(false); + ui.buttonSmall->setEnabled(false); + ui.buttonRemoveRockbox->setEnabled(false); + ui.buttonRemoveBootloader->setEnabled(false); + ui.buttonComplete->setEnabled(false); + ui.buttonDetect->setEnabled(false); + + initIpodpatcher(); + downloadInfo(); + +} + + +void RbUtilQt::downloadInfo() +{ + // try to get the current build information + daily = new HttpGet(this); + connect(daily, SIGNAL(done(bool)), this, SLOT(downloadDone(bool))); + connect(daily, SIGNAL(requestFinished(int, bool)), this, SLOT(downloadDone(int, bool))); + if(userSettings->value("defaults/proxytype") == "manual") + daily->setProxy(QUrl(userSettings->value("defaults/proxy").toString())); + + qDebug() << "downloading build info"; + daily->setFile(&buildInfo); + daily->getFile(QUrl(devices->value("server_conf_url").toString())); +} + + +void RbUtilQt::downloadDone(bool error) +{ + if(error) qDebug() << "network error:" << daily->error(); + qDebug() << "network status:" << daily->error(); + +} + + +void RbUtilQt::downloadDone(int id, bool error) +{ + QString errorString; + errorString = tr("Network error: %1. Please check your network and proxy settings.").arg(daily->errorString()); + if(error) QMessageBox::about(this, "Network Error", errorString); + qDebug() << "downloadDone:" << id << error; +} + + +void RbUtilQt::about() +{ + QDialog *window = new QDialog; + Ui::aboutBox about; + about.setupUi(window); + + QFile licence(":/docs/gpl-2.0.html"); + licence.open(QIODevice::ReadOnly); + QTextStream c(&licence); + QString cline = c.readAll(); + about.browserLicense->insertHtml(cline); + about.browserLicense->moveCursor(QTextCursor::Start, QTextCursor::MoveAnchor); + QFile credits(":/docs/CREDITS"); + credits.open(QIODevice::ReadOnly); + QTextStream r(&credits); + QString rline = r.readAll(); + about.browserCredits->insertPlainText(rline); + about.browserCredits->moveCursor(QTextCursor::Start, QTextCursor::MoveAnchor); + QString title = QString("The Rockbox Utility Version %1").arg(VERSION); + about.labelTitle->setText(title); + + window->show(); + +} + + +void RbUtilQt::configDialog() +{ + Config *cw = new Config(this); + cw->setUserSettings(userSettings); + cw->show(); + connect(cw, SIGNAL(settingsUpdated()), this, SLOT(downloadInfo())); +} + + +void RbUtilQt::initDeviceNames() +{ + qDebug() << "RbUtilQt::initDeviceNames()"; + devices->beginGroup("platforms"); + QStringList a = devices->childKeys(); + devices->endGroup(); + + for(int it = 0; it < a.size(); it++) { + QString curdev; + devices->beginGroup("platforms"); + curdev = devices->value(a.at(it), "null").toString(); + devices->endGroup(); + QString curname; + devices->beginGroup(curdev); + curname = devices->value("name", "null").toString(); + devices->endGroup(); + ui.comboBoxDevice->addItem(curname, curdev); + } +} + + +void RbUtilQt::updateDevice(int index) +{ + platform = ui.comboBoxDevice->itemData(index).toString(); + userSettings->setValue("defaults/platform", platform); + userSettings->sync(); + + devices->beginGroup(platform); + if(devices->value("needsbootloader", "") == "no") { + ui.buttonBootloader->setEnabled(false); + ui.buttonRemoveBootloader->setEnabled(false); + ui.labelBootloader->setEnabled(false); + ui.labelRemoveBootloader->setEnabled(false); + } + else { + ui.buttonBootloader->setEnabled(true); + ui.labelBootloader->setEnabled(true); + if(devices->value("bootloadermethod") == "fwpatcher") { + ui.labelRemoveBootloader->setEnabled(false); + ui.buttonRemoveBootloader->setEnabled(false); + } + else { + ui.labelRemoveBootloader->setEnabled(true); + ui.buttonRemoveBootloader->setEnabled(true); + } + } + devices->endGroup(); + + qDebug() << "new device selected:" << platform; +} + + +void RbUtilQt::install() +{ + Install *installWindow = new Install(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()); + + buildInfo.open(); + QSettings info(buildInfo.fileName(), QSettings::IniFormat, this); + buildInfo.close(); + installWindow->setArchivedString(info.value("dailies/date").toString()); + + devices->beginGroup(platform); + QString released = devices->value("released").toString(); + devices->endGroup(); + if(released == "yes") + installWindow->setReleased(devices->value("last_release", "").toString()); + else + installWindow->setReleased(0); + + 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(); +} + +void RbUtilQt::installFonts() +{ + InstallZipWindow* installWindow = new InstallZipWindow(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->setLogSection("Fonts"); + installWindow->setUrl(devices->value("font_url").toString()); + installWindow->setWindowTitle("Font Installation"); + installWindow->show(); + +} + +void RbUtilQt::installDoom() +{ + InstallZipWindow* installWindow = new InstallZipWindow(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->setLogSection("Doom"); + installWindow->setUrl(devices->value("doom_url").toString()); + installWindow->setWindowTitle("Doom Installation"); + installWindow->show(); + +} diff --git a/rbutil/rbutilqt/rbutilqt.h b/rbutil/rbutilqt/rbutilqt.h index 324fe55e55..8107c9bfff 100644 --- a/rbutil/rbutilqt/rbutilqt.h +++ b/rbutil/rbutilqt/rbutilqt.h @@ -1,58 +1,60 @@ -/*************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ - * - * Copyright (C) 2007 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. - * - ****************************************************************************/ - - -#ifndef QRBUTIL_H -#define QRBUTIL_H - -#include "ui_rbutilqtfrm.h" -#include "httpget.h" -#include -#include - -class RbUtilQt : public QMainWindow -{ - Q_OBJECT - - public: - RbUtilQt(QWidget *parent = 0); - - private: - Ui::RbUtilQtFrm ui; - QSettings *devices; - QSettings *userSettings; - void initDeviceNames(void); - QString deviceName(QString); - QString platform; - HttpGet *daily; - QString absolutePath; - QTemporaryFile buildInfo; - - private slots: - void about(void); - void configDialog(void); - void updateDevice(int); - void install(void); - void installBl(void); - void downloadDone(bool); - void downloadDone(int, bool); - void downloadInfo(void); -}; - -#endif +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * + * Copyright (C) 2007 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. + * + ****************************************************************************/ + + +#ifndef QRBUTIL_H +#define QRBUTIL_H + +#include "ui_rbutilqtfrm.h" +#include "httpget.h" +#include +#include + +class RbUtilQt : public QMainWindow +{ + Q_OBJECT + + public: + RbUtilQt(QWidget *parent = 0); + + private: + Ui::RbUtilQtFrm ui; + QSettings *devices; + QSettings *userSettings; + void initDeviceNames(void); + QString deviceName(QString); + QString platform; + HttpGet *daily; + QString absolutePath; + QTemporaryFile buildInfo; + + private slots: + void about(void); + void configDialog(void); + void updateDevice(int); + void install(void); + void installBl(void); + void installFonts(void); + void installDoom(void); + void downloadDone(bool); + void downloadDone(int, bool); + void downloadInfo(void); +}; + +#endif diff --git a/rbutil/rbutilqt/rbutilqt.pro b/rbutil/rbutilqt/rbutilqt.pro index f42233cc54..72d3d46e68 100644 --- a/rbutil/rbutilqt/rbutilqt.pro +++ b/rbutil/rbutilqt/rbutilqt.pro @@ -1,68 +1,74 @@ -SOURCES += rbutilqt.cpp \ - main.cpp \ - install.cpp \ - httpget.cpp \ - configure.cpp \ - zip/zip.cpp \ - zip/unzip.cpp \ - installzip.cpp \ - installbootloader.cpp \ - installbl.cpp \ - ../ipodpatcher/ipodpatcher.c \ - ../sansapatcher/sansapatcher.c \ - irivertools/irivertools.cpp \ - irivertools/md5sum.cpp - - -HEADERS += rbutilqt.h \ - settings.h \ - install.h \ - httpget.h \ - configure.h \ - zip/zip.h \ - zip/unzip.h \ - zip/zipentry_p.h \ - zip/unzip_p.h \ - zip/zip_p.h \ - version.h \ - installzip.h \ - installbootloader.h \ - installbl.h \ - ../ipodpatcher/ipodpatcher.h \ - ../ipodpatcher/ipodio.h \ - ../ipodpatcher/parttypes.h \ - ../sansapatcher/sansapatcher.h \ - ../sansapatcher/sansaio.h \ - irivertools/irivertools.h \ - irivertools/md5sum.h \ - irivertools/h100sums.h \ - irivertools/h120sums.h \ - irivertools/h300sums.h - -TEMPLATE = app -CONFIG += release \ - warn_on \ - thread \ - qt -TARGET = rbutilqt -FORMS += rbutilqtfrm.ui \ - aboutbox.ui \ - installfrm.ui \ - installprogressfrm.ui \ - configurefrm.ui \ - installbootloaderfrm.ui -RESOURCES += rbutilqt.qrc - -TRANSLATIONS += rbutil_de.ts -QT += network -DEFINES += RBUTIL - -win32{ - SOURCES += ../ipodpatcher/ipodio-win32.c - SOURCES += ../sansapatcher/sansaio-win32.c -} - -unix{ - SOURCES += ../ipodpatcher/ipodio-posix.c - SOURCES += ../sansapatcher/sansaio-posix.c -} +SOURCES += rbutilqt.cpp \ + main.cpp \ + install.cpp \ + httpget.cpp \ + configure.cpp \ + zip/zip.cpp \ + zip/unzip.cpp \ + installzip.cpp \ + installbootloader.cpp \ + installbl.cpp \ + installzipwindow.cpp \ + ../ipodpatcher/ipodpatcher.c \ + ../sansapatcher/sansapatcher.c \ + irivertools/irivertools.cpp \ + irivertools/md5sum.cpp + + +HEADERS += rbutilqt.h \ + settings.h \ + install.h \ + httpget.h \ + configure.h \ + zip/zip.h \ + zip/unzip.h \ + zip/zipentry_p.h \ + zip/unzip_p.h \ + zip/zip_p.h \ + version.h \ + installzip.h \ + installbootloader.h \ + installbl.h \ + installzipwindow.h \ + ../ipodpatcher/ipodpatcher.h \ + ../ipodpatcher/ipodio.h \ + ../ipodpatcher/parttypes.h \ + ../sansapatcher/sansapatcher.h \ + ../sansapatcher/sansaio.h \ + irivertools/irivertools.h \ + irivertools/md5sum.h \ + irivertools/h100sums.h \ + irivertools/h120sums.h \ + irivertools/h300sums.h + +TEMPLATE = app +CONFIG += release \ + warn_on \ + thread \ + qt +TARGET = rbutilqt + +FORMS += rbutilqtfrm.ui \ + aboutbox.ui \ + installfrm.ui \ + installprogressfrm.ui \ + configurefrm.ui \ + installbootloaderfrm.ui \ + installzipfrm.ui + + +RESOURCES += rbutilqt.qrc + +TRANSLATIONS += rbutil_de.ts +QT += network +DEFINES += RBUTIL + +win32{ + SOURCES += ../ipodpatcher/ipodio-win32.c + SOURCES += ../sansapatcher/sansaio-win32.c +} + +unix{ + SOURCES += ../ipodpatcher/ipodio-posix.c + SOURCES += ../sansapatcher/sansaio-posix.c +}