--- a/src/qtgui/guiutils.cpp
+++ b/src/qtgui/guiutils.cpp
@@ -27,8 +27,9 @@
 #include "base64.h"
 #include "transcode.h"
 
-#include <qsettings.h>
-#include <qstringlist.h>
+#include <QSettings>
+#include <QStringList>
+#include <QFileDialog>
 
 RclDynConf *g_dynconf;
 
@@ -324,3 +325,30 @@
 	    prefs.asearchSubdirHist.push_front(QString::fromUtf8(it->c_str()));
     }
 }
+
+QString myGetFileName(bool isdir, QString caption)
+{
+    LOGDEB1(("myFileDialog: isdir %d\n", isdir));
+    QFileDialog dialog(0, caption);
+
+    if (isdir) {
+	dialog.setFileMode(QFileDialog::Directory);
+	dialog.setOptions(QFileDialog::ShowDirsOnly);
+    } else {
+	dialog.setFileMode(QFileDialog::AnyFile);
+	dialog.setAcceptMode(QFileDialog::AcceptSave);
+    }
+    dialog.setViewMode(QFileDialog::List);
+    QFlags<QDir::Filter> flags = QDir::NoDotAndDotDot | QDir::Hidden; 
+    if (isdir)
+	flags |= QDir::Dirs;
+    else 
+	flags |= QDir::Dirs | QDir::Files;
+    dialog.setFilter(flags);
+
+
+    if (dialog.exec() == QDialog::Accepted) {
+        return dialog.selectedFiles().value(0);
+    }
+    return QString();
+}