Skip to content

Commit 910c15a

Browse files
committed
Try suggesting file names when saving some files
When exporting tables, saving project files, etc. suggest default file names where appropriate. See issue sqlitebrowser#484.
1 parent 0bfdc28 commit 910c15a

5 files changed

Lines changed: 23 additions & 9 deletions

File tree

src/ExportCsvDialog.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,8 @@ void ExportCsvDialog::accept()
176176
QString fileName = FileDialog::getSaveFileName(
177177
this,
178178
tr("Choose a filename to export data"),
179-
tr("Text files(*.csv *.txt)"));
179+
tr("Text files(*.csv *.txt)"),
180+
selectedItems.at(0)->text() + ".csv");
180181
if(fileName.isEmpty())
181182
{
182183
close();

src/ExportSqlDialog.cpp

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,17 +56,26 @@ ExportSqlDialog::~ExportSqlDialog()
5656

5757
void ExportSqlDialog::accept()
5858
{
59-
if(ui->listTables->selectedItems().isEmpty())
59+
QList<QListWidgetItem*> selectedItems = ui->listTables->selectedItems();
60+
if(selectedItems.isEmpty())
6061
{
6162
QMessageBox::warning(this, QApplication::applicationName(),
6263
tr("Please select at least 1 table."));
6364
return;
6465
}
66+
67+
// Try to find a default file name
68+
QString defaultFileName;
69+
if(selectedItems.count() == 1) // One table -> Suggest table name
70+
defaultFileName = selectedItems.at(0)->text() + ".sql";
71+
else if(selectedItems.count() == ui->listTables->count()) // All tables -> Suggest database name
72+
defaultFileName = pdb->curDBFilename + ".sql";;
73+
6574
QString fileName = FileDialog::getSaveFileName(
6675
this,
6776
tr("Choose a filename to export"),
68-
tr("Text files(*.sql *.txt)"));
69-
77+
tr("Text files(*.sql *.txt)"),
78+
defaultFileName);
7079
if(fileName.isEmpty())
7180
return;
7281

src/FileDialog.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,13 @@ QString FileDialog::getOpenFileName(QWidget* parent, const QString& caption, con
99
return result;
1010
}
1111

12-
QString FileDialog::getSaveFileName(QWidget* parent, const QString& caption, const QString& filter, QString* selectedFilter, Options options)
12+
QString FileDialog::getSaveFileName(QWidget* parent, const QString& caption, const QString& filter, const QString& defaultFileName, QString* selectedFilter, Options options)
1313
{
14-
QString result = QFileDialog::getSaveFileName(parent, caption, getFileDialogPath(), filter, selectedFilter, options);
14+
QString dir = getFileDialogPath();
15+
if(!defaultFileName.isEmpty())
16+
dir += "/" + defaultFileName;
17+
18+
QString result = QFileDialog::getSaveFileName(parent, caption, defaultFileName, filter, selectedFilter, options);
1519
if(!result.isEmpty())
1620
setFileDialogPath(result);
1721
return result;

src/FileDialog.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ class FileDialog : public QFileDialog
1010
const QString& filter = QString(), QString* selectedFilter = 0,
1111
Options options = 0);
1212
static QString getSaveFileName(QWidget* parent = 0, const QString& caption = QString(),
13-
const QString& filter = QString(), QString* selectedFilter = 0,
13+
const QString& filter = QString(), const QString& defaultFileName = QString(), QString* selectedFilter = 0,
1414
Options options = 0);
1515
static QString getExistingDirectory(QWidget* parent = 0, const QString& caption = QString(),
1616
Options options = 0);

src/MainWindow.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2115,8 +2115,8 @@ void MainWindow::saveProject()
21152115
{
21162116
QString filename = FileDialog::getSaveFileName(this,
21172117
tr("Choose a filename to save under"),
2118-
tr("DB Browser for SQLite project file (*.sqbpro)")
2119-
);
2118+
tr("DB Browser for SQLite project file (*.sqbpro)"),
2119+
db.curDBFilename);
21202120
if(!filename.isEmpty())
21212121
{
21222122
// Make sure the file has got a .sqbpro ending

0 commit comments

Comments
 (0)