6#include <QtCore/QSettings>
7#if QT_VERSION >= 0x050000
8#include <QtWidgets/QFileDialog>
10#include <QtGui/QFileDialog>
25template <
class Base,
class Gui>
30 typedef typename BaseClass::Ids
Ids;
50 mutable QString m_lastDirectory;
58template <
class Base,
class Gui>
61 QVariant valueNotSet = QVariant(-1);
63 QVariant lastDirectory = settings.value(
"Workspace/LastOpenDocumentDirectory", valueNotSet);
65 if (lastDirectory != valueNotSet){
66 m_lastDirectory = lastDirectory.toString();
71template <
class Base,
class Gui>
74 settings.setValue(
"Workspace/LastOpenDocumentDirectory", m_lastDirectory);
80template <
class Base,
class Gui>
85 QString defaultFilter =
"*." + QFileInfo(currentFilePath).completeSuffix();
86 for (QStringList::ConstIterator filterIter = filters.constBegin(); filterIter != filters.constEnd(); ++filterIter){
87 if (filterIter->contains(defaultFilter)){
88 defaultFilter = *filterIter;
93 QString filePath = QFileDialog::getSaveFileName(
96 currentFilePath.isEmpty()? m_lastDirectory: currentFilePath, filters.join(
";;"),
99 if (!filePath.isEmpty()){
100 UpdateLastDirectory(filePath);
109template <
class Base,
class Gui>
114 Ids docTypeIds = BaseClass::GetDocumentTypeIds();
118 if (documentTypeIdPtr !=
NULL){
120 if (typeInfoPtr !=
NULL){
125 for (
typename Ids::const_iterator docTypeIter = docTypeIds.begin();
126 docTypeIter != docTypeIds.end();
129 if (typeInfoPtr !=
NULL){
136 filters.prepend(Gui::tr(
"All known documents (%1)").arg(
"*." + allExt.join(
" *.")));
143template <
class Base,
class Gui>
146 QFileInfo fileInfo(filePath);
148 m_lastDirectory = fileInfo.dir().absolutePath();
152template <
class Base,
class Gui>
157 QString lastUsedDirectory = m_lastDirectory;
159 QFileInfo fileInfo(lastUsedDirectory);
160 if (!fileInfo.exists()){
161 lastUsedDirectory.clear();
164 return QFileDialog::getOpenFileNames(Gui::GetWidget(), Gui::tr(
"Open Files..."), lastUsedDirectory, filters.join(
";;"));
Provide loading and saving of objects.
@ QF_FILE
Operations with specified file name should be considered.
@ QF_LOAD
Check for load operation.
@ QF_SAVE
Check for save operation.
static void AppendLoaderFilterList(const ifile::IFileTypeInfo &fileTypeInfo, const istd::IChangeable *dataObjectPtr, int flags, QStringList &allExt, QStringList &result, bool allowCommonDescription=true)
Append filters extracted from file loader to Qt filter list accepted by QFileDialog.
Wrapper for general functionality of a Qt based document workspace.
virtual void OnSaveSettings(QSettings &settings) const override
void UpdateLastDirectory(const QString &filePath) const
virtual void OnRestoreSettings(const QSettings &settings) override
virtual QStringList CreateFileDialogFilters(const QByteArray *documentTypeIdPtr, const istd::IChangeable *dataObjectPtr, int flags) const
Creates the filter for the file selection dialog.
virtual QStringList GetOpenFilePathesFromDialog(const QByteArray *documentTypeIdPtr) const
virtual QString GetSaveFilePath(const QByteArray &documentTypeId, const istd::IChangeable *dataObjectPtr, const QString ¤tFilePath) const override
Common interface for data model objects, which can be changed.
This package contains Qt implementations related to Document/View concept.