13 #include <q3filedialog.h> 14 #include <qcheckbox.h> 19 #include <qfileinfo.h> 23 #include <qapplication.h> 25 #include <Q3GridLayout> 26 #include <QCustomEvent> 30 #include "../../config.h" 31 #include "../../backend/tools/imageTools.h" 34 #define MIN_HEIGHT 180 36 #define UPDATE_PREVIEW_DETAILS QEvent::User 68 this->previewWidget = previewWidget;
72 queue = QString::null;
84 lockingMutex.unlock();
91 this->filename = filename;
92 lockingMutex.unlock();
106 QString extension = QFileInfo(filename).extension(
false).upper();
107 bool validExtension = ( (extension.compare(
"GIF") == 0) ||
108 (extension.compare(
"JPG") == 0) ||
109 (extension.compare(
"JPEG") == 0) ||
110 (extension.compare(
"PNG") == 0) ||
111 (extension.compare(
"XPM") == 0) );
121 QString imageRes =
"";
126 imageRes = QString(
"%1 x %2").arg(res.width()).arg(res.height());
130 QString fileSize =
"?";
132 info.setFile( filename );
133 int sizeOnDisk = info.size();
135 if(sizeOnDisk < 1024)
136 fileSize = QString(
"%1 Byte%2").arg(sizeOnDisk).arg( sizeOnDisk == 0 || sizeOnDisk > 1 ?
"s" :
"");
137 else if( sizeOnDisk/1024 < 1024)
139 fileSize = QString(
"%1 Kb").arg( ((
float)((100*sizeOnDisk)/1024))/100 );
140 else if( sizeOnDisk/(1024*1024) < 1024)
141 fileSize = QString(
"%1 Mb").arg( ((
float)((100*sizeOnDisk)/(1024*1024)))/100 );
143 fileSize = QString(
"%1 Gigs").arg( ((
float)((100*sizeOnDisk)/(1024*1024*1024)))/100 );
146 QString fileDetails = QString(
"%1 %2, %3")
153 QApplication::postEvent( previewWidget, upe );
162 lockingMutex.unlock();
169 queue = QString::null;
170 lockingMutex.unlock();
182 Q3GridLayout* grid =
new Q3GridLayout(
this, 4, 3 );
183 grid->setRowStretch( 0, 1 );
184 grid->addWidget(
filePreview, 1, 1, Qt::AlignHCenter );
185 grid->addWidget(
fileDetails, 2, 1, Qt::AlignHCenter );
186 grid->setRowStretch( 3, 1 );
188 grid->setColStretch( 0, 1 );
189 grid->setColStretch( 2, 1 );
206 QFontMetrics fm( font() );
220 QPixmap scaledPixmap;
221 scaledPixmap.convertFromImage( upe->
getImage() );
243 tr(
"Images") +
" (*.gif *.jpg *.jpeg *.png *.xpm *.GIF *.JPG *.JPEG *.PNG *.XPM)",
247 setMode( Q3FileDialog::ExistingFiles );
248 setViewMode( Q3FileDialog::List );
251 setContentsPreviewEnabled(
true );
253 setPreviewMode( Q3FileDialog::Contents );
257 setDescriptions =
new QCheckBox( tr(
"Use filenames for descriptions."),
this );
262 setCaption( tr(
"Add Photos") );
264 connect(
this, SIGNAL( fileHighlighted(
const QString&)),
270 if( exec() == QDialog::Accepted )
273 return selectedFiles();
275 else {
return QStringList(); }
GeneratePreviewThread * generatorThread
a worker thread that actually generates the file preview image and details information that is displa...
void updatePreview(const QString &filename)
handle the user selecting items by updating the file preview fields
UpdatePreviewEvent(QImage image, QString details)
FilePreview * filePreview
Used to preview selected files.
QLabel * fileDetails
details about last selected file
GeneratePreviewThread(FilePreview *previewWidget)
FilePreview(QWidget *parent=0)
void customEvent(QCustomEvent *e)
handle update events that come from the GeneratePreviewThread
QStringList getFilenames(bool &setDescriptions)
returns the list of selected filenames, while setting setDescritions to the state the checkbox was le...
QLabel * filePreview
preview of last selected file
#define UPDATE_PREVIEW_DETAILS
void updatePreview(const QString &path)
call this function to update the file preview
QString getDetails() const
void start(QString filename)
QSize minimumSizeHint() const
AddPhotosDialog(QString path, QWidget *parent=0, const char *name=0)
QCheckBox * setDescriptions
Checkbox asking if filenames should be used to set image descriptions.