Преглед на файлове

Merge branch 'thumbnailwidget'

* thumbnailwidget:
  Fix sizing in ctkThumbnailWidget
  Add ctkThumbnailWidget::TransformationMode
Julien Finet преди 13 години
родител
ревизия
6abc7eb7c7

+ 6 - 0
Libs/Widgets/Resources/UI/ctkThumbnailWidget.ui

@@ -32,6 +32,12 @@
    </item>
    </item>
    <item row="1" column="1">
    <item row="1" column="1">
     <widget class="QLabel" name="PixmapLabel">
     <widget class="QLabel" name="PixmapLabel">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Ignored" vsizetype="Ignored">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
      <property name="alignment">
      <property name="alignment">
       <set>Qt::AlignCenter</set>
       <set>Qt::AlignCenter</set>
      </property>
      </property>

+ 3 - 1
Libs/Widgets/Testing/Cpp/ctkThumbnailWidgetTest1.cpp

@@ -53,7 +53,7 @@ int ctkThumbnailWidgetTest1( int argc, char * argv [] )
     }
     }
 
 
   QPixmap standardPixmap = widget.style()->standardPixmap(QStyle::SP_DriveNetIcon);
   QPixmap standardPixmap = widget.style()->standardPixmap(QStyle::SP_DriveNetIcon);
-  
+
   widget.setPixmap(standardPixmap);
   widget.setPixmap(standardPixmap);
   if (widget.pixmap() == 0)
   if (widget.pixmap() == 0)
     {
     {
@@ -64,6 +64,8 @@ int ctkThumbnailWidgetTest1( int argc, char * argv [] )
   widget.setTextPosition(Qt::AlignRight);
   widget.setTextPosition(Qt::AlignRight);
   widget.setTextPosition(Qt::AlignBottom);
   widget.setTextPosition(Qt::AlignBottom);
 
 
+  widget.setTransformationMode(Qt::SmoothTransformation);
+
   widget.show();
   widget.show();
 
 
   if (argc <= 1 || QString(argv[1]) != "-I")
   if (argc <= 1 || QString(argv[1]) != "-I")

+ 30 - 10
Libs/Widgets/ctkThumbnailWidget.cpp

@@ -47,6 +47,7 @@ public:
     QColor SelectedColor;
     QColor SelectedColor;
     QModelIndex SourceIndex;
     QModelIndex SourceIndex;
     QPixmap OriginalThumbnail;
     QPixmap OriginalThumbnail;
+    Qt::TransformationMode TransformationMode;
 
 
     // Redraw thumbnail
     // Redraw thumbnail
     void updateThumbnail();
     void updateThumbnail();
@@ -64,6 +65,7 @@ ctkThumbnailWidgetPrivate::ctkThumbnailWidgetPrivate(ctkThumbnailWidget* parent)
   this->SelectedFlag = false;
   this->SelectedFlag = false;
   this->SelectedColor = q->palette().color(QPalette::Highlight);
   this->SelectedColor = q->palette().color(QPalette::Highlight);
   this->TextPosition = Qt::AlignTop | Qt::AlignHCenter;
   this->TextPosition = Qt::AlignTop | Qt::AlignHCenter;
+  this->TransformationMode = Qt::FastTransformation;
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
@@ -71,7 +73,9 @@ void ctkThumbnailWidgetPrivate::updateThumbnail()
 {
 {
   this->PixmapLabel->setPixmap(
   this->PixmapLabel->setPixmap(
     this->OriginalThumbnail.isNull() ? QPixmap() :
     this->OriginalThumbnail.isNull() ? QPixmap() :
-      this->OriginalThumbnail.scaledToWidth(this->PixmapLabel->width()));
+      this->OriginalThumbnail.scaled(this->PixmapLabel->size(),
+                                     Qt::KeepAspectRatio,
+                                     this->TransformationMode));
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
@@ -187,6 +191,21 @@ const QPixmap* ctkThumbnailWidget::pixmap()const
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
+Qt::TransformationMode ctkThumbnailWidget::transformationMode()const
+{
+  Q_D(const ctkThumbnailWidget);
+  return d->TransformationMode;
+}
+
+//----------------------------------------------------------------------------
+void ctkThumbnailWidget::setTransformationMode(Qt::TransformationMode mode)
+{
+  Q_D(ctkThumbnailWidget);
+  d->TransformationMode = mode;
+  d->updateThumbnail();
+}
+
+//----------------------------------------------------------------------------
 void ctkThumbnailWidget::setSelected(bool flag)
 void ctkThumbnailWidget::setSelected(bool flag)
 {
 {
   Q_D(ctkThumbnailWidget);
   Q_D(ctkThumbnailWidget);
@@ -232,21 +251,22 @@ QColor ctkThumbnailWidget::selectedColor()const
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 void ctkThumbnailWidget::mousePressEvent(QMouseEvent* event)
 void ctkThumbnailWidget::mousePressEvent(QMouseEvent* event)
 {
 {
-    Q_UNUSED(event);
-    this->setSelected(true);
-    emit selected(*this);
+  this->Superclass::mousePressEvent(event);
+  this->setSelected(true);
+  emit selected(*this);
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-void ctkThumbnailWidget::mouseDoubleClickEvent(QMouseEvent *event){
-    Q_UNUSED(event);
-    emit doubleClicked(*this);
+void ctkThumbnailWidget::mouseDoubleClickEvent(QMouseEvent *event)
+{
+  this->Superclass::mouseDoubleClickEvent(event);
+  emit doubleClicked(*this);
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-void ctkThumbnailWidget::resizeEvent(QResizeEvent *event){
+void ctkThumbnailWidget::resizeEvent(QResizeEvent *event)
+{
   Q_D(ctkThumbnailWidget);
   Q_D(ctkThumbnailWidget);
-  Q_UNUSED(event);
-
+  this->Superclass::resizeEvent(event);
   d->updateThumbnail();
   d->updateThumbnail();
 }
 }

+ 7 - 0
Libs/Widgets/ctkThumbnailWidget.h

@@ -37,7 +37,11 @@ class CTK_WIDGETS_EXPORT ctkThumbnailWidget : public QWidget
   /// Qt::AlignTop | Qt::AlignHCenter by default.
   /// Qt::AlignTop | Qt::AlignHCenter by default.
   Q_PROPERTY(Qt::Alignment textPosition READ textPosition WRITE setTextPosition)
   Q_PROPERTY(Qt::Alignment textPosition READ textPosition WRITE setTextPosition)
   Q_PROPERTY(QPixmap pixmap READ pixmap WRITE setPixmap)
   Q_PROPERTY(QPixmap pixmap READ pixmap WRITE setPixmap)
+  /// Qt::FastTransformation by default
+  Q_PROPERTY(Qt::TransformationMode transformationMode READ transformationMode WRITE setTransformationMode)
+  /// Not selected by default
   Q_PROPERTY(bool selected READ isSelected WRITE setSelected)
   Q_PROPERTY(bool selected READ isSelected WRITE setSelected)
+  /// Palette highlight color by default
   Q_PROPERTY(QColor selectedColor READ selectedColor WRITE setSelectedColor)
   Q_PROPERTY(QColor selectedColor READ selectedColor WRITE setSelectedColor)
 public:
 public:
   typedef QWidget Superclass;
   typedef QWidget Superclass;
@@ -53,6 +57,9 @@ public:
   void setPixmap(const QPixmap& pixmap);
   void setPixmap(const QPixmap& pixmap);
   const QPixmap* pixmap()const;
   const QPixmap* pixmap()const;
 
 
+  Qt::TransformationMode transformationMode()const;
+  void setTransformationMode(Qt::TransformationMode mode);
+
   void setSelected(bool selected);
   void setSelected(bool selected);
   bool isSelected()const;
   bool isSelected()const;