File indexing completed on 2024-05-12 17:05:52
0001 #ifndef oxygenwidgetstatedata_h 0002 #define oxygenwidgetstatedata_h 0003 /* 0004 * this file is part of the oxygen gtk engine 0005 * SPDX-FileCopyrightText: 2010 Hugo Pereira Da Costa <hugo.pereira@free.fr> 0006 * 0007 * SPDX-License-Identifier: LGPL-2.0-or-later 0008 */ 0009 0010 #include "oxygentimeline.h" 0011 #include "../oxygengtkutils.h" 0012 0013 #include <gtk/gtk.h> 0014 0015 namespace Oxygen 0016 { 0017 //! track widget state changes events 0018 class WidgetStateData 0019 { 0020 0021 public: 0022 0023 //! constructor 0024 explicit WidgetStateData( void ): 0025 _target( 0L ), 0026 _dirtyRect( Gtk::gdk_rectangle() ), 0027 _state( false ) 0028 {} 0029 0030 //! destructor 0031 virtual ~WidgetStateData( void ) 0032 {} 0033 0034 //! setup connections 0035 void connect( GtkWidget* ); 0036 0037 //! disconnect 0038 void disconnect( GtkWidget* ); 0039 0040 //! update state 0041 bool updateState( bool value, const GdkRectangle& ); 0042 0043 //! update state 0044 bool updateState( bool value ) 0045 { return updateState( value, Gtk::gdk_rectangle() ); } 0046 0047 //! true if animated 0048 bool isAnimated( void ) const 0049 { return _timeLine.isRunning(); } 0050 0051 //! opacity 0052 double opacity( void ) const 0053 { return _timeLine.value(); } 0054 0055 //! enable state 0056 void setEnabled( bool value ) 0057 { _timeLine.setEnabled( value ); } 0058 0059 //! duration 0060 void setDuration( int value ) 0061 { _timeLine.setDuration( value ); } 0062 0063 protected: 0064 0065 //! delayed update 0066 static gboolean delayedUpdate( gpointer ); 0067 0068 private: 0069 0070 //! target 0071 GtkWidget* _target; 0072 0073 //! timeline 0074 TimeLine _timeLine; 0075 0076 //! dirty rect 0077 GdkRectangle _dirtyRect; 0078 0079 //! state 0080 bool _state; 0081 0082 }; 0083 0084 } 0085 0086 #endif