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

List:       kde-commits
Subject:    =?utf-8?q?=5Bdigikam/development/2=2E0=5D_digikam=3A_use_DExpand?=
From:       Gilles Caulier <caulier.gilles () gmail ! com>
Date:       2011-02-17 11:28:11
Message-ID: 20110217112811.04351A609B () git ! kde ! org
[Download RAW message or body]

Git commit 562d488288c00ed74409178640c2f6b5bd826824 by Gilles Caulier.
Committed on 17/02/2011 at 12:27.
Pushed by cgilles into branch 'development/2.0'.

use DExpanderBox

M  +73   -32   digikam/filtersidebarwidget.cpp     
M  +5    -1    digikam/filtersidebarwidget.h     

http://commits.kde.org/digikam/562d488288c00ed74409178640c2f6b5bd826824

diff --git a/digikam/filtersidebarwidget.cpp b/digikam/filtersidebarwidget.cpp
index 6e558a7..58fbd86 100644
--- a/digikam/filtersidebarwidget.cpp
+++ b/digikam/filtersidebarwidget.cpp
@@ -30,12 +30,17 @@
 #include <QLabel>
 #include <QLayout>
 #include <QCheckBox>
+#include <QGridLayout>
 
 // KDE includes
 
 #include <kselectaction.h>
 #include <khbox.h>
 
+// LibKDcraw includes
+
+#include <libkdcraw/rexpanderbox.h>
+
 // Local includes
 
 #include "albumsettings.h"
@@ -47,6 +52,8 @@
 #include "ratingfilter.h"
 #include "mimefilter.h"
 
+using namespace KDcrawIface;
+
 namespace Digikam
 {
 
@@ -173,7 +180,8 @@ public:
         textFilter(0),
         mimeFilter(0),
         withoutTagCheckBox(0),
-        matchingConditionComboBox(0)
+        matchingConditionComboBox(0),
+        expbox(0)
     {
     }
 
@@ -193,6 +201,8 @@ public:
 
     QCheckBox*           withoutTagCheckBox;
     KComboBox*           matchingConditionComboBox;
+
+    RExpanderBox*        expbox;
 };
 
 const QString FilterSideBarWidget::FilterSideBarWidgetPriv::configLastShowUntaggedEntry("Show \
Untagged"); @@ -201,45 +211,57 @@ const QString \
FilterSideBarWidget::FilterSideBarWidgetPriv::configMatchingCondit  // \
---------------------------------------------------------------------------------------------------
  
 FilterSideBarWidget::FilterSideBarWidget(QWidget* parent, TagModel* tagFilterModel)
