+++ /dev/null
-#ifndef CHANNELINFO_H
-#define CHANNELINFO_H
-
-#include "channel.inc"
-#include "channeldb.h"
-#include "channelinfo.inc"
-#include "devicedvbinput.h"
-#include "guicast.h"
-#include "mwindow.inc"
-#include "record.inc"
-#include "recordbatches.h"
-#include "signalstatus.h"
-#include "videodevice.inc"
-#include "vdevicempeg.inc"
-
-#define LTBLACK 0x001c1c1c
-
-
-class ChanSearch : public Thread
-{
-public:
- ChannelInfo *iwindow;
- ChanSearchGUI *gui;
- Mutex *window_lock;
-
- void start();
- void stop();
- void run();
-
- ChanSearch(ChannelInfo *iwindow);
- ~ChanSearch();
-};
-
-class ChanSearchGUI : public BC_Window
-{
-public:
- ChanSearch *cswindow;
- ChannelInfo *iwindow;
- ChannelPanel *panel;
- ChanSearchText *search_text;
- ChanSearchTitleText *title_text;
- ChanSearchInfoText *info_text;
- ChanSearchMatchCase *match_case;
- ChanSearchStart *search_start;
- ChanSearchCancel *cancel;
- ChanSearchList *search_list;
- BC_Title *click_tip;
- BC_Title *results;
-
- int title_text_enable;
- int info_text_enable;
- int match_case_enable;
- ChannelEvent *highlighted_event;
- int search_x, search_y, text_x, text_y;
- int cancel_x, cancel_y, cancel_w, cancel_h;
- int list_x, list_y, list_w, list_h;
- int results_x, results_y;
- int sort_column, sort_order;
-
- const char *search_column_titles[3];
- int search_column_widths[3];
- int search_columns[3];
- ArrayList<BC_ListBoxItem*> search_items[3];
- ArrayList<ChannelEvent*> search_results;
-
- void create_objects();
- int close_event();
- int resize_event(int x, int y);
- void update();
- int search(const char *);
- void search();
- static int cmpr_text_dn(const void *a, const void *b);
- static int cmpr_Text_dn(const void *a, const void *b);
- static int cmpr_text_up(const void *a, const void *b);
- static int cmpr_Text_up(const void *a, const void *b);
- static int cmpr_time_dn(const void *a, const void *b);
- static int cmpr_time_up(const void *a, const void *b);
- static int cmpr_title_dn(const void *a, const void *b);
- static int cmpr_Title_dn(const void *a, const void *b);
- static int cmpr_title_up(const void *a, const void *b);
- static int cmpr_Title_up(const void *a, const void *b);
- void sort_events(int column, int order);
- void move_column(int src, int dst);
-
- ChanSearchGUI(ChanSearch *cswindow);
- ~ChanSearchGUI();
-};
-
-class ChanSearchTitleText : public BC_CheckBox
-{
-public:
- ChanSearchGUI *gui;
-
- int handle_event();
- void update(int v) { set_value(gui->title_text_enable = v); }
-
- ChanSearchTitleText(ChanSearchGUI *gui, int x, int y);
- ~ChanSearchTitleText();
-};
-
-class ChanSearchInfoText : public BC_CheckBox
-{
-public:
- ChanSearchGUI *gui;
-
- int handle_event();
- void update(int v) { set_value(gui->info_text_enable = v); }
-
- ChanSearchInfoText(ChanSearchGUI *gui, int x, int y);
- ~ChanSearchInfoText();
-};
-
-class ChanSearchMatchCase : public BC_CheckBox
-{
-public:
- ChanSearchGUI *gui;
-
- int handle_event();
-
- ChanSearchMatchCase(ChanSearchGUI *gui, int x, int y);
- ~ChanSearchMatchCase();
-};
-
-class ChanSearchText : public BC_TextBox
-{
-public:
- ChanSearchGUI *gui;
-
- int handle_event();
- int keypress_event();
-
- ChanSearchText(ChanSearchGUI *gui, int x, int y, int w);
- ~ChanSearchText();
-};
-
-class ChanSearchStart : public BC_GenericButton
-{
-public:
- ChanSearchGUI *gui;
-
- int handle_event();
-
- ChanSearchStart(ChanSearchGUI *gui, int x, int y);
- ~ChanSearchStart();
-};
-
-class ChanSearchCancel : public BC_CancelButton
-{
-public:
- ChanSearchGUI *gui;
-
- int handle_event();
-
- ChanSearchCancel(ChanSearchGUI *gui, int x, int y);
- ~ChanSearchCancel();
-};
-
-class ChanSearchList : public BC_ListBox
-{
-public:
- ChanSearchGUI *gui;
-
- int handle_event();
- int sort_order_event();
- int move_column_event();
-
- ChanSearchList(ChanSearchGUI *gui, int x, int y, int w, int h);
- ~ChanSearchList();
-};
-
-
-class ChannelProgress : public Thread, public BC_SubWindow
-{
- ChannelInfoGUI *gui;
- BC_Title *eta;
- BC_ProgressBar *bar;
- Timer *eta_timer;
- double length, value;
- int done;
-public:
- void create_objects();
- void run();
- void start();
- void stop();
- int update();
- void set_value(int v) { value = v; }
-
- ChannelProgress(ChannelInfoGUI *gui, int x, int y, int w, int h, int len);
- ~ChannelProgress();
-};
-
-
-
-class ChannelPanel : public BC_SubWindow
-{
-public:
- ChannelInfoGUI *gui;
- TimeLine *time_line;
- ChannelData *channel_data;
- ChannelFrame *channel_frame;
- ChannelScroll *channel_scroll;
- TimeLineScroll *time_line_scroll;
- ArrayList<TimeLineItem*> time_line_items;
- ArrayList<ChannelDataItem*> channel_data_items;
- ArrayList<ChannelEventLine *> channel_line_items;
- ArrayList<ChannelEvent*> channel_event_items;
-
- int x0, y0, x1, y1, t0, t1;
- int iwd, iht;
- int x_moved, y_moved;
- int iwindow_w, iwindow_h;
- int path_w, path_h, hhr_w, x_now;
- int frame_x, frame_y;
- int frame_w, frame_h;
- int x_scroll, y_scroll;
- struct timeval tv;
- struct timezone tz;
- time_t st_org;
-
- void create_objects();
- ChannelEventLine *NewChannelLine(int y, int h, int color);
- ChannelEventLine *NewChannelLine(int y) {
- return NewChannelLine(y, path_h, LTBLACK);
- }
- int separator(int y) {
- NewChannelLine(y+path_h/8, path_h/4, BLACK);
- return path_h/2;
- }
- void resize(int w, int h);
- void bounding_box(int ix0, int iy0, int ix1, int iy1);
- void set_x_scroll(int v);
- void set_y_scroll(int v);
- void reposition();
- void get_xtime(int x, char *text);
- void time_line_update(int ix0, int ix1);
- int button_press_event();
-
- ChannelPanel(ChannelInfoGUI *gui, int x, int y, int w, int h);
- ~ChannelPanel();
-};
-
-class TimeLineItem : public BC_Title
-{
-public:
- ChannelPanel *panel;
- int x0, y0;
-
- TimeLineItem(ChannelPanel *panel, int x, int y, char *text);
- ~TimeLineItem();
-};
-
-class TimeLine : public BC_SubWindow
-{
-public:
- ChannelPanel *panel;
- int resize_event(int w, int h);
-
- TimeLine(ChannelPanel *panel);
- ~TimeLine();
-};
-
-class ChannelDataItem : public BC_Title
-{
-public:
- ChannelPanel *panel;
- int x0, y0;
- const char *tip_info;
- int in_window, tooltip_done;
-
- int cursor_enter_event();
- int cursor_leave_event();
- int repeat_event(int64_t duration);
- void set_tooltip(const char *tip);
-
- ChannelDataItem(ChannelPanel *panel, int x, int y, int w,
- int color, const char *text);
- ~ChannelDataItem();
-};
-
-class ChannelData : public BC_SubWindow
-{
-public:
- ChannelPanel *panel;
-
- int resize_event(int w, int h);
-
- ChannelData(ChannelPanel *panel, int x, int y, int w, int h);
- ~ChannelData();
-};
-
-class ChannelScroll : public BC_ScrollBar
-{
-public:
- ChannelPanel *panel;
-
- int handle_event();
-
- ChannelScroll(ChannelPanel *panel, int x, int y, int h);
- ~ChannelScroll();
-};
-
-class TimeLineScroll : public BC_ScrollBar
-{
-public:
- ChannelPanel *panel;
-
- int handle_event();
-
- TimeLineScroll(ChannelPanel *panel, int x, int y, int w);
- ~TimeLineScroll();
-};
-
-
-
-class ChannelEvent : public BC_GenericButton
-{
-public:
- ChannelEventLine *channel_line;
- time_t start_time, end_time;
- Channel *channel;
- int x0, y0, no;
- const char *tip_info;
-
- int handle_event();
- void set_tooltip(const char *tip);
-
- ChannelEvent(ChannelEventLine *channel_line, Channel *channel,
- time_t start_time, time_t end_time, int x, int y, int w,
- const char *text);
- ~ChannelEvent();
-};
-
-class ChannelEventLine : public BC_SubWindow
-{
-public:
- ChannelPanel *panel;
- int x0, y0;
-
- void resize(int w, int h);
-
- ChannelEventLine(ChannelPanel *panel, int x, int y, int w, int h, int color);
- ~ChannelEventLine();
-};
-
-class ChannelFrame : public BC_SubWindow
-{
-public:
- ChannelPanel *panel;
-
- void resize(int w, int h);
-
- ChannelFrame(ChannelPanel *panel);
- ~ChannelFrame();
-};
-
-
-
-class ChannelInfoGUI : public BC_Window
-{
-public:
- ChannelInfo *iwindow;
- ChanSearch *channel_search;
- ChannelPanel *panel;
- ChannelProgress *progress;
- ChannelStatus *channel_status;
- ChannelInfoGUIBatches *batch_bay;
- ChannelDir *channel_dir;
- ChannelPath *channel_path;
- ChannelStart *channel_start;
- ChannelDuration *channel_duration;
- ChannelSource *channel_source;
- ChannelClearBatch *channel_clear_batch;
- ChannelNewBatch *channel_new_batch;
- ChannelDeleteBatch *channel_delete_batch;
- TimeEntryTumbler *early_time, *late_time;
- BC_Title *directory_title;
- BC_Title *path_title;
- BC_Title *start_title;
- BC_Title *duration_title;
- BC_Title *source_title;
- BC_OKButton *ok;
- BC_CancelButton *cancel;
- ChannelInfoCron *channel_cron;
- ChannelInfoPowerOff *channel_poweroff;
- ChannelInfoFind *channel_find;
- int x0, y0, title_w, data_w, pad;
- int path_w, path_h, status_w;
- int panel_w, panel_h, max_bay_w;
- int bay_x, bay_y, bay_w, bay_h;
- const char *cron_caption, *power_caption;
- int cron_x, cron_y, cron_w, cron_h;
- int power_x, power_y, power_w, power_h;
- int find_x, find_y, find_h;
- int ok_x, ok_y, ok_w, ok_h;
- int cancel_x, cancel_y, cancel_w, cancel_h;
-
- void create_objects();
- void stop(int v);
- int translation_event();
- int resize_event(int w, int h);
- int close_event();
- void update_channel_tools();
- void incr_event(int start_time_incr, int duration_incr);
- void update_progress(int n) { progress->set_value(n); }
-
- ChannelInfoGUI(ChannelInfo *iwindow, int x, int y, int w, int h);
- ~ChannelInfoGUI();
-};
-
-class ChannelInfoOK : public BC_OKButton
-{
-public:
- ChannelInfoGUI *gui;
-
- int button_press_event();
- int keypress_event();
-
- ChannelInfoOK(ChannelInfoGUI *gui, int x, int y);
- ~ChannelInfoOK();
-};
-
-class ChannelInfoCancel : public BC_CancelButton
-{
-public:
- ChannelInfoGUI *gui;
-
- int button_press_event();
-
- ChannelInfoCancel(ChannelInfoGUI *gui, int x, int y);
- ~ChannelInfoCancel();
-};
-
-class ChannelInfoCron : public BC_CheckBox
-{
-public:
- ChannelInfoGUI *gui;
-
- int handle_event();
- ChannelInfoCron(ChannelInfoGUI *gui, int x, int y, int *value);
- ~ChannelInfoCron();
-};
-
-class ChannelInfoPowerOff : public BC_CheckBox
-{
-public:
- ChannelInfoGUI *gui;
-
- int handle_event();
-
- ChannelInfoPowerOff(ChannelInfoGUI *gui, int x, int y, int *value);
- ~ChannelInfoPowerOff();
-};
-
-class ChannelInfoFind : public BC_GenericButton
-{
-public:
- ChannelInfoGUI *gui;
-
- int handle_event();
- ChannelInfoFind(ChannelInfoGUI *gui, int x, int y);
- ~ChannelInfoFind();
-};
-
-
-class ChannelInfoGUIBatches : public RecordBatchesGUI
-{
-public:
- ChannelInfoGUI *gui;
-
- int handle_event();
- int selection_changed();
-
- ChannelInfoGUIBatches(ChannelInfoGUI *gui,
- int x, int y, int w, int h);
- ~ChannelInfoGUIBatches();
-};
-
-class ChannelDir : public RecordBatchesGUI::Dir
-{
-public:
- ChannelInfoGUI *gui;
-
- ChannelDir(ChannelInfoGUI *gui, const char *dir, int x, int y);
-};
-
-class ChannelPath : public RecordBatchesGUI::Path
-{
-public:
- ChannelInfoGUI *gui;
-
- ChannelPath(ChannelInfoGUI *gui, int x, int y);
-};
-
-class ChannelStart : public RecordBatchesGUI::StartTime
-{
-public:
- ChannelInfoGUI *gui;
-
- ChannelStart(ChannelInfoGUI *gui, int x, int y);
-};
-
-class ChannelDuration : public RecordBatchesGUI::Duration
-{
-public:
- ChannelInfoGUI *gui;
-
- ChannelDuration(ChannelInfoGUI *gui, int x, int y, int w);
-};
-
-class ChannelEarlyTime : public TimeEntryTumbler
-{
-public:
- ChannelInfoGUI *gui;
-
- int handle_up_event();
- int handle_down_event();
-
- ChannelEarlyTime(ChannelInfoGUI *gui, int x, int y,
- double *output_time);
-};
-
-class ChannelLateTime : public TimeEntryTumbler
-{
-public:
- ChannelInfoGUI *gui;
-
- int handle_up_event();
- int handle_down_event();
-
- ChannelLateTime(ChannelInfoGUI *gui, int x, int y,
- double *output_time);
-};
-
-class ChannelSource : public RecordBatchesGUI::Source
-{
-public:
- ChannelInfoGUI *gui;
- void create_objects();
- int handle_event();
- ChannelSource(ChannelInfoGUI *gui, int x, int y);
-};
-
-
-class ChannelNewBatch : public RecordBatchesGUI::NewBatch
-{
-public:
- ChannelInfoGUI *gui;
- int handle_event();
- ChannelNewBatch(ChannelInfoGUI *gui, int x, int y);
-};
-
-
-class ChannelDeleteBatch : public RecordBatchesGUI::DeleteBatch
-{
-public:
- ChannelInfoGUI *gui;
- int handle_event();
- ChannelDeleteBatch(ChannelInfoGUI *gui, int x, int y);
-};
-
-class ChannelClearBatch : public RecordBatchesGUI::ClearBatch
-{
-public:
- ChannelInfoGUI *gui;
- int handle_event();
- ChannelClearBatch(ChannelInfoGUI *gui, int x, int y);
-};
-
-
-
-class ChannelInfo : public Thread
-{
-public:
- MWindow *mwindow;
- Record *record;
- VideoDevice *vdevice;
- Mutex *window_lock;
- Mutex *vdevice_lock;
- Mutex *progress_lock;
- DeviceDVBInput *dvb_input;
- RecordBatches record_batches;
- ChannelInfoGUI *gui;
- ChannelThread *thread;
- ChannelDB *channeldb;
- Condition *scan_lock;
- int cron_enable, poweroff_enable;
- int item;
- int done, gui_done;
-
- void run_scan();
- void toggle_scan();
- void start();
- void stop();
- void run();
- void close_vdevice();
- Batch *new_batch();
- void delete_batch();
- int current_batch() { return gui->batch_bay->current_batch(); }
- int editing_batch() { return gui->batch_bay->editing_batch(); }
- bool is_active() { return gui != 0; }
-
- ChannelInfo(MWindow *mwindow);
- ~ChannelInfo();
-};
-
-class ChannelThread : public Thread
-{
-public:
- ChannelInfo *iwindow;
- ChannelInfoGUI *gui;
- ChannelPanel *panel;
- zmpeg3_t *fd;
- int done;
-
- int load_ident(int n, int y, char *ident);
- int load_info(Channel *channel, ChannelEventLine *channel_line);
- void start();
- void stop();
- void run();
- int total_channels() { return iwindow->channeldb->size(); }
- Channel *get_channel(int ch) { return iwindow->channeldb->get(ch); }
- int set_channel(Channel *chan);
-
- ChannelThread(ChannelInfoGUI *gui);
- ~ChannelThread();
-};
-
-class ChannelScan : public BC_MenuItem
-{
-public:
- MWindow *mwindow;
- int handle_event();
-
- ChannelScan(MWindow *mwindow);
- ~ChannelScan();
-};
-
-class ChannelStatus : public SignalStatus
-{
-public:
- ChannelInfoGUI *gui;
-
- ChannelStatus(ChannelInfoGUI *gui, int x, int y) :
- SignalStatus(gui, x, y) { this->gui = gui; }
- ~ChannelStatus() {}
-};
-
-
-
-#endif