7 #include "channeldb.inc"
8 #include "channelpicker.inc"
9 #include "condition.inc"
10 #include "mainprogress.inc"
12 #include "mwindow.inc"
13 #include "picture.inc"
16 class ChannelEditWindow
;
19 class ChannelEditThread
: public Thread
22 ChannelEditThread(MWindow
*mwindow
,
23 ChannelPicker
*channel_picker
,
29 char* value_to_freqtable(int value
);
30 char* value_to_norm(int value
);
31 char* value_to_input(int value
);
33 Condition
*completion
;
37 ChannelPicker
*channel_picker
;
39 ChannelDB
*new_channels
;
40 ChannelEditWindow
*window
;
41 ScanThread
*scan_thread
;
46 class ChannelEditList
;
47 class ChannelEditEditThread
;
48 class ChannelEditPictureThread
;
49 class ConfirmScanThread
;
51 class ChannelEditWindow
: public BC_Window
54 ChannelEditWindow(MWindow
*mwindow
, ChannelEditThread
*thread
, ChannelPicker
*channel_picker
);
59 int add_channel(); // Start the thread for adding a channel
60 int delete_channel(int channel
);
61 int delete_channel(Channel
*channel
);
64 int update_list(); // Synchronize the list box with the channel arrays
65 int update_list(Channel
*channel
); // Synchronize the list box and the channel
67 int move_channel_up();
68 int move_channel_down();
69 int change_channel_from_list(int channel_number
);
75 ArrayList
<BC_ListBoxItem
*> channel_list
;
76 ChannelEditList
*list_box
;
77 ChannelEditThread
*thread
;
78 ChannelPicker
*channel_picker
;
79 ChannelEditEditThread
*edit_thread
;
80 ChannelEditPictureThread
*picture_thread
;
82 ConfirmScanThread
*scan_confirm_thread
;
85 class ChannelEditSelect
: public BC_GenericButton
88 ChannelEditSelect(MWindow
*mwindow
, ChannelEditWindow
*window
, int x
, int y
);
91 ChannelEditWindow
*window
;
95 class ChannelEditAdd
: public BC_GenericButton
98 ChannelEditAdd(MWindow
*mwindow
, ChannelEditWindow
*window
, int x
, int y
);
101 ChannelEditWindow
*window
;
104 class ChannelEditList
: public BC_ListBox
107 ChannelEditList(MWindow
*mwindow
, ChannelEditWindow
*window
, int x
, int y
);
110 ChannelEditWindow
*window
;
111 static char *column_titles
[2];
114 class ChannelEditMoveUp
: public BC_GenericButton
117 ChannelEditMoveUp(MWindow
*mwindow
, ChannelEditWindow
*window
, int x
, int y
);
118 ~ChannelEditMoveUp();
120 ChannelEditWindow
*window
;
123 class ChannelEditMoveDown
: public BC_GenericButton
126 ChannelEditMoveDown(MWindow
*mwindow
, ChannelEditWindow
*window
, int x
, int y
);
127 ~ChannelEditMoveDown();
129 ChannelEditWindow
*window
;
132 class ChannelEditSort
: public BC_GenericButton
135 ChannelEditSort(MWindow
*mwindow
, ChannelEditWindow
*window
, int x
, int y
);
137 ChannelEditWindow
*window
;
140 class ChannelEditScan
: public BC_GenericButton
143 ChannelEditScan(MWindow
*mwindow
, ChannelEditWindow
*window
, int x
, int y
);
145 ChannelEditWindow
*window
;
148 class ChannelEditDel
: public BC_GenericButton
151 ChannelEditDel(MWindow
*mwindow
, ChannelEditWindow
*window
, int x
, int y
);
154 ChannelEditWindow
*window
;
157 class ChannelEdit
: public BC_GenericButton
160 ChannelEdit(MWindow
*mwindow
, ChannelEditWindow
*window
, int x
, int y
);
163 ChannelEditWindow
*window
;
166 class ChannelEditPicture
: public BC_GenericButton
169 ChannelEditPicture(MWindow
*mwindow
, ChannelEditWindow
*window
, int x
, int y
);
170 ~ChannelEditPicture();
172 ChannelEditWindow
*window
;
181 // ============================== Confirm overwrite with scanning
183 class ConfirmScan
: public BC_Window
186 ConfirmScan(ChannelEditWindow
*gui
, int x
, int y
);
187 void create_objects();
188 ChannelEditWindow
*gui
;
191 class ConfirmScanThread
: public BC_DialogThread
194 ConfirmScanThread(ChannelEditWindow
*gui
);
195 void handle_done_event(int result
);
196 BC_Window
* new_gui();
197 ChannelEditWindow
*gui
;
204 // ============================= Scan
206 class ScanThread
: public Thread
209 ScanThread(ChannelEditThread
*edit
);
215 ChannelEditThread
*edit
;
217 MainProgressBar
*progress
;
226 // ============================= Edit a single channel
228 class ChannelEditEditSource
;
229 class ChannelEditEditWindow
;
231 class ChannelEditEditThread
: public Thread
234 ChannelEditEditThread(ChannelEditWindow
*window
,
235 ChannelPicker
*channel_picker
,
237 ~ChannelEditEditThread();
240 int edit_channel(Channel
*channel
, int editing
);
241 void set_device(); // Set the device to the new channel
242 int change_source(char *source_name
); // Change to the source matching the name
245 int set_input(int value
);
246 int set_norm(int value
);
247 int set_freqtable(int value
);
251 Channel
*output_channel
;
252 ChannelPicker
*channel_picker
;
253 ChannelEditWindow
*window
;
254 ChannelEditEditSource
*source_text
;
255 ChannelEditEditWindow
*edit_window
;
257 int editing
; // Tells whether or not to delete the channel on cancel
258 int in_progress
; // Allow only 1 thread at a time
260 Condition
*completion
;
263 class ChannelEditEditTitle
;
266 class ChannelEditEditWindow
: public BC_Window
269 ChannelEditEditWindow(ChannelEditEditThread
*thread
,
270 ChannelEditWindow
*window
,
271 ChannelPicker
*channel_picker
);
272 ~ChannelEditEditWindow();
273 int create_objects(Channel
*channel
);
275 ChannelEditEditThread
*thread
;
276 ChannelEditWindow
*window
;
277 ChannelEditEditTitle
*title_text
;
278 Channel
*new_channel
;
279 ChannelPicker
*channel_picker
;
282 class ChannelEditEditTitle
: public BC_TextBox
285 ChannelEditEditTitle(int x
, int y
, ChannelEditEditThread
*thread
);
286 ~ChannelEditEditTitle();
288 ChannelEditEditThread
*thread
;
291 class ChannelEditEditSource
: public BC_TextBox
294 ChannelEditEditSource(int x
, int y
, ChannelEditEditThread
*thread
);
295 ~ChannelEditEditSource();
297 ChannelEditEditThread
*thread
;
300 class ChannelEditEditSourceTumbler
: public BC_Tumbler
303 ChannelEditEditSourceTumbler(int x
, int y
, ChannelEditEditThread
*thread
);
304 ~ChannelEditEditSourceTumbler();
305 int handle_up_event();
306 int handle_down_event();
307 ChannelEditEditThread
*thread
;
310 class ChannelEditEditInput
: public BC_PopupMenu
313 ChannelEditEditInput(int x
,
315 ChannelEditEditThread
*thread
,
316 ChannelEditThread
*edit
);
317 ~ChannelEditEditInput();
320 ChannelEditEditThread
*thread
;
321 ChannelEditThread
*edit
;
324 class ChannelEditEditInputItem
: public BC_MenuItem
327 ChannelEditEditInputItem(ChannelEditEditThread
*thread
,
328 ChannelEditThread
*edit
,
331 ~ChannelEditEditInputItem();
333 ChannelEditEditThread
*thread
;
334 ChannelEditThread
*edit
;
338 class ChannelEditEditNorm
: public BC_PopupMenu
341 ChannelEditEditNorm(int x
,
343 ChannelEditEditThread
*thread
,
344 ChannelEditThread
*edit
);
345 ~ChannelEditEditNorm();
347 ChannelEditEditThread
*thread
;
348 ChannelEditThread
*edit
;
351 class ChannelEditEditNormItem
: public BC_MenuItem
354 ChannelEditEditNormItem(ChannelEditEditThread
*thread
,
355 ChannelEditThread
*edit
,
358 ~ChannelEditEditNormItem();
360 ChannelEditEditThread
*thread
;
361 ChannelEditThread
*edit
;
365 class ChannelEditEditFreqtable
: public BC_PopupMenu
368 ChannelEditEditFreqtable(int x
,
370 ChannelEditEditThread
*thread
,
371 ChannelEditThread
*edit
);
372 ~ChannelEditEditFreqtable();
376 ChannelEditEditThread
*thread
;
377 ChannelEditThread
*edit
;
380 class ChannelEditEditFreqItem
: public BC_MenuItem
383 ChannelEditEditFreqItem(ChannelEditEditThread
*thread
,
384 ChannelEditThread
*edit
,
387 ~ChannelEditEditFreqItem();
390 ChannelEditEditThread
*thread
;
391 ChannelEditThread
*edit
;
395 class ChannelEditEditFine
: public BC_ISlider
398 ChannelEditEditFine(int x
, int y
, ChannelEditEditThread
*thread
);
399 ~ChannelEditEditFine();
401 ChannelEditEditThread
*thread
;
404 // =================== Edit the picture quality
407 class ChannelEditPictureWindow
;
409 class ChannelEditPictureThread
: public Thread
412 ChannelEditPictureThread(ChannelPicker
*channel_picker
, ChannelEditWindow
*window
);
413 ~ChannelEditPictureThread();
419 int in_progress
; // Allow only 1 thread at a time
420 Condition
*completion
;
421 ChannelPicker
*channel_picker
;
422 ChannelEditWindow
*window
;
423 ChannelEditPictureWindow
*edit_window
;
426 class ChannelEditPictureWindow
: public BC_Window
429 ChannelEditPictureWindow(ChannelEditPictureThread
*thread
,
430 ChannelPicker
*channel_picker
);
431 ~ChannelEditPictureWindow();
433 int calculate_h(ChannelPicker
*channel_picker
);
434 int create_objects();
436 ChannelEditPictureThread
*thread
;
437 ChannelPicker
*channel_picker
;
440 class ChannelEditBright
: public BC_IPot
443 ChannelEditBright(int x
, int y
, ChannelPicker
*channel_picker
, int value
);
444 ~ChannelEditBright();
446 int button_release_event();
447 ChannelPicker
*channel_picker
;
450 class ChannelEditContrast
: public BC_IPot
453 ChannelEditContrast(int x
, int y
, ChannelPicker
*channel_picker
, int value
);
454 ~ChannelEditContrast();
456 int button_release_event();
457 ChannelPicker
*channel_picker
;
460 class ChannelEditColor
: public BC_IPot
463 ChannelEditColor(int x
, int y
, ChannelPicker
*channel_picker
, int value
);
466 int button_release_event();
467 ChannelPicker
*channel_picker
;
470 class ChannelEditHue
: public BC_IPot
473 ChannelEditHue(int x
, int y
, ChannelPicker
*channel_picker
, int value
);
476 int button_release_event();
477 ChannelPicker
*channel_picker
;
480 class ChannelEditWhiteness
: public BC_IPot
483 ChannelEditWhiteness(int x
, int y
, ChannelPicker
*channel_picker
, int value
);
484 ~ChannelEditWhiteness();
486 int button_release_event();
487 ChannelPicker
*channel_picker
;
492 class ChannelEditCommon
: public BC_IPot
495 ChannelEditCommon(int x
,
497 ChannelPicker
*channel_picker
,
499 ~ChannelEditCommon();
501 int button_release_event();
502 ChannelPicker
*channel_picker
;