diff options
author | Wladimir J. van der Laan <laanwj@gmail.com> | 2013-11-06 15:08:56 +0100 |
---|---|---|
committer | Wladimir J. van der Laan <laanwj@gmail.com> | 2013-11-11 14:29:49 +0100 |
commit | 4c6035860448656c67fa60fef6b020aafbb2e208 (patch) | |
tree | d293e815b23f69b3f9555840af61ddf1d6c8fe79 /src/qt/guiutil.cpp | |
parent | 3a8915d9a85b37f6c58a512fc11457eaa3d3570e (diff) |
qt: add Open URI dialog
Diffstat (limited to 'src/qt/guiutil.cpp')
-rw-r--r-- | src/qt/guiutil.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/qt/guiutil.cpp b/src/qt/guiutil.cpp index e6a1138f11..85eeab2cbc 100644 --- a/src/qt/guiutil.cpp +++ b/src/qt/guiutil.cpp @@ -278,6 +278,41 @@ QString getSaveFileName(QWidget *parent, const QString &caption, const QString & return result; } +QString getOpenFileName(QWidget *parent, const QString &caption, const QString &dir, + const QString &filter, + QString *selectedSuffixOut) +{ + QString selectedFilter; + QString myDir; + if(dir.isEmpty()) // Default to user documents location + { +#if QT_VERSION < 0x050000 + myDir = QDesktopServices::storageLocation(QDesktopServices::DocumentsLocation); +#else + myDir = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation); +#endif + } + else + { + myDir = dir; + } + /* Directly convert path to native OS path separators */ + QString result = QDir::toNativeSeparators(QFileDialog::getOpenFileName(parent, caption, myDir, filter, &selectedFilter)); + + if(selectedSuffixOut) + { + /* Extract first suffix from filter pattern "Description (*.foo)" or "Description (*.foo *.bar ...) */ + QRegExp filter_re(".* \\(\\*\\.(.*)[ \\)]"); + QString selectedSuffix; + if(filter_re.exactMatch(selectedFilter)) + { + selectedSuffix = filter_re.cap(1); + } + *selectedSuffixOut = selectedSuffix; + } + return result; +} + Qt::ConnectionType blockingGUIThreadConnection() { if(QThread::currentThread() != qApp->thread()) |