diff options
author | Chris Robinson <[email protected]> | 2014-08-05 04:56:51 -0700 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2014-08-05 04:56:51 -0700 |
commit | bda39c5038e67bdad0c39a3c311136167aad3d15 (patch) | |
tree | 14aa4e420d52990bc4d3f671ab449a53be958252 | |
parent | 066a48c5fb8cee4b32bd7145dd78147ba709f067 (diff) |
Filter for relative HRTF data paths and add Add/Remove label texts
-rw-r--r-- | utils/alsoft-config/mainwindow.cpp | 72 | ||||
-rw-r--r-- | utils/alsoft-config/mainwindow.ui | 19 |
2 files changed, 79 insertions, 12 deletions
diff --git a/utils/alsoft-config/mainwindow.cpp b/utils/alsoft-config/mainwindow.cpp index f009208a..c58000d9 100644 --- a/utils/alsoft-config/mainwindow.cpp +++ b/utils/alsoft-config/mainwindow.cpp @@ -52,6 +52,48 @@ static QString getDefaultConfigName() return base +'/'+ fname; return fname; } + +static QString getBaseDataPath() +{ +#ifdef Q_OS_WIN32 + QByteArray base = qgetenv("AppData"); +#else + QByteArray base = qgetenv("XDG_DATA_HOME"); + if(base.isEmpty()) + { + base = qgetenv("HOME"); + if(!base.isEmpty()) + base += "/.local/share"; + } +#endif + return base; +} + +static QStringList getAllDataPaths(QString append=QString()) +{ + QStringList list; + list.append(getBaseDataPath()); +#ifdef Q_OS_WIN32 + // TODO: Common AppData path +#else + QString paths = qgetenv("XDG_DATA_DIRS"); + if(paths.isEmpty()) + paths = "/usr/local/share/:/usr/share/"; + list += paths.split(QChar(':'), QString::SkipEmptyParts); +#endif + QStringList::iterator iter = list.begin(); + while(iter != list.end()) + { + if(iter->isEmpty()) + iter = list.erase(iter); + else + { + iter->append(append); + iter++; + } + } + return list; +} } MainWindow::MainWindow(QWidget *parent) : @@ -490,10 +532,36 @@ void MainWindow::updatePeriodCountSlider() void MainWindow::addHrtfFile() { - QStringList fnames = QFileDialog::getOpenFileNames(this, tr("Select Files"), QString(), + const QStringList datapaths = getAllDataPaths("/openal/hrtf"); + QStringList fnames = QFileDialog::getOpenFileNames(this, tr("Select Files"), + datapaths.empty() ? QString() : datapaths[0], "HRTF Datasets(*.mhr);;All Files(*.*)"); if(fnames.isEmpty() == false) - ui->hrtfFileList->addItems(fnames); + { + for(QStringList::iterator iter = fnames.begin();iter != fnames.end();iter++) + { + QStringList::const_iterator path = datapaths.constBegin(); + for(;path != datapaths.constEnd();path++) + { + QDir hrtfdir(*path); + if(!hrtfdir.isAbsolute()) + continue; + + const QString relname = hrtfdir.relativeFilePath(*iter); + if(!relname.startsWith("..")) + { + // If filename is within this path, use the relative pathname + ui->hrtfFileList->addItem(relname); + break; + } + } + if(path == datapaths.constEnd()) + { + // Filename is not within any data path, use the absolute pathname + ui->hrtfFileList->addItem(*iter); + } + } + } } void MainWindow::removeHrtfFile() diff --git a/utils/alsoft-config/mainwindow.ui b/utils/alsoft-config/mainwindow.ui index 7a0276d8..b9e9acee 100644 --- a/utils/alsoft-config/mainwindow.ui +++ b/utils/alsoft-config/mainwindow.ui @@ -348,15 +348,14 @@ sample rate.</string> <rect> <x>110</x> <y>30</y> - <width>361</width> + <width>301</width> <height>121</height> </rect> </property> <property name="toolTip"> <string>A list of files containing HRTF data sets. The listed data sets -are used in place of or in addition to the the default sets. The -filenames may contain these markers, which will be replaced -as needed: +are used in place of the default sets. The filenames may +contain these markers, which will be replaced as needed: %r - Device sampling rate %% - Percent sign (%)</string> </property> @@ -379,14 +378,14 @@ as needed: <widget class="QPushButton" name="hrtfAddButton"> <property name="geometry"> <rect> - <x>475</x> + <x>419</x> <y>30</y> - <width>25</width> + <width>81</width> <height>25</height> </rect> </property> <property name="text"> - <string/> + <string>Add...</string> </property> <property name="icon"> <iconset theme="list-add"> @@ -400,14 +399,14 @@ as needed: <widget class="QPushButton" name="hrtfRemoveButton"> <property name="geometry"> <rect> - <x>475</x> + <x>419</x> <y>60</y> - <width>25</width> + <width>81</width> <height>25</height> </rect> </property> <property name="text"> - <string/> + <string>Remove</string> </property> <property name="icon"> <iconset theme="list-remove"> |