00001 #ifndef CHANNELPICKER_H
00002 #define CHANNELPICKER_H
00003
00004 #include "guicast.h"
00005 #include "channel.inc"
00006 #include "channeldb.inc"
00007 #include "channeledit.inc"
00008 #include "mwindow.inc"
00009 #include "picture.inc"
00010 #include "record.inc"
00011 #include "recordmonitor.inc"
00012 #include "vdeviceprefs.inc"
00013
00014 class ChannelList;
00015 class ChannelText;
00016 class ChannelTumbler;
00017 class ChannelButton;
00018 class UpChannel;
00019 class DnChannel;
00020
00021
00022
00023 class ChannelPicker
00024 {
00025 public:
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 ChannelPicker(ChannelDB *channeldb,
00036 int x,
00037 int y,
00038 BC_WindowBase *parent_window);
00039 virtual ~ChannelPicker();
00040
00041
00042 BC_WindowBase* get_subwindow();
00043
00044
00045 virtual void handle_channel_edit(int result) {};
00046
00047 virtual void load_scan_defaults(Channel *scan_params) {};
00048 virtual void save_scan_defaults(Channel *scan_params) {};
00049
00050 virtual Channel* get_master_channel() { return 0; };
00051
00052 virtual int use_select() { return 0; };
00053 virtual BC_Theme* get_theme() { return 0; };
00054
00055 virtual Channel* get_current_channel_struct() { return 0; };
00056 virtual int get_current_channel_number() { return 0; };
00057
00058 virtual void set_channel_number(int number) {};
00059 virtual void set_channel(Channel *channel) {};
00060 virtual int has_signal() { return 0; };
00061
00062 virtual ArrayList<Channel*>* get_video_inputs() { return 0; };
00063
00064 virtual Channel* get_channel_usage() { return 0; };
00065
00066
00067 virtual int set_brightness(int value) { return 0; };
00068 virtual int set_hue(int value) { return 0; };
00069 virtual int set_color(int value) { return 0; };
00070 virtual int set_contrast(int value) { return 0; };
00071 virtual int set_whiteness(int value) { return 0; };
00072 virtual int set_picture(int device_id, int value) { return 0; };
00073
00074
00075 virtual int get_brightness() { return 0; };
00076 virtual int get_hue() { return 0; };
00077 virtual int get_color() { return 0; };
00078 virtual int get_contrast() { return 0; };
00079 virtual int get_whiteness() { return 0; };
00080 virtual int get_controls() { return 0; };
00081 virtual PictureItem* get_control(int i) { return 0; };
00082
00083 virtual PictureConfig* get_picture_usage() { return 0; };
00084
00085
00086
00087 void update_channel_list();
00088 int create_objects();
00089 int reposition();
00090 int close_threads();
00091 char *get_source_name(Channel *channel);
00092 char *current_channel_name();
00093 int channel_up();
00094 int channel_down();
00095
00096 int x, y;
00097 Channel *current_channel;
00098
00099
00100
00101 ChannelDB *channeldb;
00102 BC_WindowBase *parent_window;
00103
00104
00105
00106
00107
00108
00109 ChannelText *channel_text;
00110 ChannelList *channel_list;
00111 ChannelButton *channel_button;
00112 ChannelTumbler *channel_select;
00113 ArrayList <BC_ListBoxItem*> channel_listitems;
00114 BC_Title *channel_title;
00115 };
00116
00117 class PrefsChannelPicker : public ChannelPicker
00118 {
00119 public:
00120 PrefsChannelPicker(MWindow *mwindow,
00121 VDevicePrefs *prefs,
00122 ChannelDB *channeldb,
00123 int x,
00124 int y);
00125 ~PrefsChannelPicker();
00126
00127 BC_WindowBase* get_subwindow();
00128
00129 void load_scan_defaults(Channel *scan_params);
00130 void save_scan_defaults(Channel *scan_params);
00131 void handle_channel_edit(int result);
00132 BC_Theme* get_theme();
00133
00134 Channel* get_current_channel_struct();
00135 int get_current_channel_number();
00136
00137 void set_channel(Channel *channel);
00138 void set_channel_number(int number);
00139 int has_signal();
00140
00141 ArrayList<Channel*>* get_video_inputs();
00142
00143 Channel* get_channel_usage();
00144
00145
00146
00147
00148 int set_brightness(int value);
00149 int set_hue(int value);
00150 int set_color(int value);
00151 int set_contrast(int value);
00152 int set_whiteness(int value);
00153
00154
00155 int get_brightness();
00156 int get_hue();
00157 int get_color();
00158 int get_contrast();
00159 int get_whiteness();
00160
00161 ArrayList<Channel*> input_sources;
00162 MWindow *mwindow;
00163 VDevicePrefs *prefs;
00164 };
00165
00166 class RecordChannelPicker : public ChannelPicker
00167 {
00168 public:
00169 RecordChannelPicker(MWindow *mwindow,
00170 Record *record,
00171 RecordMonitor *record_monitor,
00172 BC_WindowBase *parent_window,
00173 ChannelDB *channeldb,
00174 int x,
00175 int y);
00176 ~RecordChannelPicker();
00177
00178 void load_scan_defaults(Channel *scan_params);
00179 void save_scan_defaults(Channel *scan_params);
00180 int use_select();
00181 Channel* get_master_channel();
00182 void handle_channel_edit(int result);
00183 BC_Theme* get_theme();
00184
00185 Channel* get_current_channel_struct();
00186 int get_current_channel_number();
00187
00188 void set_channel_number(int number);
00189 void set_channel(Channel *channel);
00190 int has_signal();
00191
00192 ArrayList<Channel*>* get_video_inputs();
00193
00194 Channel* get_channel_usage();
00195
00196
00197 int set_brightness(int value);
00198 int set_hue(int value);
00199 int set_color(int value);
00200 int set_contrast(int value);
00201 int set_whiteness(int value);
00202 int set_picture(int device_id, int value);
00203
00204
00205 int get_brightness();
00206 int get_hue();
00207 int get_color();
00208 int get_contrast();
00209 int get_whiteness();
00210 int get_controls();
00211 PictureItem* get_control(int i);
00212
00213 PictureConfig* get_picture_usage();
00214
00215 MWindow *mwindow;
00216 Record *record;
00217 RecordMonitor *record_monitor;
00218 };
00219
00220 class ChannelText : public BC_PopupTextBox
00221 {
00222 public:
00223 ChannelText(ChannelPicker *channel_picker, int x, int y);
00224 ~ChannelText();
00225
00226 int handle_event();
00227
00228 ChannelPicker *channel_picker;
00229 };
00230
00231 class ChannelList : public BC_ListBox
00232 {
00233 public:
00234 ChannelList(ChannelPicker *channel_picker, int x, int y);
00235 ~ChannelList();
00236
00237 int handle_event();
00238 ChannelPicker *channel_picker;
00239 };
00240
00241 class ChannelTumbler : public BC_Tumbler
00242 {
00243 public:
00244 ChannelTumbler(ChannelPicker *channel_picker, int x, int y);
00245 ~ChannelTumbler();
00246 int handle_up_event();
00247 int handle_down_event();
00248 int keypress_event();
00249 ChannelPicker *channel_picker;
00250 };
00251
00252 class ChannelButton : public BC_Button
00253 {
00254 public:
00255 ChannelButton(ChannelPicker *channel_picker, int x, int y);
00256 ~ChannelButton();
00257 int handle_event();
00258 ChannelPicker *channel_picker;
00259 ChannelEditThread *thread;
00260 };
00261
00262 #endif