GUI: show hidden (dot) files in file/dir selection dialogs. Closes issue #62

This commit is contained in:
Jean-Francois Dockes 2011-06-04 14:46:07 +02:00
parent b6c73ecdeb
commit 16dea9d490
7 changed files with 43 additions and 52 deletions

View File

@ -26,7 +26,6 @@
#include <qlayout.h>
#include <qtooltip.h>
#include <qwhatsthis.h>
#include <qfiledialog.h>
#include <qmessagebox.h>
#include <list>
@ -374,6 +373,6 @@ void AdvSearch::runSearch()
void AdvSearch::browsePB_clicked()
{
QString dir = QFileDialog::getExistingDirectory();
QString dir = myGetFileName(true);
subtreeCMB->setEditText(dir);
}

View File

@ -22,7 +22,6 @@
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QFrame>
#include <QFileDialog>
#include <QListWidget>
#include <qobject.h>
@ -43,6 +42,7 @@
#include "smallut.h"
#include "debuglog.h"
#include "rcldb.h"
#include "guiutils.h"
#include <list>
using std::list;
@ -267,10 +267,9 @@ void ConfParamFNW::loadValue()
void ConfParamFNW::showBrowserDialog()
{
QString s = m_isdir ?
QFileDialog::getExistingDirectory() : QFileDialog::getSaveFileName();
if (!s.isEmpty())
m_le->setText(s);
QString s = myGetFileName(m_isdir);
if (!s.isEmpty())
m_le->setText(s);
}
class SmallerListWidget: public QListWidget
@ -400,7 +399,7 @@ void ConfParamSLW::deleteSelected()
// "Add entry" dialog for a file name list
void ConfParamDNLW::showInputDialog()
{
QString s = QFileDialog::getExistingDirectory();
QString s = myGetFileName(true);
if (!s.isEmpty()) {
QList<QListWidgetItem *>items =
m_lb->findItems(s, Qt::MatchFixedString|Qt::MatchCaseSensitive);

View File

@ -20,7 +20,6 @@
#include <QVBoxLayout>
#include <QGroupBox>
#include <QFrame>
#include <QFileDialog>
#include <qlayout.h>
#include <qwidget.h>
#include <qlabel.h>

View File

@ -26,41 +26,7 @@ using namespace std;
#include <qglobal.h>
#include <qobject.h>
#if QT_VERSION < 0x040000
#define QFRAME_INCLUDE <qframe.h>
#define QFILEDIALOG_INCLUDE <qfiledialog.h>
#define QLISTBOX_INCLUDE <qlistbox.h>
#include <qtabdialog.h>
#define QFILEDIALOG QFileDialog
#define QFRAME QFrame
#define QHBOXLAYOUT QHBoxLayout
#define QLISTBOX QListBox
#define QLISTBOXITEM QListBoxItem
#define QVBOXLAYOUT QVBoxLayout
#define QTABDIALOG QTabDialog
#else // Qt4 ->
#include <Q3HBoxLayout>
#include <Q3VBoxLayout>
#include <Q3TabDialog>
#include <QFrame>
#define QFRAME_INCLUDE <q3frame.h>
#include <QFileDialog>
#define QFILEDIALOG_INCLUDE <q3filedialog.h>
#define QLISTBOX_INCLUDE <q3listbox.h>
#define QFILEDIALOG Q3FileDialog
#define QFRAME Q3Frame
#define QHBOXLAYOUT Q3HBoxLayout
#define QLISTBOX Q3ListBox
#define QLISTBOXITEM Q3ListBoxItem
#define QVBOXLAYOUT Q3VBoxLayout
#define QTABDIALOG Q3TabDialog
#endif // QT 3/4
#include <qobject.h>
#include <qapplication.h>
#include <qtranslator.h>
@ -68,7 +34,6 @@ using namespace std;
#include <qthread.h>
#include <qtimer.h>
#include <qlayout.h>
#include QFRAME_INCLUDE
#include <qwidget.h>
#include <qlabel.h>

View File

@ -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 @@ void rwSettings(bool writing)
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();
}

View File

@ -131,4 +131,8 @@ extern void rwSettings(bool dowrite);
extern QString g_stringAllStem, g_stringNoStem;
/** Specialized version of the qt file dialog. Can't use getOpenFile()
etc. cause they hide dot files... */
extern QString myGetFileName(bool isdir, QString caption = QString());
#endif /* _GUIUTILS_H_INCLUDED_ */

View File

@ -35,7 +35,6 @@
#include <qlineedit.h>
#include <qcheckbox.h>
#include <qcombobox.h>
#include <qfiledialog.h>
#include <qlayout.h>
#include <qtooltip.h>
#include <qwhatsthis.h>
@ -355,14 +354,12 @@ void UIPrefsDialog::delExtraDbPB_clicked()
*/
void UIPrefsDialog::addExtraDbPB_clicked()
{
static QString lastdir;
QString input = myGetFileName(true,
tr("Select xapian index directory "
"(ie: /home/buddy/.recoll/xapiandb)"));
QString input = QFileDialog::getExistingDirectory(this,
tr("Select xapian index directory (ie: /home/buddy/.recoll/xapiandb)"),
lastdir);
if (input.isEmpty())
return;
lastdir = input;
string dbdir = (const char *)input.toLocal8Bit();
LOGDEB(("ExtraDbDial: got: [%s]\n", dbdir.c_str()));