[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    koffice/krita/ui
From:       Boudewijn Rempt <boud () valdyas ! org>
Date:       2010-10-31 14:51:29
Message-ID: 20101031145130.013AFAC89B () svn ! kde ! org
[Download RAW message or body]

SVN commit 1191580 by rempt:

Do not calculate filter thumbs if the filter list is hidden

BUG:243691

 M  +10 -3     forms/wdgfilterselector.ui  
 M  +0 -5      kis_filters_model.cc  
 M  +1 -1      widgets/kis_filter_selector_widget.cc  
 M  +50 -1     widgets/kis_filter_selector_widget.h  


--- trunk/koffice/krita/ui/forms/wdgfilterselector.ui #1191579:1191580
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>333</width>
-    <height>128</height>
+    <width>390</width>
+    <height>137</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -29,7 +29,7 @@
         </widget>
        </item>
        <item>
-        <widget class="QTreeView" name="filtersSelector">
+        <widget class="KisFilterTree" name="filtersSelector">
          <property name="sizePolicy">
           <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
            <horstretch>0</horstretch>
@@ -130,6 +130,13 @@
    </item>
   </layout>
  </widget>
+ <customwidgets>
+  <customwidget>
+   <class>KisFilterTree</class>
+   <extends>QTreeView</extends>
+   <header>kis_filter_selector_widget.h</header>
+  </customwidget>
+ </customwidgets>
  <resources/>
  <connections/>
 </ui>
--- trunk/koffice/krita/ui/kis_filters_model.cc #1191579:1191580
@@ -163,12 +163,10 @@
 {
     if (index.isValid()) {
         if (role == Qt::DecorationRole) {
-#if 1
             Private::Node* node = static_cast<Private::Node*>(index.internalPointer());
             Private::Filter* filter = dynamic_cast<Private::Filter*>(node);
             if (filter) {
                 if (!d->previewCache.contains(filter->filter)) {
-//                     KisPaintDeviceSP target = new KisPaintDevice( d->thumb->colorSpace() );
                     KisPaintDeviceSP target = new KisPaintDevice(*d->thumb);
 
                     QRect rc = target->exactBounds();
@@ -183,11 +181,8 @@
                 }
                 return d->previewCache[ filter->filter ];
             } else {
-#endif
                 return QVariant();
-#if 1
             }
-#endif
         } else if (role == Qt::DisplayRole) {
             Private::Node* node = static_cast<Private::Node*>(index.internalPointer());
             return QVariant(node->displayRole());
--- trunk/koffice/krita/ui/widgets/kis_filter_selector_widget.cc #1191579:1191580
@@ -94,7 +94,7 @@
     d->paintDevice = _paintDevice;
     d->thumb = d->paintDevice->createThumbnailDevice(100, 100);
     d->filtersModel = new KisFiltersModel(d->thumb);
-    d->uiFilterSelector.filtersSelector->setModel(d->filtersModel);
+    d->uiFilterSelector.filtersSelector->setFilterModel(d->filtersModel);
     d->uiFilterSelector.filtersSelector->header()->setVisible(false);
 }
 
--- trunk/koffice/krita/ui/widgets/kis_filter_selector_widget.h #1191579:1191580
@@ -21,14 +21,21 @@
 #define _KIS_FILTER_SELECTOR_WIDGET_H_
 
 #include <QWidget>
+#include <QTreeView>
+#include <QDebug>
+#include <QResizeEvent>
+#include <QSize>
 
 #include <kis_types.h>
 
 class QModelIndex;
 class KisFilterConfiguration;
+class QAbstractItemModel;
+class QHideEvent;
+class QShowEvent;
 
 /**
- *
+ * XXX
  */
 class KisFilterSelectorWidget : public QWidget
 {
@@ -53,4 +60,46 @@
     Private* const d;
 };
 
+
+class KisFilterTree: public QTreeView {
+
+public:
+
+    KisFilterTree(QWidget *parent) : QTreeView(parent) {}
+
+    void setFilterModel(QAbstractItemModel * model)
+    {
+        m_model = model;
+    }
+
+protected:
+
+    void resizeEvent(QResizeEvent *event)
+    {
+        if (event->size().width() > 10) {
+            setModel(m_model);
+        }
+        else {
+            setModel(0);
+        }
+    }
+
+    void showEvent(QShowEvent * event)
+    {
+        setModel(m_model);
+        QTreeView::showEvent(event);
+    }
+
+    void hideEvent(QHideEvent * event)
+    {
+        setModel(0);
+        QTreeView::hideEvent(event);
+    }
+
+private:
+
+    QAbstractItemModel *m_model;
+
+};
+
 #endif
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic