[QGIS Commit] r9580 - in branches/advanced_printing_branch2/src: app/composer ui

svn_qgis at osgeo.org svn_qgis at osgeo.org
Fri Nov 7 15:57:40 EST 2008


Author: mhugent
Date: 2008-11-07 15:57:40 -0500 (Fri, 07 Nov 2008)
New Revision: 9580

Modified:
   branches/advanced_printing_branch2/src/app/composer/qgscomposerpicturewidget.cpp
   branches/advanced_printing_branch2/src/app/composer/qgscomposerpicturewidget.h
   branches/advanced_printing_branch2/src/ui/qgscomposerpicturewidgetbase.ui
Log:
Show composer pictures as previews

Modified: branches/advanced_printing_branch2/src/app/composer/qgscomposerpicturewidget.cpp
===================================================================
--- branches/advanced_printing_branch2/src/app/composer/qgscomposerpicturewidget.cpp	2008-11-07 19:35:50 UTC (rev 9579)
+++ branches/advanced_printing_branch2/src/app/composer/qgscomposerpicturewidget.cpp	2008-11-07 20:57:40 UTC (rev 9580)
@@ -16,6 +16,7 @@
  ***************************************************************************/
 
 #include "qgscomposerpicturewidget.h"
+#include "qgsapplication.h"
 #include "qgscomposerpicture.h"
 #include "qgscomposeritemwidget.h"
 #include <QDoubleValidator>
@@ -36,6 +37,9 @@
 
   setGuiElementValues();
 
+  //add preview icons
+  addStandardDirectoriesToPreview();
+
   connect( mPicture, SIGNAL( settingsChanged() ), this, SLOT( setGuiElementValues() ) );
 }
 
@@ -143,6 +147,19 @@
   }
 }
 
+void QgsComposerPictureWidget::on_mPreviewListWidget_currentItemChanged( QListWidgetItem* current, QListWidgetItem* previous )
+{
+  if(!mPicture || !current)
+  {
+    return;
+  }
+
+  QString absoluteFilePath = current->data(Qt::UserRole).toString();
+  mPicture->setPictureFile(absoluteFilePath);
+  mPictureLineEdit->setText(absoluteFilePath);
+  mPicture->update();
+}
+
 void QgsComposerPictureWidget::setGuiElementValues()
 {
   //set initial gui values
@@ -165,3 +182,49 @@
     mPictureLineEdit->blockSignals( false );
   }
 }
+
+int QgsComposerPictureWidget::addDirectoryToPreview(const QString& path)
+{
+  //go through all files of a directory
+  QDir directory(path);
+  if(!directory.exists() || !directory.isReadable())
+  {
+    return 1; //error
+  }
+
+  QFileInfoList fileList = directory.entryInfoList(QDir::Files);
+  QFileInfoList::const_iterator fileIt = fileList.constBegin();
+  for(; fileIt != fileList.constEnd(); ++fileIt)
+  {
+    qWarning(fileIt->absoluteFilePath().toLocal8Bit().data());
+    QIcon icon(fileIt->absoluteFilePath()); //does this work with svg icons?
+    QListWidgetItem * listItem = new QListWidgetItem(mPreviewListWidget);
+    listItem->setIcon( icon );
+    listItem->setText( "" );
+    //store the absolute icon file as user data
+    listItem->setData( Qt::UserRole, fileIt->absoluteFilePath());
+  }
+
+  return 0;
+}
+
+void QgsComposerPictureWidget::addStandardDirectoriesToPreview()
+{
+  //list all directories in $prefix/share/qgis/svg
+  QDir svgDirectory(QgsApplication::svgPath());
+  if(!svgDirectory.exists() || !svgDirectory.isReadable())
+  {
+      return; //error
+  }
+
+  QFileInfoList directoryList = svgDirectory.entryInfoList(QDir::Dirs);
+  QFileInfoList::const_iterator dirIt = directoryList.constBegin();
+  for(; dirIt != directoryList.constEnd(); ++dirIt)
+  {
+    qWarning(dirIt->absoluteFilePath().toLocal8Bit().data());
+    if(addDirectoryToPreview(dirIt->absoluteFilePath()) == 0)
+    {
+       mSearchDirectoriesComboBox->addItem(dirIt->absoluteFilePath());
+    }
+  }
+}

