#include "FileDialog.h"#include "Settings.h"QString FileDialog::getOpenFileName(const FileDialogTypes dialogType, QWidget* parent, const QString& caption, const QString &filter, QString *selectedFilter, Options options){QString result = QFileDialog::getOpenFileName(parent, caption, getFileDialogPath(dialogType), filter, selectedFilter, options);if(!result.isEmpty())setFileDialogPath(dialogType, result);return result;}QStringList FileDialog::getOpenFileNames(const FileDialogTypes dialogType, QWidget *parent, const QString &caption, const QString &filter, QString *selectedFilter, QFileDialog::Options options){QStringList result = QFileDialog::getOpenFileNames(parent, caption, getFileDialogPath(dialogType), filter, selectedFilter, options);if(!result.isEmpty()){QFileInfo path = QFileInfo(result.first());setFileDialogPath(dialogType, path.absolutePath());}return result;}QString FileDialog::getSaveFileName(const FileDialogTypes dialogType, QWidget* parent, const QString& caption, const QString& filter, const QString& defaultFileName, QString* selectedFilter, Options options){QString dir = getFileDialogPath(dialogType);if(!defaultFileName.isEmpty())dir += "/" + defaultFileName;QString result = QFileDialog::getSaveFileName(parent, caption, dir, filter, selectedFilter, options);if(!result.isEmpty())setFileDialogPath(dialogType, result);return result;}QString FileDialog::getExistingDirectory(const FileDialogTypes dialogType, QWidget* parent, const QString& caption, Options options){QString result = QFileDialog::getExistingDirectory(parent, caption, getFileDialogPath(dialogType), options);if(!result.isEmpty())setFileDialogPath(dialogType, result);return result;}QString FileDialog::getFileDialogPath(const FileDialogTypes dialogType){switch(Settings::getValue("db", "savedefaultlocation").toInt()){case 0: // Remember last locationcase 2: { // Remember last location for current session onlyQHash<QString, QVariant> lastLocations = Settings::getValue("db", "lastlocations").toHash();return lastLocations[QString(dialogType)].toString();}case 1: // Always use this locationsreturn Settings::getValue("db", "defaultlocation").toString();default:return "";}}void FileDialog::setFileDialogPath(const FileDialogTypes dialogType, const QString& new_path){QString dir = QFileInfo(new_path).absolutePath();QHash<QString, QVariant> lastLocations = Settings::getValue("db", "lastlocations").toHash();lastLocations[QString(dialogType)] = dir;switch(Settings::getValue("db", "savedefaultlocation").toInt()){case 0: // Remember last locationSettings::setValue("db", "lastlocations", lastLocations);break;case 2: // Remember last location for current session onlySettings::setValue("db", "lastlocations", lastLocations, true);break;case 1: // Always use this locationsbreak; // Do nothing}}QString FileDialog::getSqlDatabaseFileFilter(){return Settings::getValue("General", "DBFileExtensions").toString() + ";;" + QObject::tr("All files (*)"); //Always add "All files (*)" to the available filters}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。