18 #include "filedialogex.h"
22 #include <QFileDialog>
24 #include "fileformat.h"
25 #include "pencildef.h"
27 FileDialog::FileDialog( QWidget* parent ) : QObject( parent )
32 FileDialog::~FileDialog()
36 QString FileDialog::openFile(FileType fileType)
38 QString strTitle = openDialogTitle( fileType );
39 QString strInitialFilePath = getLastOpenPath( fileType );
40 QString strFilter = openFileFilters( fileType );
42 QString filePath = QFileDialog::getOpenFileName( mRoot,
46 if ( !filePath.isEmpty() )
48 setLastOpenPath( fileType, filePath );
54 QStringList FileDialog::openFiles(FileType fileType)
56 QString strTitle = openDialogTitle( fileType );
57 QString strInitialFilePath = getLastOpenPath( fileType );
58 QString strFilter = openFileFilters( fileType );
60 QStringList filePaths = QFileDialog::getOpenFileNames( mRoot,
64 if ( !filePaths.isEmpty() && !filePaths.first().isEmpty() )
66 setLastOpenPath( fileType, filePaths.first() );
72 QString FileDialog::saveFile( FileType fileType )
74 QString strTitle = saveDialogTitle( fileType );
75 QString strInitialFilePath = getLastSavePath( fileType );
76 QString strFilter = saveFileFilters( fileType );
78 QString filePath = QFileDialog::getSaveFileName( mRoot,
82 if ( !filePath.isEmpty() )
84 setLastSavePath( fileType, filePath );
90 QString FileDialog::getLastOpenPath( FileType fileType )
92 QSettings setting( PENCIL2D, PENCIL2D );
93 setting.beginGroup(
"LastOpenPath" );
95 return setting.value( toSettingKey( fileType ), QDir::homePath() ).toString();
98 void FileDialog::setLastOpenPath( FileType fileType, QString openPath )
100 QSettings setting( PENCIL2D, PENCIL2D );
101 setting.beginGroup(
"LastOpenPath" );
103 setting.setValue( toSettingKey( fileType ), QFileInfo( openPath ).absolutePath() );
106 QString FileDialog::getLastSavePath( FileType fileType )
108 QSettings setting( PENCIL2D, PENCIL2D );
109 setting.beginGroup(
"LastSavePath" );
111 return setting.value( toSettingKey( fileType ),
112 QDir::homePath() +
"/" + defaultFileName( fileType) ).toString();
115 void FileDialog::setLastSavePath( FileType fileType, QString savePath )
117 QSettings setting( PENCIL2D, PENCIL2D );
118 setting.beginGroup(
"LastSavePath" );
120 setting.setValue( toSettingKey( fileType ), savePath );
123 QString FileDialog::openDialogTitle( FileType fileType )
127 case FileType::ANIMATION:
return tr(
"Open animation" );
128 case FileType::IMAGE:
return tr(
"Import image" );
129 case FileType::IMAGE_SEQUENCE:
return tr(
"Import image sequence" );
130 case FileType::MOVIE:
return tr(
"Import movie" );
131 case FileType::SOUND:
return tr(
"Import sound" );
132 case FileType::PALETTE:
return tr(
"Import palette" );
133 default: Q_ASSERT(
false );
138 QString FileDialog::saveDialogTitle( FileType fileType )
142 case FileType::ANIMATION:
return tr(
"Save animation" );
143 case FileType::IMAGE:
return tr(
"Export image" );
144 case FileType::IMAGE_SEQUENCE:
return tr(
"Export image sequence" );
145 case FileType::MOVIE:
return tr(
"Export movie" );
146 case FileType::SOUND:
return tr(
"Export sound" );
147 case FileType::PALETTE:
return tr(
"Export palette" );
148 default: Q_ASSERT(
false );
153 QString FileDialog::openFileFilters( FileType fileType )
157 case FileType::ANIMATION:
return PFF_OPEN_ALL_FILE_FILTER;
158 case FileType::IMAGE:
return PENCIL_IMAGE_FILTER;
159 case FileType::IMAGE_SEQUENCE:
return PENCIL_IMAGE_FILTER;
160 case FileType::MOVIE:
return PENCIL_MOVIE_EXT;
161 case FileType::SOUND:
return tr(
"Sounds (*.wav *.mp3);;WAV (*.wav);;MP3 (*.mp3)" );
162 case FileType::PALETTE:
return tr(
"Palette (*.xml)" );
163 default: Q_ASSERT(
false );
168 QString FileDialog::saveFileFilters( FileType fileType )
172 case FileType::ANIMATION:
return PFF_SAVE_ALL_FILE_FILTER;
173 case FileType::IMAGE:
return QString();
174 case FileType::IMAGE_SEQUENCE:
return QString();
175 case FileType::MOVIE:
return tr(
"MP4 (*.mp4);;AVI (*.avi);;GIF (*.gif)" );
176 case FileType::SOUND:
return QString();
177 case FileType::PALETTE:
return tr(
"Palette (*.xml)" );
178 default: Q_ASSERT(
false );
183 QString FileDialog::defaultFileName( FileType fileType )
188 case FileType::ANIMATION:
return tr(
"MyAnimation.pclx" );
189 case FileType::IMAGE:
return "untitled.png";
190 case FileType::IMAGE_SEQUENCE:
return "untitled.png";
191 case FileType::MOVIE:
return "untitled.mp4";
192 case FileType::SOUND:
return "untitled.wav";
193 case FileType::PALETTE:
return "untitled.xml";
194 default: Q_ASSERT(
false );
199 QString FileDialog::toSettingKey( FileType fileType )
203 case FileType::ANIMATION:
return "Animation";
204 case FileType::IMAGE:
return "Image";
205 case FileType::IMAGE_SEQUENCE:
return "ImageSequence";
206 case FileType::MOVIE:
return "Movie";
207 case FileType::SOUND:
return "Sound";
208 case FileType::PALETTE:
return "Palette";
209 default: Q_ASSERT(
false );