From 3a4e540c3db4309990965455b0686230345be002 Mon Sep 17 00:00:00 2001 From: Dominik Riebeling Date: Tue, 7 Aug 2007 16:48:45 +0000 Subject: Replace the file selection dialog for the mountpoint with a pure folder tree view. This fixes an issue with the selection dialog which could try opening a nonexisting folder. Only allow to select drive letters on windows. Additionally, remove an old file I forgot earlier. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14233 a1c6a512-1295-4272-9138-f99709370657 --- rbutil/rbutilqt/browsedirtree.cpp | 70 ++++++++++++++++++ rbutil/rbutilqt/browsedirtree.h | 46 ++++++++++++ rbutil/rbutilqt/browsedirtreefrm.ui | 105 +++++++++++++++++++++++++++ rbutil/rbutilqt/configure.cpp | 33 +++++---- rbutil/rbutilqt/configure.h | 6 +- rbutil/rbutilqt/installzipfrm.ui | 141 ------------------------------------ rbutil/rbutilqt/rbutilqt.pro | 15 ++-- 7 files changed, 253 insertions(+), 163 deletions(-) create mode 100644 rbutil/rbutilqt/browsedirtree.cpp create mode 100644 rbutil/rbutilqt/browsedirtree.h create mode 100644 rbutil/rbutilqt/browsedirtreefrm.ui delete mode 100644 rbutil/rbutilqt/installzipfrm.ui diff --git a/rbutil/rbutilqt/browsedirtree.cpp b/rbutil/rbutilqt/browsedirtree.cpp new file mode 100644 index 0000000000..0899ab103f --- /dev/null +++ b/rbutil/rbutilqt/browsedirtree.cpp @@ -0,0 +1,70 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * + * Copyright (C) 2007 by Dominik Riebeling + * $Id: installrb.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 + +#include "browsedirtree.h" +#include "ui_browsedirtreefrm.h" + + +BrowseDirtree::BrowseDirtree(QWidget *parent) : QDialog(parent) +{ + ui.setupUi(this); + this->setModal(true); + ui.tree->setModel(&model); + model.setReadOnly(true); + // disable size / date / type columns + ui.tree->setColumnHidden(1, true); + ui.tree->setColumnHidden(2, true); + ui.tree->setColumnHidden(3, true); +} + + +void BrowseDirtree::setDir(QDir &dir) +{ + qDebug() << "BrowseDirtree::setDir()" << model.index(dir.absolutePath()); + + // hilight the set directory if it's valid + if(model.index(dir.absolutePath()).isValid()) { + model.index(dir.absolutePath()).parent(); + + QModelIndex p = model.index(dir.absolutePath()); + ui.tree->setCurrentIndex(p); + ui.tree->scrollTo(p); + ui.tree->resizeColumnToContents(0); + } +} + + +void BrowseDirtree::setFilter(QDir::Filters filters) +{ + model.setFilter(filters); +} + + +void BrowseDirtree::accept() +{ + QString path; + path = model.filePath(ui.tree->currentIndex()); + + this->close(); + emit itemChanged(path); +} + + diff --git a/rbutil/rbutilqt/browsedirtree.h b/rbutil/rbutilqt/browsedirtree.h new file mode 100644 index 0000000000..3b6846c211 --- /dev/null +++ b/rbutil/rbutilqt/browsedirtree.h @@ -0,0 +1,46 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * + * Copyright (C) 2007 by Dominik Riebeling + * $Id: installrb.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. + * + ****************************************************************************/ + +#ifndef BROWSEDIRTREE_H +#define BROWSEDIRTREE_H + +#include +#include "ui_browsedirtreefrm.h" + +class BrowseDirtree : public QDialog +{ + Q_OBJECT + + public: + BrowseDirtree(QWidget *parent = 0); + void setFilter(QDir::Filters); + void setDir(QDir&); + + signals: + void itemChanged(QString); + + private: + Ui::BrowseDirtreeFrm ui; + QDirModel model; + + private slots: + void accept(void); +}; + +#endif diff --git a/rbutil/rbutilqt/browsedirtreefrm.ui b/rbutil/rbutilqt/browsedirtreefrm.ui new file mode 100644 index 0000000000..de95b47024 --- /dev/null +++ b/rbutil/rbutilqt/browsedirtreefrm.ui @@ -0,0 +1,105 @@ + + BrowseDirtreeFrm + + + + 0 + 0 + 275 + 380 + + + + Find Directory + + + + + + Browse to the destination folder + + + true + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + &Ok + + + :/icons/icons/go-next.png + + + + + + + &Cancel + + + :/icons/icons/process-stop.png + + + + + + + + + + + + + buttonCancel + clicked() + BrowseDirtreeFrm + reject() + + + 224 + 355 + + + 48 + 349 + + + + + buttonOk + clicked() + BrowseDirtreeFrm + accept() + + + 146 + 358 + + + 74 + 357 + + + + + diff --git a/rbutil/rbutilqt/configure.cpp b/rbutil/rbutilqt/configure.cpp index 90afd03741..05a734535f 100644 --- a/rbutil/rbutilqt/configure.cpp +++ b/rbutil/rbutilqt/configure.cpp @@ -22,6 +22,7 @@ #include "configure.h" #include "autodetection.h" #include "ui_configurefrm.h" +#include "browsedirtree.h" #ifdef __linux #include @@ -326,22 +327,25 @@ void Config::updateLanguage() void Config::browseFolder() { - QFileDialog browser(this); - if(QFileInfo(ui.mountPoint->text()).isDir()) - browser.setDirectory(ui.mountPoint->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(); - ui.mountPoint->setText(files.at(0)); - userSettings->setValue("defaults/mountpoint", files.at(0)); - } + browser = new BrowseDirtree(this); +#if defined(Q_OS_LINUX) || defined(Q_OS_MACX) + browser->setFilter(QDir::AllDirs | QDir::NoDotAndDotDot | QDir::NoSymLinks); +#elif defined(Q_OS_WIN32) + browser->setFilter(QDir::Drives); +#endif + QDir d(ui.mountPoint->text()); + browser->setDir(d); + browser->show(); + connect(browser, SIGNAL(itemChanged(QString)), this, SLOT(setMountpoint(QString))); } + +void Config::setMountpoint(QString m) +{ + ui.mountPoint->setText(m); +} + + void Config::autodetect() { Autodetection detector(this); @@ -394,3 +398,4 @@ void Config::autodetect() } } + diff --git a/rbutil/rbutilqt/configure.h b/rbutil/rbutilqt/configure.h index f1e6837c4b..43bc117567 100644 --- a/rbutil/rbutilqt/configure.h +++ b/rbutil/rbutilqt/configure.h @@ -21,6 +21,7 @@ #define CONFIGURE_H #include "ui_configurefrm.h" +#include "browsedirtree.h" #include class Config : public QDialog @@ -48,13 +49,16 @@ class Config : public QDialog QString language; QString programPath; QUrl proxy; - + + BrowseDirtree *browser; + private slots: void setNoProxy(bool); void setSystemProxy(bool); void updateLanguage(void); void browseFolder(void); void autodetect(void); + void setMountpoint(QString); }; #endif diff --git a/rbutil/rbutilqt/installzipfrm.ui b/rbutil/rbutilqt/installzipfrm.ui deleted file mode 100644 index 4a107ce189..0000000000 --- a/rbutil/rbutilqt/installzipfrm.ui +++ /dev/null @@ -1,141 +0,0 @@ - - InstallZipFrm - - - Qt::WindowModal - - - - 0 - 0 - 600 - 450 - - - - Install Zip - - - - - - - - - :/icons/icons/wizard.xpm - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - - - - - Select your device in the filesystem - - - - - - - - - - &Browse - - - :/icons/icons/system-search.png - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - &Ok - - - :/icons/icons/go-next.png - - - - - - - &Cancel - - - :/icons/icons/process-stop.png - - - - - - - - - - - - - buttonOk - clicked() - InstallZipFrm - accept() - - - 472 - 418 - - - 382 - 328 - - - - - buttonCancel - clicked() - InstallZipFrm - reject() - - - 561 - 428 - - - 522 - 332 - - - - - diff --git a/rbutil/rbutilqt/rbutilqt.pro b/rbutil/rbutilqt/rbutilqt.pro index 4835444f6d..243498ddd9 100644 --- a/rbutil/rbutilqt/rbutilqt.pro +++ b/rbutil/rbutilqt/rbutilqt.pro @@ -15,8 +15,8 @@ SOURCES += rbutilqt.cpp \ ../ipodpatcher/ipodpatcher.c \ ../sansapatcher/sansapatcher.c \ irivertools/irivertools.cpp \ - irivertools/md5sum.cpp - + irivertools/md5sum.cpp \ + browsedirtree.cpp HEADERS += rbutilqt.h \ settings.h \ @@ -47,7 +47,8 @@ HEADERS += rbutilqt.h \ irivertools/h100sums.h \ irivertools/h120sums.h \ irivertools/h300sums.h \ - irivertools/checksums.h + irivertools/checksums.h \ + browsedirtree.h TEMPLATE = app CONFIG += release \ @@ -62,8 +63,8 @@ FORMS += rbutilqtfrm.ui \ installprogressfrm.ui \ configurefrm.ui \ installbootloaderfrm.ui \ - installtalkfrm.ui - + browsedirtreefrm.ui \ + installtalkfrm.ui RESOURCES += rbutilqt.qrc @@ -71,12 +72,12 @@ TRANSLATIONS += rbutil_de.ts QT += network DEFINES += RBUTIL _LARGEFILE64_SOURCE -win32{ +win32 { SOURCES += ../ipodpatcher/ipodio-win32.c SOURCES += ../sansapatcher/sansaio-win32.c } -unix{ +unix { SOURCES += ../ipodpatcher/ipodio-posix.c SOURCES += ../sansapatcher/sansaio-posix.c } -- cgit v1.2.3