PreferencesWindow.h
上传用户:riyaled888
上传日期:2009-03-27
资源大小:7338k
文件大小:5k
源码类别:

多媒体

开发平台:

MultiPlatform

  1. /*****************************************************************************
  2.  * PreferencesWindow.h
  3.  *****************************************************************************
  4.  * Copyright (C) 1999, 2000, 2001 VideoLAN
  5.  * $Id: PreferencesWindow.h 6961 2004-03-05 17:34:23Z sam $
  6.  *
  7.  * Authors: Eric Petit <titer@videolan.org>
  8.  *
  9.  * This program is free software; you can redistribute it and/or modify
  10.  * it under the terms of the GNU General Public License as published by
  11.  * the Free Software Foundation; either version 2 of the License, or
  12.  * (at your option) any later version.
  13.  *
  14.  * This program is distributed in the hope that it will be useful,
  15.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.  * GNU General Public License for more details.
  18.  *
  19.  * You should have received a copy of the GNU General Public License
  20.  * along with this program; if not, write to the Free Software
  21.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
  22.  *****************************************************************************/
  23. #ifndef BEOS_PREFERENCES_WINDOW_H
  24. #define BEOS_PREFERENCES_WINDOW_H
  25. #include <InterfaceKit.h>
  26. #define PREFS_WINDOW_WIDTH   700
  27. #define PREFS_WINDOW_HEIGHT  400
  28. #define PREFS_ITEM_SELECTED  'pris'
  29. #define PREFS_DEFAULTS       'prde'
  30. #define PREFS_APPLY          'prap'
  31. #define PREFS_SAVE           'prsa'
  32. class StringItemWithView : public BStringItem
  33. {
  34.   public:
  35.                             StringItemWithView( const char * text )
  36.                                 : BStringItem( text )
  37.                             {
  38.                                 fConfigBox = NULL;
  39.                                 fConfigScroll = NULL;
  40.                                 fConfigView = NULL;
  41.                                 fText = strdup( text );
  42.                             }
  43.     /* Here we store the config BBox associated to this module */
  44.     BBox *                  fConfigBox;
  45.     BScrollView *           fConfigScroll;
  46.     BView *                 fConfigView;
  47.     char *                  fText;
  48. };
  49. class ConfigWidget : public BView
  50. {
  51.     public:
  52.         ConfigWidget( BRect rect, int type, char * configName );
  53.         virtual void Apply( intf_thread_t * p_intf, bool doIt ) = 0;
  54.     protected:
  55.         int          fConfigType;
  56.         char       * fConfigName;
  57. };
  58. class ConfigTextControl : public ConfigWidget
  59. {
  60.     public:
  61.         ConfigTextControl( BRect rect, int type, char * label,
  62.                            char * configName );
  63.         void Apply( intf_thread_t * p_intf, bool doIt );
  64.     private:
  65.         BTextControl * fTextControl;
  66. };
  67. class ConfigCheckBox : public ConfigWidget
  68. {
  69.     public:
  70.         ConfigCheckBox( BRect rect, int type, char * label,
  71.                         char * configName );
  72.         void Apply( intf_thread_t * p_intf, bool doIt );
  73.     private:
  74.         BCheckBox * fCheckBox;
  75. };
  76. class ConfigMenuField : public ConfigWidget
  77. {
  78.     public:
  79.         ConfigMenuField( BRect rect, int type, char * label,
  80.                          char * configName, char ** list );
  81.         void Apply( intf_thread_t * p_intf, bool doIt );
  82.     private:
  83.         BPopUpMenu * fPopUpMenu;
  84.         BMenuField * fMenuField;
  85. };
  86. class ConfigSlider : public ConfigWidget
  87. {
  88.     public:
  89.         ConfigSlider( BRect rect, int type, char * label,
  90.                       char * configName, int min, int max );
  91.         void Apply( intf_thread_t * p_intf, bool doIt );
  92.     private:
  93.         BSlider * fSlider;
  94. };
  95. class ConfigKey : public ConfigWidget
  96. {
  97.     public:
  98.         ConfigKey( BRect rect, int type, char * label,
  99.                    char * configName );
  100.         void Apply( intf_thread_t * p_intf, bool doIt );
  101.     private:
  102.         BStringView * fStringView;
  103.         BCheckBox   * fAltCheck;
  104.         BCheckBox   * fCtrlCheck;
  105.         BCheckBox   * fShiftCheck;
  106.         BPopUpMenu  * fPopUpMenu;
  107.         BMenuField  * fMenuField;
  108. };
  109. class PreferencesWindow : public BWindow
  110. {
  111.   public:
  112.                             PreferencesWindow( intf_thread_t * p_intf,
  113.                                                BRect frame,
  114.                                                const char * name );
  115.     virtual                 ~PreferencesWindow();
  116.     virtual bool            QuitRequested();
  117.     virtual void            MessageReceived(BMessage* message);
  118.     virtual void            FrameResized( float, float );
  119.             void            Update();
  120.             void            UpdateScrollBar();
  121.             void            ApplyChanges( bool doIt );
  122.             void            SaveChanges();
  123.             void            ReallyQuit();
  124.   private:
  125.     void                    BuildConfigView( StringItemWithView * stringItem,
  126.                                              module_config_t ** pp_item,
  127.                                              bool stop_after_category );
  128.     BView *                 fPrefsView;
  129.     BOutlineListView *      fOutline;
  130.     BView *                 fDummyView;
  131.     BScrollView *           fConfigScroll;
  132.     StringItemWithView *    fCurrent;
  133.     intf_thread_t *         p_intf;
  134. };
  135. #endif    // BEOS_PREFERENCES_WINDOW_H