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

List:       kde-commits
Subject:    playground/base/blazer
From:       Ian Reinhart Geiser <geiseri () kde ! org>
Date:       2009-02-10 20:40:26
Message-ID: 1234298426.508047.28372.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 924455 by geiseri:

Made the tast button really a button, this way styleshets and groupboxes will work.

 M  +32 -33    taskitembutton.cpp  
 M  +3 -5      taskitembutton.h  
 M  +8 -8      taskmanagerwidget.cpp  


--- trunk/playground/base/blazer/taskitembutton.cpp #924454:924455
@@ -37,9 +37,11 @@
 #include <kdebug.h>
 
 TaskItemButton::TaskItemButton( TaskManager::TaskPtr ptr, QWidget *parent )
-    : KPushButton( parent ), m_ptr(ptr), m_suggestedMaxWidth(32)
+    : KPushButton( parent ), m_ptr(ptr)
 {
     setStyleSheet("text-align:left;");
+    setSizePolicy(QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ));
+    
     connect( ptr.data(), SIGNAL(changed(::TaskManager::TaskChanges)), this, SLOT(updateTask()));
     connect( ptr.data(), SIGNAL(activated()), this, SLOT(updateTask()));
     connect( ptr.data(), SIGNAL(deactivated()), this, SLOT(updateTask()));
@@ -56,16 +58,6 @@
     setDown(act);
 }
 
-void TaskItemButton::enterEvent ( QEvent * event )
-{
-//    setFrameShadow( QFrame::Raised );
-}
-
-void TaskItemButton::leaveEvent ( QEvent * event )
-{
-//    setFrameShadow( QFrame::Sunken );
-}
-
 void TaskItemButton::mousePressEvent ( QMouseEvent * event )
 {
     if( event->button() == Qt::RightButton )
@@ -82,36 +74,30 @@
         else
         {
             m_ptr->activateRaiseOrIconify();
+	    setActive( m_ptr->isActive() );
         }
     }
 }
 
 QSize TaskItemButton::sizeHint() const
 {
-    return KPushButton::sizeHint();
+    int maxWidth = KGlobalSettings::desktopGeometry( this ).width() * 3 / 4;
+    QFontMetrics fm(fontMetrics());
+    int textWidth = fm.width( m_ptr->name() );
+    if (textWidth > maxWidth)
+    {
+         textWidth = maxWidth;
+    }
+    return QSize(textWidth, KPushButton::sizeHint().height());
 }
 
-void TaskItemButton::paintEvent( QPaintEvent *event )
+QSize TaskItemButton::minimumSizeHint() const
 {
-    KPushButton::paintEvent( event );
-/*
-    QStylePainter p(this);
-    QStyleOptionButton option;
-    option.initFrom(this);
-    option.text = text();
-    option.icon = icon();
-    option.iconSize = iconSize();
-
-    p.save();
-    p.drawControl(QStyle::CE_PushButtonBevel, option);
-    p.drawPrimitive (QStyle::PE_FrameFocusRect, option);
-    p.restore();
-    p.drawPixmap( 2,2, option.icon.pixmap(height() - 4) );
-    p.drawText( height() + 2, 2, option.text );
-*/
+    QSize sz = KPushButton::minimumSizeHint();
+    sz.setWidth(-1);
+    return sz;
 }
 
-
 void TaskItemButton::updateTask()
 {
     kDebug() << "Update text" << m_ptr->name();
@@ -119,7 +105,7 @@
     QFontMetrics fm( font() );
     QPixmap icn = m_ptr->bestIcon(KIconLoader::SizeSmall, gotStaticIcon);
     setIcon( icn );
-    setText( fm.elidedText( m_ptr->name(), Qt::ElideMiddle, m_suggestedMaxWidth - icn.width() ) );
+    setText( squeezeTextToButton(m_ptr->name(), icn.width() ) );
 
     setActive( m_ptr->isActive() );
 
@@ -131,12 +117,25 @@
     {
         kDebug() << m_ptr->name() << "iconified";
     }
+    
     update();
 }
 
-void TaskItemButton::suggestNewMaxWidth( int newWidth )
+void TaskItemButton::resizeEvent( QResizeEvent *event )
 {
-    m_suggestedMaxWidth = newWidth;
     updateTask();
 }
 
+QString TaskItemButton::squeezeTextToButton( const QString &text, int iconSz )
+{
+    int padding = 8;
+    QFontMetrics fm(fontMetrics());
+    int buttonWidth = width() - ( iconSz + padding);
+    QString squeezedText = text;
+    int textWidth = fm.width(text);
+    if ( textWidth > buttonWidth)
+    {
+         squeezedText = fm.elidedText(text, Qt::ElideMiddle, buttonWidth );
+    }
+    return squeezedText;
+}
--- trunk/playground/base/blazer/taskitembutton.h #924454:924455
@@ -36,19 +36,17 @@
 
     void setActive( bool act );
     QSize sizeHint() const;
-    void suggestNewMaxWidth( int newWidth );
+    QSize minimumSizeHint() const;
 
 public slots:
     void updateTask();
 
 protected:
-    virtual void enterEvent ( QEvent * event );
-    virtual void leaveEvent ( QEvent * event );
     virtual void mousePressEvent ( QMouseEvent * event );
-    virtual void paintEvent( QPaintEvent *event );
+    virtual void resizeEvent( QResizeEvent *event );
 private:
+    QString squeezeTextToButton( const QString &text, int iconSz );
     TaskManager::TaskPtr m_ptr;
-    int m_suggestedMaxWidth;
 };
 
 #endif // TASKITEMBUTTON_H
--- trunk/playground/base/blazer/taskmanagerwidget.cpp #924454:924455
@@ -118,12 +118,12 @@
 {
 
     qDebug() << "TaskManagerWidget::adjustTaskSizes" << maximumSize() << sizeHint() << size();
-    int maxSize = maximumWidth();
-    if( m_tasks.count() )
-        maxSize = maximumWidth() / m_tasks.count();
-
-    foreach( TaskItemButton *cell, m_tasks )
-    {
-       cell->suggestNewMaxWidth( maxSize );
-    }
+//     int maxSize = maximumWidth();
+//     if( m_tasks.count() )
+//         maxSize = maximumWidth() / m_tasks.count();
+// 
+//     foreach( TaskItemButton *cell, m_tasks )
+//     {
+//        cell->suggestNewMaxWidth( maxSize );
+//     }
 }
[prev in list] [next in list] [prev in thread] [next in thread] 

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