[QGIS Commit] r9596 - in branches/advanced_printing_branch2/src:
app/composer ui
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Sat Nov 8 12:05:48 EST 2008
Author: mhugent
Date: 2008-11-08 12:05:48 -0500 (Sat, 08 Nov 2008)
New Revision: 9596
Modified:
branches/advanced_printing_branch2/src/app/composer/qgscomposerpicturewidget.cpp
branches/advanced_printing_branch2/src/ui/qgscomposerpicturewidgetbase.ui
Log:
Improved handling of large image files for composer picture preview
Modified: branches/advanced_printing_branch2/src/app/composer/qgscomposerpicturewidget.cpp
===================================================================
--- branches/advanced_printing_branch2/src/app/composer/qgscomposerpicturewidget.cpp 2008-11-08 15:07:53 UTC (rev 9595)
+++ branches/advanced_printing_branch2/src/app/composer/qgscomposerpicturewidget.cpp 2008-11-08 17:05:48 UTC (rev 9596)
@@ -24,6 +24,8 @@
#include <QFileInfo>
#include <QImageReader>
#include <QMessageBox>
+#include <QPainter>
+#include <QProgressDialog>
#include <QSvgRenderer>
QgsComposerPictureWidget::QgsComposerPictureWidget( QgsComposerPicture* picture ): QWidget(), mPicture( picture )
@@ -39,6 +41,8 @@
setGuiElementValues();
+ mPreviewListWidget->setIconSize(QSize(30, 30));
+
//add preview icons
addStandardDirectoriesToPreview();
@@ -228,22 +232,55 @@
QFileInfoList fileList = directory.entryInfoList(QDir::Files);
QFileInfoList::const_iterator fileIt = fileList.constBegin();
+
+ QProgressDialog progress("Adding Icons...", "Abort", 0, fileList.size() - 1, this);
+ progress.setWindowModality(Qt::WindowModal);
+
+ progress.show();
+
+ int counter = 0;
for(; fileIt != fileList.constEnd(); ++fileIt)
{
+ progress.setLabelText(tr("Creating icon for file ") + fileIt->fileName());
+ QCoreApplication::processEvents(); //for abort button
+ if(progress.wasCanceled())
+ {
+ break;
+ }
+ progress.setValue(counter);
QString filePath = fileIt->absoluteFilePath();
//exclude non-picture files
if(!testPictureFile(filePath))
{
- return 2;
+ ++counter;
+ continue;
}
- QIcon icon(filePath);
QListWidgetItem * listItem = new QListWidgetItem(mPreviewListWidget);
- listItem->setIcon( icon );
+
+ if(filePath.endsWith(".svg")) //for svg files: create the icon directly
+ {
+ QIcon icon(filePath);
+ listItem->setIcon(icon);
+ }
+ else //for pixel formats: create icon from scaled pixmap
+ {
+ QPixmap iconPixmap(filePath);
+ if(iconPixmap.isNull())
+ {
+ continue; //unknown file format or other problem
+ }
+ //set pixmap hardcoded to 30/30, same as icon size for mPreviewListWidget
+ QPixmap scaledPixmap(iconPixmap.scaled(QSize(30, 30), Qt::KeepAspectRatio));
+ QIcon icon(scaledPixmap);
+ listItem->setIcon(icon);
+ }
+
listItem->setText( "" );
- //store the absolute icon file as user data
+ //store the absolute icon file path as user data
listItem->setData( Qt::UserRole, fileIt->absoluteFilePath());
+ ++counter;
}
return 0;
Modified: branches/advanced_printing_branch2/src/ui/qgscomposerpicturewidgetbase.ui
===================================================================
--- branches/advanced_printing_branch2/src/ui/qgscomposerpicturewidgetbase.ui 2008-11-08 15:07:53 UTC (rev 9595)
+++ branches/advanced_printing_branch2/src/ui/qgscomposerpicturewidgetbase.ui 2008-11-08 17:05:48 UTC (rev 9596)
@@ -94,6 +94,18 @@
<property name="isWrapping" stdset="0" >
<bool>true</bool>
</property>
+ <property name="gridSize" >
+ <size>
+ <width>30</width>
+ <height>30</height>
+ </size>
+ </property>
+ <property name="viewMode" >
+ <enum>QListView::IconMode</enum>
+ </property>
+ <property name="wordWrap" >
+ <bool>true</bool>
+ </property>
</widget>
</item>
</layout>
More information about the QGIS-commit
mailing list