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

List:       kde-commits
Subject:    KDE/kdelibs/kdeui/paged
From:       Tobias Koenig <tokoe () kde ! org>
Date:       2007-10-01 0:32:03
Message-ID: 1191198723.824695.20490.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 719346 by tokoe:

Add support for a 'default widget' which will be shown
whenever an item is selected that has no own widget set.

Fixed viewPosition() to be virtual, otherwise it's difficult
to reimplement it ;)


 M  +23 -1     kpageview.cpp  
 M  +7 -1      kpageview.h  
 M  +1 -0      kpageview_p.h  


--- trunk/KDE/kdelibs/kdeui/paged/kpageview.cpp #719345:719346
@@ -213,7 +213,7 @@
 
     stack->setCurrentWidget( widget );
   } else {
-    //d->stack->setCurrentWidget( d->emptyWidget );
+    stack->setCurrentWidget( defaultWidget );
   }
 
   updateTitleWidget(index);
@@ -268,6 +268,9 @@
     layout->addWidget(titleWidget, 1, 1);
     layout->addWidget(stack, 2, 1);
 
+    defaultWidget = new QWidget(q);
+    stack->addWidget(defaultWidget);
+
     // stack should use most space
     layout->setColumnStretch(1, 1);
     layout->setRowStretch(2, 1);
@@ -370,7 +373,26 @@
     return 0;
 }
 
+void KPageView::setDefaultWidget( QWidget *widget )
+{
+    Q_D(KPageView);
 
+    Q_ASSERT(widget);
+
+    bool isCurrent = (d->stack->currentIndex() == d->stack->indexOf( d->defaultWidget ));
+
+    // remove old default widget
+    d->stack->removeWidget( d->defaultWidget );
+    delete d->defaultWidget;
+
+    // add new default widget
+    d->defaultWidget = widget;
+    d->stack->addWidget(d->defaultWidget);
+
+    if (isCurrent)
+        d->stack->setCurrentWidget(d->defaultWidget);
+}
+
 QAbstractItemView* KPageView::createView()
 {
     Q_D(KPageView);
--- trunk/KDE/kdelibs/kdeui/paged/kpageview.h #719345:719346
@@ -146,6 +146,12 @@
      */
     QAbstractItemDelegate* itemDelegate() const;
 
+    /**
+     * Sets the @p widget which will be shown when a page is selected
+     * that has no own widget set.
+     */
+    void setDefaultWidget( QWidget *widget );
+
   Q_SIGNALS:
     /**
      * This signal is emitted whenever the current page changes.
@@ -178,7 +184,7 @@
      * This method can be reimplemented for adapting custom
      * views.
      */
-    Qt::Alignment viewPosition() const;
+    virtual Qt::Alignment viewPosition() const;
 
         KPageView(KPageViewPrivate &dd, QWidget *parent);
         KPageViewPrivate *const d_ptr;
--- trunk/KDE/kdelibs/kdeui/paged/kpageview_p.h #719345:719346
@@ -71,6 +71,7 @@
         QGridLayout *layout;
         KPageStackedWidget *stack;
         KTitleWidget *titleWidget;
+        QWidget *defaultWidget;
 
         QAbstractItemView *view;
 
[prev in list] [next in list] [prev in thread] [next in thread] 

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