-    : QWidget(parent), StateSavingObject(this), d(new FilterSideBarWidgetPriv)
+    : KVBox(parent), StateSavingObject(this), d(new FilterSideBarWidgetPriv)
 {
     setObjectName("TagFilter Sidebar");
 
-    KHBox* hbox4  = new KHBox(this);
-    new QLabel(i18n("Text Filter:"), hbox4);
-    d->textFilter = new SearchTextBar(hbox4, "AlbumIconViewFilterSearchTextBar");
+    d->expbox = new RExpanderBox(this);
+    d->expbox->setObjectName("FilterSideBarWidget Expander");
+
+    // --------------------------------------------------------------------------------------------------------
 +
+    QWidget* box1 = new QWidget(d->expbox);
+    d->textFilter = new SearchTextBar(box1, "AlbumIconViewFilterSearchTextBar");
     d->textFilter->setTextQueryCompletion(true);
     d->textFilter->setToolTip(i18n("Text quick filter (search)"));
     d->textFilter->setWhatsThis(i18n("Enter search patterns to quickly filter this \
                view on "
                                      "file names, captions (comments), and tags"));
-    hbox4->setStretchFactor(d->textFilter, 10);
-    hbox4->setSpacing(0);
-    hbox4->setMargin(0);
+
+    QGridLayout* lay1 = new QGridLayout(box1);
+    lay1->addWidget(d->textFilter, 0, 0, 1, 1);
+    lay1->setMargin(0);
+    lay1->setSpacing(0);
+
+    d->expbox->addItem(box1, SmallIcon("text-field"), i18n("Text Filter"), \
QString("TextFilter"), true);  
     // --------------------------------------------------------------------------------------------------------
  
-    KHBox* hbox5    = new KHBox(this);
-    QLabel* mtlabel = new QLabel(i18n("Type Mime Filter:"), hbox5);
-    d->mimeFilter   = new MimeFilter(hbox5);
-    hbox5->setStretchFactor(mtlabel, 10);
-    hbox5->setSpacing(0);
-    hbox5->setMargin(0);
+    QWidget* box2 = new QWidget(d->expbox);
+    d->mimeFilter = new MimeFilter(box2);
+
+    QGridLayout* lay2 = new QGridLayout(box2);
+    lay2->addWidget(d->mimeFilter, 0, 0, 1, 1);
+    lay2->setMargin(0);
+    lay2->setSpacing(0);
+
+    d->expbox->addItem(box2, SmallIcon("system-file-manager"), i18n("Type Mime \
Filter"), QString("TypeMimeFilter"), true);  
     // --------------------------------------------------------------------------------------------------------
  
+    QWidget* box3         = new QWidget(d->expbox);
     d->tagFilterModel     = tagFilterModel;
-    d->tagFilterView      = new TagFilterView(this, tagFilterModel);
+    d->tagFilterView      = new TagFilterView(box3, tagFilterModel);
     d->tagFilterView->setObjectName("DigikamViewTagFilterView");
-    d->tagFilterSearchBar = new SearchTextBar(this, \
"DigikamViewTagFilterSearchBar"); +    d->tagFilterSearchBar = new \
SearchTextBar(box3, "DigikamViewTagFilterSearchBar");  \
                d->tagFilterSearchBar->setModel(d->tagFilterView->filteredModel(),
                                     AbstractAlbumModel::AlbumIdRole, \
                AbstractAlbumModel::AlbumTitleRole);
     d->tagFilterSearchBar->setFilterModel(d->tagFilterView->albumFilterModel());
 
     const QString notTaggedTitle   = i18n("Images Without Tags");
-    d->withoutTagCheckBox          = new QCheckBox(notTaggedTitle, this);
+    d->withoutTagCheckBox          = new QCheckBox(notTaggedTitle, box3);
     d->withoutTagCheckBox->setWhatsThis(i18n("Show images without a tag."));
 
-    KHBox* hbox1                   = new KHBox(this);
+    KHBox* hbox1                   = new KHBox(box3);
     QLabel* matchingConditionLabel = new QLabel(i18n("Matching Condition:"), hbox1);
     d->matchingConditionComboBox   = new KComboBox(hbox1);
     d->matchingConditionComboBox->setWhatsThis(matchingConditionLabel->whatsThis());
@@ -249,17 +271,29 @@ FilterSideBarWidget::FilterSideBarWidget(QWidget* parent, \
                TagModel* tagFilterMod
             "Defines in which way the selected tags are combined to filter the \
images. "  "This also includes the '%1' check box.", notTaggedTitle));
 
+    QGridLayout* lay3 = new QGridLayout(box3);
+    lay3->addWidget(d->tagFilterView,      0, 0, 1, 1);
+    lay3->addWidget(d->tagFilterSearchBar, 1, 0, 1, 1);
+    lay3->addWidget(d->withoutTagCheckBox, 2, 0, 1, 1);
+    lay3->addWidget(hbox1,                 3, 0, 1, 1);
+    lay3->setRowStretch(0, 100);
+    lay3->setMargin(0);
+    lay3->setSpacing(0);
+
+    d->expbox->addItem(box3, SmallIcon("tag-assigned"), i18n("Tags Filter"), \
QString("TagsFilter"), true); +
     // --------------------------------------------------------------------------------------------------------
  
