浏览代码

Cleanup style in ctkThumbnailListWidget

 + add comments to ctkFlowLayout
Julien Finet 12 年之前
父节点
当前提交
7dce006dee

+ 4 - 1
Libs/Widgets/Resources/UI/ctkThumbnailListWidget.ui

@@ -11,9 +11,12 @@
    </rect>
   </property>
   <property name="windowTitle">
-   <string>Form</string>
+   <string>ThumbnailList</string>
   </property>
   <layout class="QVBoxLayout" name="verticalLayout_2">
+   <property name="margin">
+    <number>0</number>
+   </property>
    <item>
     <widget class="QScrollArea" name="ScrollArea">
      <property name="widgetResizable">

+ 35 - 19
Libs/Widgets/ctkFlowLayout.h

@@ -36,45 +36,61 @@ class ctkFlowLayoutPrivate;
 class CTK_WIDGETS_EXPORT ctkFlowLayout : public QLayout
 {
   Q_OBJECT
+  /// If orientation is Qt::Horizontal, items are layed out from left to right
+  /// then top to bottom if there is no more horizontal space.
+  /// If orientation is Qt::Vertical, items are layed out from top to bottom
+  /// then left to right if there is no more vertical space.
+  /// Qt::Horizontal by default
+  /// \sa preferredExpandingDirections
   Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation)
+
+  /// Indicates how the size hint of the layout should behave. The preferred
+  /// expanding direction can be different than the \a orientation of the
+  /// layout.
+  /// It can be a combination of Qt::Horizontal and Qt::Vertical, in that case
+  /// the layout will try to expand in a square shape (evenly distribute the
+  /// number of rows and columns).
+  /// Qt::Horizontal | Qt::Vertical by default.
+  /// \sa orientation
+  Q_PROPERTY(Qt::Orientations preferredExpandingDirections READ preferredExpandingDirections WRITE setPreferredExpandingDirections)
+
+  /// Force the items to be horizontally aligned based on the largest item
+  /// to display.
+  /// True by default.
+  /// \sa orientation
+  Q_PROPERTY(bool alignItems READ alignItems WRITE setAlignItems)
+
+  /// Horizontal space between items, if the spacing is <0, a default spacing
+  /// set on the parent/style is used.
+  /// -1 by default.
+  /// \sa verticalSpacing
   Q_PROPERTY(int horizontalSpacing READ horizontalSpacing WRITE setHorizontalSpacing)
+
+  /// Vertical space between items, if the spacing is <0, a default spacing
+  /// set on the parent/style is used.
+  /// -1 by default.
+  /// \sa horizontalSpacing
   Q_PROPERTY(int verticalSpacing READ verticalSpacing WRITE setVerticalSpacing)
-  Q_PROPERTY(bool alignItems READ alignItems WRITE setAlignItems)
-  Q_PROPERTY(Qt::Orientations preferredExpandingDirections READ preferredExpandingDirections WRITE setPreferredExpandingDirections)
+
 public:
   typedef QLayout Superclass;
   explicit ctkFlowLayout(Qt::Orientation orientation, QWidget* parent = 0);
   explicit ctkFlowLayout(QWidget* parent);
   explicit ctkFlowLayout();
   virtual ~ctkFlowLayout();
-  
-  /// If orientation is Qt::Horizontal, items are layed out from left to right
-  /// then top to bottom. If orientation is Qt::Vertical, items are layed out
-  /// from top to bottom then left to right.
+
   void setOrientation(Qt::Orientation orientation);
   Qt::Orientation orientation()const;
 
-  /// Indicates how the size hint of the layout should behave. The preferred
-  /// expanding direction can be different than the orientation of the layout.
-  /// It can be a combination of Qt::Horizontal and Qt::Vertical, in that case
-  /// the layout will try to expand in a square shape (evenly distribute the
-  /// number of rows and columns).
   void setPreferredExpandingDirections(Qt::Orientations directions);
   Qt::Orientations preferredExpandingDirections()const;
 
-  /// Horizontal space between items, if the spacing is <0, a default spacing
-  /// set on the parent/style will be used.
   int horizontalSpacing() const;
   void setHorizontalSpacing(int);
 
-  /// Vertical space between items, if the spacing is <0, a default spacing
-  /// set on the parent/style will be used. 
   int verticalSpacing() const;
   void setVerticalSpacing(int);
-  
-  /// Force the items to be horizontally aligned based on the largest item
-  /// to display.
-  /// True by default.
+
   bool alignItems()const;
   void setAlignItems(bool);
 

+ 48 - 37
Libs/Widgets/ctkThumbnailListWidget.cpp

@@ -48,43 +48,49 @@ static ctkLogger logger("org.commontk.Widgets.ctkThumbnailListWidget");
 // ctkThumbnailListWidgetPrivate methods
 
 //----------------------------------------------------------------------------
-ctkThumbnailListWidgetPrivate::ctkThumbnailListWidgetPrivate(ctkThumbnailListWidget* parent): q_ptr(parent){
-
+ctkThumbnailListWidgetPrivate
+::ctkThumbnailListWidgetPrivate(ctkThumbnailListWidget* parent)
+  : q_ptr(parent)
+{
 }
 
 //----------------------------------------------------------------------------
-void ctkThumbnailListWidgetPrivate::init(){
+void ctkThumbnailListWidgetPrivate::init()
+{
   Q_Q(ctkThumbnailListWidget);
 
   this->setupUi(q);
-  this->ScrollAreaContentWidget->setLayout(new ctkFlowLayout);
-  qobject_cast<ctkFlowLayout*>(this->ScrollAreaContentWidget->layout())->setHorizontalSpacing(4);
+  ctkFlowLayout* flowLayout = new ctkFlowLayout;
+  //flowLayout->setOrientation(Qt::Vertical);
+  //flowLayout->setPreferredExpandingDirections(Qt::Horizontal);
+  flowLayout->setHorizontalSpacing(4);
+  this->ScrollAreaContentWidget->setLayout(flowLayout);
+  this->ScrollArea->installEventFilter(q);
 
   this->ThumbnailSize = QSize(-1, -1);
   this->CurrentThumbnail = -1;
 }
 
 //----------------------------------------------------------------------------
-void ctkThumbnailListWidgetPrivate::clearAllThumbnails(){
-    Q_Q(ctkThumbnailListWidget);
+void ctkThumbnailListWidgetPrivate::clearAllThumbnails()
+{
+  Q_Q(ctkThumbnailListWidget);
 
-    // Remove previous displayed thumbnails
-    QLayoutItem* item;
-    while((item = this->ScrollAreaContentWidget->layout()->takeAt(0)))
+  // Remove previous displayed thumbnails
+  QLayoutItem* item;
+  while((item = this->ScrollAreaContentWidget->layout()->takeAt(0)))
     {
-        ctkThumbnailLabel* thumbnailWidget = qobject_cast<ctkThumbnailLabel*>(item->widget());
-        if(thumbnailWidget)
-        {
-            q->disconnect(thumbnailWidget, SIGNAL(selected(ctkThumbnailLabel)), q, SLOT(onThumbnailSelected(ctkThumbnailLabel)));
-            q->disconnect(thumbnailWidget, SIGNAL(selected(ctkThumbnailLabel)), q, SIGNAL(selected(ctkThumbnailLabel)));
-            q->disconnect(thumbnailWidget, SIGNAL(doubleClicked(ctkThumbnailLabel)), q, SIGNAL(doubleClicked(ctkThumbnailLabel)));
-        }
-        item->widget()->deleteLater();
+    ctkThumbnailLabel* thumbnailWidget = qobject_cast<ctkThumbnailLabel*>(item->widget());
+    if(thumbnailWidget)
+      {
+      q->disconnect(thumbnailWidget, SIGNAL(selected(ctkThumbnailLabel)), q, SLOT(onThumbnailSelected(ctkThumbnailLabel)));
+      q->disconnect(thumbnailWidget, SIGNAL(selected(ctkThumbnailLabel)), q, SIGNAL(selected(ctkThumbnailLabel)));
+      q->disconnect(thumbnailWidget, SIGNAL(doubleClicked(ctkThumbnailLabel)), q, SIGNAL(doubleClicked(ctkThumbnailLabel)));
+      }
+    item->widget()->deleteLater();
     }
 }
 
-
-
 //----------------------------------------------------------------------------
 // ctkThumbnailListWidget methods
 
@@ -111,9 +117,9 @@ ctkThumbnailListWidget::ctkThumbnailListWidget(ctkThumbnailListWidgetPrivate *_p
 //----------------------------------------------------------------------------
 ctkThumbnailListWidget::~ctkThumbnailListWidget()
 {
-    Q_D(ctkThumbnailListWidget);
+  Q_D(ctkThumbnailListWidget);
 
-    d->clearAllThumbnails();
+  d->clearAllThumbnails();
 }
 
 //----------------------------------------------------------------------------
@@ -122,22 +128,24 @@ void ctkThumbnailListWidget::addThumbnails(QList<QPixmap> thumbnails)
   Q_D(ctkThumbnailListWidget);
   for(int i=0; i<thumbnails.count(); i++)
     {
-      ctkThumbnailLabel* widget = new ctkThumbnailLabel(d->ScrollAreaContentWidget);
-      widget->setText("");
-      if(d->ThumbnailSize.isValid()){
-        widget->setFixedSize(d->ThumbnailSize);
+    ctkThumbnailLabel* widget = new ctkThumbnailLabel(d->ScrollAreaContentWidget);
+    widget->setText("");
+    if(d->ThumbnailSize.isValid())
+      {
+      widget->setFixedSize(d->ThumbnailSize);
       }
-      widget->setPixmap(thumbnails[i]);
-      d->ScrollAreaContentWidget->layout()->addWidget(widget);
+    widget->setPixmap(thumbnails[i]);
+    d->ScrollAreaContentWidget->layout()->addWidget(widget);
 
-      this->connect(widget, SIGNAL(selected(ctkThumbnailLabel)), this, SLOT(onThumbnailSelected(ctkThumbnailLabel)));
-      this->connect(widget, SIGNAL(selected(ctkThumbnailLabel)), this, SIGNAL(selected(ctkThumbnailLabel)));
-      this->connect(widget, SIGNAL(doubleClicked(ctkThumbnailLabel)), this, SIGNAL(doubleClicked(ctkThumbnailLabel)));
+    this->connect(widget, SIGNAL(selected(ctkThumbnailLabel)), this, SLOT(onThumbnailSelected(ctkThumbnailLabel)));
+    this->connect(widget, SIGNAL(selected(ctkThumbnailLabel)), this, SIGNAL(selected(ctkThumbnailLabel)));
+    this->connect(widget, SIGNAL(doubleClicked(ctkThumbnailLabel)), this, SIGNAL(doubleClicked(ctkThumbnailLabel)));
     }
 }
 
 //----------------------------------------------------------------------------
-void ctkThumbnailListWidget::setCurrentThumbnail(int index){
+void ctkThumbnailListWidget::setCurrentThumbnail(int index)
+{
   Q_D(ctkThumbnailListWidget);
 
   int count = d->ScrollAreaContentWidget->layout()->count();
@@ -164,14 +172,16 @@ void ctkThumbnailListWidget::setCurrentThumbnail(int index){
 }
 
 //----------------------------------------------------------------------------
-int ctkThumbnailListWidget::currentThumbnail(){
+int ctkThumbnailListWidget::currentThumbnail()
+{
   Q_D(ctkThumbnailListWidget);
 
   return d->CurrentThumbnail;
 }
 
 //----------------------------------------------------------------------------
-void ctkThumbnailListWidget::onThumbnailSelected(const ctkThumbnailLabel &widget){
+void ctkThumbnailListWidget::onThumbnailSelected(const ctkThumbnailLabel &widget)
+{
   Q_D(ctkThumbnailListWidget);
   for(int i=0; i<d->ScrollAreaContentWidget->layout()->count(); i++)
     {
@@ -198,14 +208,15 @@ void ctkThumbnailListWidget::setThumbnailSize(QSize size){
 }
 
 //----------------------------------------------------------------------------
-QSize ctkThumbnailListWidget::thumbnailSize()const{
+QSize ctkThumbnailListWidget::thumbnailSize()const
+{
   Q_D(const ctkThumbnailListWidget);
   return d->ThumbnailSize;
 }
 
 //----------------------------------------------------------------------------
-void ctkThumbnailListWidget::clearThumbnails(){
+void ctkThumbnailListWidget::clearThumbnails()
+{
   Q_D(ctkThumbnailListWidget);
-
   d->clearAllThumbnails();
 }

+ 2 - 3
Libs/Widgets/ctkThumbnailListWidget.h

@@ -21,12 +21,11 @@
 #ifndef __ctkThumbnailListWidget_h
 #define __ctkThumbnailListWidget_h
 
-// Qt includes 
+// Qt includes
 #include <QWidget>
 
+// CTK includes
 #include "ctkWidgetsExport.h"
-
-class QModelIndex;
 class ctkThumbnailListWidgetPrivate;
 class ctkThumbnailLabel;
 

+ 2 - 1
Libs/Widgets/ctkThumbnailListWidget_p.h

@@ -28,7 +28,8 @@ class ctkThumbnailListWidget;
 
 //----------------------------------------------------------------------------
 /// \ingroup Widgets
-class CTK_WIDGETS_EXPORT ctkThumbnailListWidgetPrivate : public Ui_ctkThumbnailListWidget
+class CTK_WIDGETS_EXPORT ctkThumbnailListWidgetPrivate
+  : public Ui_ctkThumbnailListWidget
 {
   Q_DECLARE_PUBLIC(ctkThumbnailListWidget);
 public: