18 #include "filedialog.h"
22 #include <QFileDialog>
24 #include "fileformat.h"
25 #include "pencildef.h"
30 QString strFilter = openFileFilters(fileType);
31 QString strSelectedFilter = getFilterForFile(strFilter, strInitialFilePath);
34 caption.
isEmpty() ? openDialogCaption(fileType) : caption,
37 strSelectedFilter.
isNull() ?
nullptr : &strSelectedFilter);
49 QString strFilter = openFileFilters(fileType);
50 QString strSelectedFilter = getFilterForFile(strFilter, strInitialFilePath);
53 caption.
isEmpty() ? openDialogCaption(fileType) : caption,
56 strSelectedFilter.
isNull() ?
nullptr : &strSelectedFilter);
57 if (!filePaths.
isEmpty() && !filePaths.
first().isEmpty())
68 QString strFilter = saveFileFilters(fileType);
69 QString strSelectedFilter = getFilterForFile(strFilter, strInitialFilePath);
72 caption.
isEmpty() ? saveDialogCaption(fileType) : caption,
75 strSelectedFilter.
isNull() ?
nullptr : &strSelectedFilter);
84 filePath += addDefaultExtensionSuffix(fileType);
90 QString FileDialog::addDefaultExtensionSuffix(
const FileType fileType)
94 case FileType::ANIMATION:
return PFF_DEFAULT_PROJECT_EXT;
95 case FileType::IMAGE:
return PFF_DEFAULT_IMAGE_EXT;
96 case FileType::IMAGE_SEQUENCE:
return PFF_DEFAULT_IMAGE_SEQ_EXT;
97 case FileType::GIF:
return PFF_DEFAULT_ANIMATED_EXT;
98 case FileType::PALETTE:
return PFF_DEFAULT_PALETTE_EXT;
125 return setting.
value(toSettingKey(fileType),
134 setting.
setValue(toSettingKey(fileType), savePath);
137 QString FileDialog::openDialogCaption(FileType fileType)
141 case FileType::ANIMATION:
return tr(
"Open animation");
142 case FileType::IMAGE:
return tr(
"Import image");
143 case FileType::IMAGE_SEQUENCE:
return tr(
"Import image sequence");
144 case FileType::GIF:
return tr(
"Import Animated GIF");
145 case FileType::MOVIE:
return tr(
"Import movie");
146 case FileType::SOUND:
return tr(
"Import sound");
147 case FileType::PALETTE:
return tr(
"Open palette");
152 QString FileDialog::saveDialogCaption(FileType fileType)
156 case FileType::ANIMATION:
return tr(
"Save animation");
157 case FileType::IMAGE:
return tr(
"Export image");
158 case FileType::IMAGE_SEQUENCE:
return tr(
"Export image sequence");
159 case FileType::GIF:
return tr(
"Export Animated GIF");
160 case FileType::MOVIE:
return tr(
"Export movie");
161 case FileType::SOUND:
return tr(
"Export sound");
162 case FileType::PALETTE:
return tr(
"Export palette");
167 QString FileDialog::openFileFilters(FileType fileType)
171 case FileType::ANIMATION:
return PFF_OPEN_PROJECT_EXT_FILTER;
172 case FileType::IMAGE:
return PFF_IMAGE_FILTER;
173 case FileType::IMAGE_SEQUENCE:
return PFF_IMAGE_SEQ_FILTER;
174 case FileType::GIF:
return PFF_GIF_EXT_FILTER;
175 case FileType::MOVIE:
return PFF_MOVIE_EXT;
176 case FileType::SOUND:
return PFF_SOUND_EXT_FILTER;
177 case FileType::PALETTE:
return PFF_PALETTE_EXT_FILTER;
182 QString FileDialog::saveFileFilters(FileType fileType)
186 case FileType::ANIMATION:
return PFF_SAVE_PROJECT_EXT_FILTER;
187 case FileType::IMAGE:
return "";
188 case FileType::IMAGE_SEQUENCE:
return "";
189 case FileType::GIF:
return QString(
"%1 (*.gif)").
arg(
tr(
"Animated GIF"));
190 case FileType::MOVIE:
return "MP4 (*.mp4);; AVI (*.avi);; WebM (*.webm);; APNG (*.apng)";
191 case FileType::SOUND:
return "";
192 case FileType::PALETTE:
return PFF_PALETTE_EXT_FILTER;
206 for (
const QString& filter : filtersSplit)
208 int start = filter.indexOf(
"(");
209 int end = filter.indexOf(
")");
210 if (start < 0 || end < 0)
215 QStringList filterExts = filter.mid(start, end - start).split(
" ");
218 return filter.trimmed();
225 QString FileDialog::defaultFileName(FileType fileType)
229 case FileType::ANIMATION:
return tr(
"MyAnimation.pclx");
230 case FileType::IMAGE:
231 case FileType::IMAGE_SEQUENCE:
return tr(
"untitled.png");
232 case FileType::GIF:
return tr(
"untitled.gif");
233 case FileType::MOVIE:
return tr(
"untitled.mp4");
234 case FileType::SOUND:
return tr(
"untitled.wav");
235 case FileType::PALETTE:
return tr(
"untitled.xml");
240 QString FileDialog::toSettingKey(FileType fileType)
244 case FileType::ANIMATION:
return "Animation";
245 case FileType::IMAGE:
return "Image";
246 case FileType::IMAGE_SEQUENCE:
return "ImageSequence";
247 case FileType::GIF:
return "Animated GIF";
248 case FileType::MOVIE:
return "Movie";
249 case FileType::SOUND:
return "Sound";
250 case FileType::PALETTE:
return "Palette";
static QString getLastSavePath(FileType fileType)
Retrieves the last used save path for a given file type.
bool contains(const QString &str, Qt::CaseSensitivity cs) const const
static void setLastSavePath(FileType fileType, const QString &savePath)
Saves the last used save path for a given file type.
QString & remove(int position, int n)
QString tr(const char *sourceText, const char *disambiguation, int n)
int lastIndexOf(QChar ch, int from, Qt::CaseSensitivity cs) const const
bool isNull() const const
void setValue(const QString &key, const QVariant &value)
static QStringList getOpenFileNames(QWidget *parent, FileType fileType, const QString &caption=QString())
Shows a file dialog which allows the user to select multiple files to open.
bool isEmpty() const const
bool isEmpty() const const
QStringList split(const QString &sep, QString::SplitBehavior behavior, Qt::CaseSensitivity cs) const const
bool contains(QChar ch, Qt::CaseSensitivity cs) const const
static QString getLastOpenPath(FileType fileType)
Retrieves the last opened file of a given type.
static QString getOpenFileName(QWidget *parent, FileType fileType, const QString &caption=QString())
Shows a file dialog which allows the user to select a file to open.
QVariant value(const QString &key, const QVariant &defaultValue) const const
QString suffix() const const
QString arg(qlonglong a, int fieldWidth, int base, QChar fillChar) const const
QString getSaveFileName(QWidget *parent, const QString &caption, const QString &dir, const QString &filter, QString *selectedFilter, QFileDialog::Options options)
static void setLastOpenPath(FileType fileType, const QString &openPath)
Saves the last opened file of a given type.
QString getOpenFileName(QWidget *parent, const QString &caption, const QString &dir, const QString &filter, QString *selectedFilter, QFileDialog::Options options)
static QString getSaveFileName(QWidget *parent, FileType fileType, const QString &caption=QString())
Shows a file dialog which allows the user to select a file save path.
QString toString() const const
void beginGroup(const QString &prefix)
QStringList getOpenFileNames(QWidget *parent, const QString &caption, const QString &dir, const QString &filter, QString *selectedFilter, QFileDialog::Options options)