File indexing completed on 2024-05-05 05:34:57

0001 #ifndef oxygensliderdemowidget_h
0002 #define oxygensliderdemowidget_h
0003 
0004 /*
0005 * this file is part of the oxygen gtk engine
0006 * SPDX-FileCopyrightText: 2010 Hugo Pereira Da Costa <hugo.pereira@free.fr>
0007 *
0008 * based on the Null Theme Engine for Gtk+.
0009 * SPDX-FileCopyrightText: 2008 Robert Staudinger <robert.staudinger@gmail.com>
0010 *
0011 * SPDX-License-Identifier: LGPL-2.0-or-later
0012 */
0013 
0014 #include "oxygendemowidget.h"
0015 #include "oxygensignal.h"
0016 #include "oxygentimer.h"
0017 
0018 #include <gtk/gtk.h>
0019 
0020 namespace Oxygen
0021 {
0022 
0023     class SliderDemoWidget: public DemoWidget
0024     {
0025 
0026         public:
0027 
0028         //! constructor
0029         SliderDemoWidget( void );
0030 
0031         //! destructor
0032         virtual ~SliderDemoWidget( void );
0033 
0034         //! pulse progress bar
0035         void startPulse( void )
0036         { if( !_timer.isRunning() ) _timer.start( 50, (GSourceFunc)pulseProgressBar, this ); }
0037 
0038         //! pulse progress bar
0039         void stopPulse( void )
0040         { if( _timer.isRunning() ) _timer.stop(); }
0041 
0042         protected:
0043 
0044         //! pulse progress bar
0045         static gboolean pulseProgressBar( gpointer );
0046 
0047         //! callback
0048         static void valueChanged( GtkRange*, gpointer );
0049 
0050         private:
0051 
0052         //! widget container
0053         class Sliders
0054         {
0055             public:
0056 
0057             //! constructor
0058             Sliders( void ):
0059                 _scale( 0 ),
0060                 _progressBar( 0 ),
0061                 _scrollBar( 0 ),
0062                 _progressEntry( 0 )
0063             {}
0064 
0065             //! change value
0066             void setValue( const double& value ) const;
0067 
0068             GtkWidget* _scale;
0069             GtkWidget* _progressBar;
0070             GtkWidget* _scrollBar;
0071             GtkWidget* _progressEntry;
0072         };
0073 
0074         //! horizontal sliders
0075         Sliders _horizontalSliders;
0076 
0077         //! vertical sliders
0078         Sliders _verticalSliders;
0079 
0080         //! pulse progressbar timer
0081         Timer _timer;
0082 
0083         //! pulse progress bar
0084         GtkWidget* _pulseProgressBar;
0085     };
0086 
0087 }
0088 
0089 #endif