diff --git a/clients/oxygen/CMakeLists.txt b/clients/oxygen/CMakeLists.txt index 9fca512779..abdb3eb6d5 100644 --- a/clients/oxygen/CMakeLists.txt +++ b/clients/oxygen/CMakeLists.txt @@ -14,7 +14,6 @@ set(kwin_oxygen_SRCS oxygenexceptionlist.cpp oxygenshadowconfiguration.cpp oxygensizegrip.cpp - oxygentimeline.cpp x11util.cpp ) diff --git a/clients/oxygen/oxygenbutton.cpp b/clients/oxygen/oxygenbutton.cpp index 8baaee81fb..e83ddfc34c 100644 --- a/clients/oxygen/oxygenbutton.cpp +++ b/clients/oxygen/oxygenbutton.cpp @@ -65,8 +65,8 @@ namespace Oxygen timeLine_.setFrameRange( 0, 1000 ); timeLine_.setCurveShape( QTimeLine::EaseInOutCurve ); - connect( &timeLine_, SIGNAL( currentIndexChanged( int ) ), SLOT( repaint() ) ); - connect( &timeLine_, SIGNAL( finished() ), SLOT( repaint() ) ); + connect( &timeLine_, SIGNAL( frameChanged( int ) ), SLOT( update() ) ); + connect( &timeLine_, SIGNAL( finished() ), SLOT( update() ) ); } @@ -111,9 +111,13 @@ namespace Oxygen { KCommonDecorationButton::enterEvent(e); if (status_ != Oxygen::Pressed) status_ = Oxygen::Hovered; - if( timeLine_.state() != OxygenTimeLine::NotRunning ) timeLine_.stop(); - timeLine_.setDirection( OxygenTimeLine::Forward ); - timeLine_.start(); + if( timeLine_.state() == QTimeLine::NotRunning ) + { + timeLine_.setDirection( QTimeLine::Forward ); + timeLine_.start(); + } else if( timeLine_.direction() == QTimeLine::Backward ) { + timeLine_.toggleDirection(); + } update(); } @@ -123,9 +127,13 @@ namespace Oxygen KCommonDecorationButton::leaveEvent(e); status_ = Oxygen::Normal; - if( timeLine_.state() != OxygenTimeLine::NotRunning ) timeLine_.stop(); - timeLine_.setDirection( OxygenTimeLine::Backward ); - timeLine_.start(); + if( timeLine_.state() == QTimeLine::NotRunning ) + { + timeLine_.setDirection( QTimeLine::Backward ); + timeLine_.start(); + } else if( timeLine_.direction() == QTimeLine::Forward ) { + timeLine_.toggleDirection(); + } update(); @@ -199,9 +207,9 @@ namespace Oxygen KColorScheme(palette.currentColorGroup()).foreground(KColorScheme::NegativeText).color(): KColorScheme(palette.currentColorGroup()).decoration(KColorScheme::HoverColor).color(); - if( timeLine_.state() == OxygenTimeLine::Running ) + if( timeLine_.state() == QTimeLine::Running ) { - qreal ratio( qreal( timeLine_.currentIndex() )/qreal( timeLine_.maxIndex() ) ); + qreal ratio( qreal( timeLine_.currentFrame() )/qreal( timeLine_.endFrame() ) ); color = KColorUtils::mix( color, glow, ratio ); } else if( status_ == Oxygen::Hovered ) color = glow; @@ -216,10 +224,10 @@ namespace Oxygen painter.drawPixmap(0, 0, helper_.windecoButton(bt, status_ == Oxygen::Pressed, (21.0*client_.configuration().buttonSize())/22 ) ); // draw glow on hover - if( timeLine_.state() == OxygenTimeLine::Running ) + if( timeLine_.state() == QTimeLine::Running ) { - qreal ratio( qreal( timeLine_.currentIndex() )/qreal( timeLine_.maxIndex() ) ); + qreal ratio( qreal( timeLine_.currentFrame() )/qreal( timeLine_.endFrame() ) ); painter.save(); painter.setOpacity( ratio ); painter.drawPixmap(0, 0, helper_.windecoButtonGlow(glow, (21.0*client_.configuration().buttonSize())/22)); diff --git a/clients/oxygen/oxygenbutton.h b/clients/oxygen/oxygenbutton.h index f8a4e3049a..441e5f08f4 100644 --- a/clients/oxygen/oxygenbutton.h +++ b/clients/oxygen/oxygenbutton.h @@ -29,10 +29,10 @@ ////////////////////////////////////////////////////////////////////////////// #include +#include #include "oxygen.h" #include "oxygenclient.h" -#include "oxygentimeline.h" namespace Oxygen { @@ -112,7 +112,7 @@ namespace Oxygen QColor cachedButtonDetailColor_; //! timeline used for smooth transitions - OxygenTimeLine timeLine_; + QTimeLine timeLine_; }; diff --git a/clients/oxygen/oxygentimeline.cpp b/clients/oxygen/oxygentimeline.cpp deleted file mode 100644 index fa25c8dd4f..0000000000 --- a/clients/oxygen/oxygentimeline.cpp +++ /dev/null @@ -1,94 +0,0 @@ - -////////////////////////////////////////////////////////////////////////////// -// OxygenTimeLine.h -// derive from QTimeLine and is used to perform smooth transitions -// ------------------- -// -// Copyright (c) 2009 Hugo Pereira Da Costa -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to -// deal in the Software without restriction, including without limitation the -// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -// sell copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -// IN THE SOFTWARE. -////////////////////////////////////////////////////////////////////////////// - -#include "oxygentimeline.h" -#include "oxygentimeline.moc" - -#include -#include - -namespace Oxygen -{ - - //______________________________________________________ - OxygenTimeLine::OxygenTimeLine( int duration, QObject* parent ): - QTimeLine( duration, parent ), - direction_( Forward ), - currentIndex_( 0 ), - maxIndex_( 255 ), - lastFrame_( 0 ) - { - - // connections - connect( this, SIGNAL( frameChanged( int ) ), SLOT( updateCurrentIndex( int ) ) ); - - } - - //______________________________________________________ - void OxygenTimeLine::start( void ) - { - assert( state() == NotRunning ); - lastFrame_ = 0; - QTimeLine::start(); - } - - //______________________________________________________ - void OxygenTimeLine::updateCurrentIndex( int currentFrame ) - { - - // check interval - if( currentFrame <= lastFrame_ ) lastFrame_ = 0; - - // calculate step - int step = (maxIndex()*( currentFrame - lastFrame_ ))/endFrame(); - if( direction_ == Backward ) step *= -1; - - // update lastFrame - lastFrame_ = currentFrame; - - // check end conditions - if( currentIndex_ + step <= 0 ) - { - - currentIndex_ = 0; - emit currentIndexChanged( currentIndex_ ); - stop(); - - } else if( currentIndex_ + step >= maxIndex_ ) { - - currentIndex_ = maxIndex_; - emit currentIndexChanged( currentIndex_ ); - stop(); - - } else { - currentIndex_ += step; - emit currentIndexChanged( currentIndex_ ); - } - - } - -} diff --git a/clients/oxygen/oxygentimeline.h b/clients/oxygen/oxygentimeline.h deleted file mode 100644 index bb3bb859eb..0000000000 --- a/clients/oxygen/oxygentimeline.h +++ /dev/null @@ -1,93 +0,0 @@ -#ifndef oxygentimeline_h -#define oxygentimeline_h - -////////////////////////////////////////////////////////////////////////////// -// OxygenTimeLine.h -// derive from QTimeLine and is used to perform smooth transitions -// ------------------- -// -// Copyright (c) 2009 Hugo Pereira Da Costa -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to -// deal in the Software without restriction, including without limitation the -// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -// sell copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -// IN THE SOFTWARE. -////////////////////////////////////////////////////////////////////////////// - -#include - -namespace Oxygen -{ - - class OxygenTimeLine: public QTimeLine - { - - Q_OBJECT - - public: - - //! constructor - OxygenTimeLine( int duration, QObject* parent ); - - //! max number of Index - void setMaxIndex( int value ) - { maxIndex_ = value; } - - //! max number of Index - int maxIndex( void ) const - { return maxIndex_; } - - //! current Index - int currentIndex( void ) const - { return currentIndex_; } - - //! direction used to update Index - void setDirection( QTimeLine::Direction value ) - { direction_ = value; } - - //! start - void start( void ); - - signals: - - //! emitted whenever the current Index changed - void currentIndexChanged( int ); - - protected slots: - - //! connected to timeLine frameChanged - void updateCurrentIndex( int ); - - private: - - //! direction - Direction direction_; - - //! current Index - int currentIndex_; - - //! max Index - int maxIndex_; - - //! frame at last update - int lastFrame_; - - }; - - -} - -#endif