-    QLabel* fLabel      = new QLabel(i18n("Label Filters:"));
-    KHBox* hbox2        = new KHBox(this);
+    QWidget* box4       = new QWidget(d->expbox);
+
+    KHBox* hbox2        = new KHBox(box4);
     d->colorLabelFilter = new ColorLabelFilter(hbox2);
     QLabel* space2      = new QLabel(hbox2);
     hbox2->setStretchFactor(space2, 10);
     hbox2->setSpacing(0);
     hbox2->setMargin(0);
 
-    KHBox* hbox3        = new KHBox(this);
+    KHBox* hbox3        = new KHBox(box4);
     d->pickLabelFilter  = new PickLabelFilter(hbox3);
     QLabel* space3      = new QLabel(hbox3);
     d->ratingFilter     = new RatingFilter(hbox3);
@@ -270,17 +304,20 @@ FilterSideBarWidget::FilterSideBarWidget(QWidget* parent, \
TagModel* tagFilterMod  hbox3->setSpacing(0);
     hbox3->setMargin(0);
 
-    QVBoxLayout* layout = new QVBoxLayout(this);
-    layout->addWidget(hbox4);
-    layout->addWidget(hbox5);
-    layout->addWidget(d->tagFilterView);
-    layout->addWidget(d->tagFilterSearchBar);
-    layout->addWidget(d->withoutTagCheckBox);
-    layout->addWidget(hbox1);
-    layout->addWidget(fLabel);
-    layout->addWidget(hbox2);
-    layout->addWidget(hbox3);
-    layout->setStretchFactor(d->tagFilterView, 10);
+    QGridLayout* lay4 = new QGridLayout(box4);
+    lay4->addWidget(hbox2, 0, 0, 1, 1);
+    lay4->addWidget(hbox3, 1, 0, 1, 1);
+    lay4->setMargin(0);
+    lay4->setSpacing(0);
+
+    d->expbox->addItem(box4, SmallIcon("favorites"), i18n("Labels Filter"), \
QString("LabelsFilter"), true); +
+/*
+    QVBoxLayout* vlay \
=dynamic_cast<QVBoxLayout*>(dynamic_cast<QScrollArea*>(d->expbox)->widget()->layout());
 +    vlay->setStretchFactor(box3, 1000);
+    QWidget* space = new QWidget();
+    vlay->addWidget(space, 10);
+*/
 
     // --------------------------------------------------------------------------------------------------------
  
@@ -423,6 +460,8 @@ void FilterSideBarWidget::setConfigGroup(KConfigGroup group)
 
 void FilterSideBarWidget::doLoadState()
 {
+    d->expbox->readSettings();
+
     d->ratingFilter->setRatingFilterCondition((Digikam::ImageFilterSettings::RatingCondition)
  (AlbumSettings::instance()->getRatingFilterCond()));
 
@@ -441,6 +480,8 @@ void FilterSideBarWidget::doLoadState()
 
 void FilterSideBarWidget::doSaveState()
 {
+    d->expbox->writeSettings();
+
     AlbumSettings::instance()->setRatingFilterCond(d->ratingFilter->ratingFilterCondition());
  
     getConfigGroup().writeEntry(entryName(d->configMatchingConditionEntry),
diff --git a/digikam/filtersidebarwidget.h b/digikam/filtersidebarwidget.h
index 93d35ea..387e2b2 100644
--- a/digikam/filtersidebarwidget.h
+++ b/digikam/filtersidebarwidget.h
@@ -30,6 +30,10 @@
 
 #include <QWidget>
 
+// KDE includes
+
+#include <kvbox.h>
+
 // Local includes
 
 #include "imagefiltersettings.h"
@@ -85,7 +89,7 @@ private:
  *
  * @author jwienke
  */
-class FilterSideBarWidget : public QWidget, public StateSavingObject
+class FilterSideBarWidget : public KVBox, public StateSavingObject
 {
     Q_OBJECT
 


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

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