Modified: branches/advanced_printing_branch2/src/app/composer/qgscomposerpicturewidget.h
===================================================================
--- branches/advanced_printing_branch2/src/app/composer/qgscomposerpicturewidget.h	2008-11-07 19:35:50 UTC (rev 9579)
+++ branches/advanced_printing_branch2/src/app/composer/qgscomposerpicturewidget.h	2008-11-07 20:57:40 UTC (rev 9580)
@@ -39,11 +39,16 @@
     void on_mRotationSpinBox_valueChanged( double d );
     void on_mWidthLineEdit_editingFinished();
     void on_mHeightLineEdit_editingFinished();
+    void on_mPreviewListWidget_currentItemChanged( QListWidgetItem* current, QListWidgetItem* previous );
     /**Sets the GUI elements to the values of mPicture*/
     void setGuiElementValues();
 
   private:
     QgsComposerPicture* mPicture;
+    /**Add the icons of a directory to the preview. Returns 0 in case of success*/
+    int addDirectoryToPreview(const QString& path);
+    /**Add the icons of the standard directories to the preview*/
+    void addStandardDirectoriesToPreview();
 };
 
 #endif

Modified: branches/advanced_printing_branch2/src/ui/qgscomposerpicturewidgetbase.ui
===================================================================
--- branches/advanced_printing_branch2/src/ui/qgscomposerpicturewidgetbase.ui	2008-11-07 19:35:50 UTC (rev 9579)
+++ branches/advanced_printing_branch2/src/ui/qgscomposerpicturewidgetbase.ui	2008-11-07 20:57:40 UTC (rev 9580)
@@ -5,8 +5,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>274</width>
-    <height>183</height>
+    <width>317</width>
+    <height>547</height>
    </rect>
   </property>
   <property name="sizePolicy" >
@@ -20,6 +20,70 @@
   </property>
   <layout class="QGridLayout" >
    <item row="0" column="0" >
+    <widget class="QGroupBox" name="mSearchDirectoriesGroupBox" >
+     <property name="sizePolicy" >
+      <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="title" >
+      <string>Search directories</string>
+     </property>
+     <layout class="QGridLayout" >
+      <item row="0" column="0" >
+       <layout class="QHBoxLayout" >
+        <item>
+         <widget class="QComboBox" name="mSearchDirectoriesComboBox" >
+          <property name="sizePolicy" >
+           <sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QPushButton" name="mAddDirectoryButton" >
+          <property name="text" >
+           <string>Add...</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="1" column="0" >
+    <widget class="QGroupBox" name="mPreviewGroupBox" >
+     <property name="sizePolicy" >
+      <sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="title" >
+      <string>Preview</string>
+     </property>
+     <layout class="QGridLayout" >
+      <item row="0" column="0" >
+       <widget class="QListWidget" name="mPreviewListWidget" >
+        <property name="movement" >
+         <enum>QListView::Free</enum>
+        </property>
+        <property name="flow" >
+         <enum>QListView::LeftToRight</enum>
+        </property>
+        <property name="isWrapping" stdset="0" >
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="2" column="0" >
     <layout class="QHBoxLayout" >
      <property name="spacing" >
       <number>6</number>
@@ -42,7 +106,7 @@
      <item>
       <widget class="QPushButton" name="mPictureBrowseButton" >
        <property name="sizePolicy" >
-        <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
+        <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
          <horstretch>0</horstretch>
          <verstretch>0</verstretch>
         </sizepolicy>
@@ -60,7 +124,7 @@
      </item>
     </layout>
    </item>
-   <item row="1" column="0" >
+   <item row="3" column="0" >
     <layout class="QGridLayout" >
      <item row="0" column="0" >
       <widget class="QLabel" name="textLabel3" >
@@ -121,19 +185,6 @@
      </item>
     </layout>
    </item>
-   <item row="2" column="0" >
-    <spacer>
-     <property name="orientation" >
-      <enum>Qt::Vertical</enum>
-     </property>
-     <property name="sizeHint" >
-      <size>
-       <width>20</width>
-       <height>21</height>
-      </size>
-     </property>
-    </spacer>
-   </item>
   </layout>
  </widget>
  <layoutdefault spacing="6" margin="11" />



More information about the QGIS-commit mailing list