00001 #ifndef CHANNELEDIT_H
00002 #define CHANNELEDIT_H
00003
00004 #include "bcdialog.h"
00005 #include "bcprogressbox.inc"
00006 #include "guicast.h"
00007 #include "channel.inc"
00008 #include "channeldb.inc"
00009 #include "channelpicker.inc"
00010 #include "condition.inc"
00011 #include "mutex.inc"
00012 #include "picture.inc"
00013 #include "record.h"
00014
00015 class ChannelEditWindow;
00016 class ScanThread;
00017
00018 class ChannelEditThread : public Thread
00019 {
00020 public:
00021 ChannelEditThread(ChannelPicker *channel_picker,
00022 ChannelDB *channeldb);
00023 ~ChannelEditThread();
00024 void run();
00025 int close_threads();
00026 char* value_to_freqtable(int value);
00027 char* value_to_norm(int value);
00028 char* value_to_input(int value);
00029
00030 Condition *completion;
00031 int in_progress;
00032 int current_channel;
00033 Channel scan_params;
00034 ChannelPicker *channel_picker;
00035 ChannelDB *channeldb;
00036 ChannelDB *new_channels;
00037 ChannelEditWindow *window;
00038 ScanThread *scan_thread;
00039 };
00040
00041 class ChannelEditList;
00042 class ChannelEditEditThread;
00043 class ChannelEditPictureThread;
00044 class ConfirmScanThread;
00045
00046 class ChannelEditWindow : public BC_Window
00047 {
00048 public:
00049 ChannelEditWindow(ChannelEditThread *thread,
00050 ChannelPicker *channel_picker);
00051 ~ChannelEditWindow();
00052
00053 int create_objects();
00054 int close_event();
00055 int add_channel();
00056 int delete_channel(int channel);
00057 int delete_channel(Channel *channel);
00058 int edit_channel();
00059 int edit_picture();
00060 int update_list();
00061 int update_list(Channel *channel);
00062 int update_output();
00063 int move_channel_up();
00064 int move_channel_down();
00065 int change_channel_from_list(int channel_number);
00066 void sort();
00067 void scan_confirm();
00068 void scan();
00069
00070
00071 ArrayList<BC_ListBoxItem*> channel_list;
00072 ChannelEditList *list_box;
00073 ChannelEditThread *thread;
00074 ChannelPicker *channel_picker;
00075 ChannelEditEditThread *edit_thread;
00076 ChannelEditPictureThread *picture_thread;
00077 ConfirmScanThread *scan_confirm_thread;
00078 };
00079
00080 class ChannelEditSelect : public BC_GenericButton
00081 {
00082 public:
00083 ChannelEditSelect(ChannelEditWindow *window, int x, int y);
00084 ~ChannelEditSelect();
00085 int handle_event();
00086 ChannelEditWindow *window;
00087 };
00088
00089
00090 class ChannelEditAdd : public BC_GenericButton
00091 {
00092 public:
00093 ChannelEditAdd(ChannelEditWindow *window, int x, int y);
00094 ~ChannelEditAdd();
00095 int handle_event();
00096 ChannelEditWindow *window;
00097 };
00098
00099 class ChannelEditList : public BC_ListBox
00100 {
00101 public:
00102 ChannelEditList(ChannelEditWindow *window, int x, int y);
00103 ~ChannelEditList();
00104 int handle_event();
00105 ChannelEditWindow *window;
00106 static char *column_titles[2];
00107 };
00108
00109 class ChannelEditMoveUp : public BC_GenericButton
00110 {
00111 public:
00112 ChannelEditMoveUp(ChannelEditWindow *window, int x, int y);
00113 ~ChannelEditMoveUp();
00114 int handle_event();
00115 ChannelEditWindow *window;
00116 };
00117
00118 class ChannelEditMoveDown : public BC_GenericButton
00119 {
00120 public:
00121 ChannelEditMoveDown(ChannelEditWindow *window, int x, int y);
00122 ~ChannelEditMoveDown();
00123 int handle_event();
00124 ChannelEditWindow *window;
00125 };
00126
00127 class ChannelEditSort : public BC_GenericButton
00128 {
00129 public:
00130 ChannelEditSort(ChannelEditWindow *window, int x, int y);
00131 int handle_event();
00132 ChannelEditWindow *window;
00133 };
00134
00135 class ChannelEditScan : public BC_GenericButton
00136 {
00137 public:
00138 ChannelEditScan(ChannelEditWindow *window, int x, int y);
00139 int handle_event();
00140 ChannelEditWindow *window;
00141 };
00142
00143 class ChannelEditDel : public BC_GenericButton
00144 {
00145 public:
00146 ChannelEditDel(ChannelEditWindow *window, int x, int y);
00147 ~ChannelEditDel();
00148 int handle_event();
00149 ChannelEditWindow *window;
00150 };
00151
00152 class ChannelEdit : public BC_GenericButton
00153 {
00154 public:
00155 ChannelEdit(ChannelEditWindow *window, int x, int y);
00156 ~ChannelEdit();
00157 int handle_event();
00158 ChannelEditWindow *window;
00159 };
00160
00161 class ChannelEditPicture : public BC_GenericButton
00162 {
00163 public:
00164 ChannelEditPicture(ChannelEditWindow *window, int x, int y);
00165 ~ChannelEditPicture();
00166 int handle_event();
00167 ChannelEditWindow *window;
00168 };
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178 class ConfirmScan : public BC_Window
00179 {
00180 public:
00181 ConfirmScan(ChannelEditWindow *gui, int x, int y);
00182 void create_objects();
00183 ChannelEditWindow *gui;
00184 };
00185
00186 class ConfirmScanThread : public BC_DialogThread
00187 {
00188 public:
00189 ConfirmScanThread(ChannelEditWindow *gui);
00190 void handle_done_event(int result);
00191 BC_Window* new_gui();
00192 ChannelEditWindow *gui;
00193 };
00194
00195
00196
00197
00198
00199
00200
00201 class ScanThread : public Thread
00202 {
00203 public:
00204 ScanThread(ChannelEditThread *edit);
00205 ~ScanThread();
00206
00207 void start();
00208 void run();
00209
00210 ChannelEditThread *edit;
00211 int interrupt;
00212 BC_ProgressBox *progress;
00213 };
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223 class ChannelEditEditSource;
00224 class ChannelEditEditWindow;
00225
00226 class ChannelEditEditThread : public Thread
00227 {
00228 public:
00229 ChannelEditEditThread(ChannelEditWindow *window,
00230 ChannelPicker *channel_picker);
00231 ~ChannelEditEditThread();
00232
00233 void run();
00234 int edit_channel(Channel *channel, int editing);
00235 void set_device();
00236 int change_source(char *source_name);
00237 int source_up();
00238 int source_down();
00239 int set_input(int value);
00240 int set_norm(int value);
00241 int set_freqtable(int value);
00242 int close_threads();
00243
00244 Channel new_channel;
00245 Channel *output_channel;
00246 ChannelPicker *channel_picker;
00247 ChannelEditWindow *window;
00248 ChannelEditEditSource *source_text;
00249 ChannelEditEditWindow *edit_window;
00250 int editing;
00251 int in_progress;
00252 int user_title;
00253 Condition *completion;
00254 };
00255
00256 class ChannelEditEditTitle;
00257
00258
00259 class ChannelEditEditWindow : public BC_Window
00260 {
00261 public:
00262 ChannelEditEditWindow(ChannelEditEditThread *thread,
00263 ChannelEditWindow *window,
00264 ChannelPicker *channel_picker);
00265 ~ChannelEditEditWindow();
00266 int create_objects(Channel *channel);
00267
00268 ChannelEditEditThread *thread;
00269 ChannelEditWindow *window;
00270 ChannelEditEditTitle *title_text;
00271 Channel *new_channel;
00272 ChannelPicker *channel_picker;
00273 };
00274
00275 class ChannelEditEditTitle : public BC_TextBox
00276 {
00277 public:
00278 ChannelEditEditTitle(int x, int y, ChannelEditEditThread *thread);
00279 ~ChannelEditEditTitle();
00280 int handle_event();
00281 ChannelEditEditThread *thread;
00282 };
00283
00284 class ChannelEditEditSource : public BC_TextBox
00285 {
00286 public:
00287 ChannelEditEditSource(int x, int y, ChannelEditEditThread *thread);
00288 ~ChannelEditEditSource();
00289 int handle_event();
00290 ChannelEditEditThread *thread;
00291 };
00292
00293 class ChannelEditEditSourceTumbler : public BC_Tumbler
00294 {
00295 public:
00296 ChannelEditEditSourceTumbler(int x, int y, ChannelEditEditThread *thread);
00297 ~ChannelEditEditSourceTumbler();
00298 int handle_up_event();
00299 int handle_down_event();
00300 ChannelEditEditThread *thread;
00301 };
00302
00303 class ChannelEditEditInput : public BC_PopupMenu
00304 {
00305 public:
00306 ChannelEditEditInput(int x,
00307 int y,
00308 ChannelEditEditThread *thread,
00309 ChannelEditThread *edit);
00310 ~ChannelEditEditInput();
00311 int add_items();
00312 int handle_event();
00313 ChannelEditEditThread *thread;
00314 ChannelEditThread *edit;
00315 };
00316
00317 class ChannelEditEditInputItem : public BC_MenuItem
00318 {
00319 public:
00320 ChannelEditEditInputItem(ChannelEditEditThread *thread,
00321 ChannelEditThread *edit,
00322 char *text,
00323 int value);
00324 ~ChannelEditEditInputItem();
00325 int handle_event();
00326 ChannelEditEditThread *thread;
00327 ChannelEditThread *edit;
00328 int value;
00329 };
00330
00331 class ChannelEditEditNorm : public BC_PopupMenu
00332 {
00333 public:
00334 ChannelEditEditNorm(int x,
00335 int y,
00336 ChannelEditEditThread *thread,
00337 ChannelEditThread *edit);
00338 ~ChannelEditEditNorm();
00339 int add_items();
00340 ChannelEditEditThread *thread;
00341 ChannelEditThread *edit;
00342 };
00343
00344 class ChannelEditEditNormItem : public BC_MenuItem
00345 {
00346 public:
00347 ChannelEditEditNormItem(ChannelEditEditThread *thread,
00348 ChannelEditThread *edit,
00349 char *text,
00350 int value);
00351 ~ChannelEditEditNormItem();
00352 int handle_event();
00353 ChannelEditEditThread *thread;
00354 ChannelEditThread *edit;
00355 int value;
00356 };
00357
00358 class ChannelEditEditFreqtable : public BC_PopupMenu
00359 {
00360 public:
00361 ChannelEditEditFreqtable(int x,
00362 int y,
00363 ChannelEditEditThread *thread,
00364 ChannelEditThread *edit);
00365 ~ChannelEditEditFreqtable();
00366
00367 int add_items();
00368
00369 ChannelEditEditThread *thread;
00370 ChannelEditThread *edit;
00371 };
00372
00373 class ChannelEditEditFreqItem : public BC_MenuItem
00374 {
00375 public:
00376 ChannelEditEditFreqItem(ChannelEditEditThread *thread,
00377 ChannelEditThread *edit,
00378 char *text,
00379 int value);
00380 ~ChannelEditEditFreqItem();
00381
00382 int handle_event();
00383 ChannelEditEditThread *thread;
00384 ChannelEditThread *edit;
00385 int value;
00386 };
00387
00388 class ChannelEditEditFine : public BC_ISlider
00389 {
00390 public:
00391 ChannelEditEditFine(int x, int y, ChannelEditEditThread *thread);
00392 ~ChannelEditEditFine();
00393 int handle_event();
00394 int button_release_event();
00395 ChannelEditEditThread *thread;
00396 };
00397
00398
00399
00400
00401 class ChannelEditPictureWindow;
00402
00403 class ChannelEditPictureThread : public Thread
00404 {
00405 public:
00406 ChannelEditPictureThread(ChannelPicker *channel_picker, ChannelEditWindow *window);
00407 ~ChannelEditPictureThread();
00408
00409 void run();
00410 int close_threads();
00411 int edit_picture();
00412
00413 int in_progress;
00414 Condition *completion;
00415 ChannelPicker *channel_picker;
00416 ChannelEditWindow *window;
00417 ChannelEditPictureWindow *edit_window;
00418 };
00419
00420 class ChannelEditPictureWindow : public BC_Window
00421 {
00422 public:
00423 ChannelEditPictureWindow(ChannelEditPictureThread *thread,
00424 ChannelPicker *channel_picker);
00425 ~ChannelEditPictureWindow();
00426
00427 int calculate_h(ChannelPicker *channel_picker);
00428 int create_objects();
00429
00430 ChannelEditPictureThread *thread;
00431 ChannelPicker *channel_picker;
00432 };
00433
00434 class ChannelEditBright : public BC_IPot
00435 {
00436 public:
00437 ChannelEditBright(int x, int y, ChannelPicker *channel_picker, int value);
00438 ~ChannelEditBright();
00439 int handle_event();
00440 int button_release_event();
00441 ChannelPicker *channel_picker;
00442 };
00443
00444 class ChannelEditContrast : public BC_IPot
00445 {
00446 public:
00447 ChannelEditContrast(int x, int y, ChannelPicker *channel_picker, int value);
00448 ~ChannelEditContrast();
00449 int handle_event();
00450 int button_release_event();
00451 ChannelPicker *channel_picker;
00452 };
00453
00454 class ChannelEditColor : public BC_IPot
00455 {
00456 public:
00457 ChannelEditColor(int x, int y, ChannelPicker *channel_picker, int value);
00458 ~ChannelEditColor();
00459 int handle_event();
00460 int button_release_event();
00461 ChannelPicker *channel_picker;
00462 };
00463
00464 class ChannelEditHue : public BC_IPot
00465 {
00466 public:
00467 ChannelEditHue(int x, int y, ChannelPicker *channel_picker, int value);
00468 ~ChannelEditHue();
00469 int handle_event();
00470 int button_release_event();
00471 ChannelPicker *channel_picker;
00472 };
00473
00474 class ChannelEditWhiteness : public BC_IPot
00475 {
00476 public:
00477 ChannelEditWhiteness(int x, int y, ChannelPicker *channel_picker, int value);
00478 ~ChannelEditWhiteness();
00479 int handle_event();
00480 int button_release_event();
00481 ChannelPicker *channel_picker;
00482 };
00483
00484
00485
00486 class ChannelEditCommon : public BC_IPot
00487 {
00488 public:;
00489 ChannelEditCommon(int x,
00490 int y,
00491 ChannelPicker *channel_picker,
00492 PictureItem *item);
00493 ~ChannelEditCommon();
00494 int handle_event();
00495 int button_release_event();
00496 ChannelPicker *channel_picker;
00497 int device_id;
00498 };
00499
00500
00501
00502 #endif