trunk 20080912
[gitenigma.git] / src / scan.h
bloba40e81d7410c4ebc9bd58db5d60a25794dfb0964
1 #ifndef __scan_h
2 #define __scan_h
4 #include <lib/dvb/dvb.h>
5 #include <lib/gui/ewidget.h>
6 #include <lib/gui/combobox.h>
7 #include <lib/gui/statusbar.h>
9 class eWindow;
10 class eLabel;
11 class eProgress;
12 class eButton;
13 class eCheckbox;
14 class eTransponderWidget;
15 class eFEStatusWidget;
16 class eDVBEvent;
17 class eDVBState;
18 class eTextInputField;
20 struct scanEntry
22 tpPacket *packet;
23 bool onlyFree;
24 bool operator < ( const scanEntry& e ) const
26 if ( packet && e.packet )
27 return packet->orbital_position < e.packet->orbital_position;
28 else
29 return 0;
33 class tsSelectType: public eWidget
35 eListBox<eListBoxEntryMenu> *list;
36 void selected(eListBoxEntryMenu *entry);
37 int eventHandler( const eWidgetEvent &e );
38 eListBoxEntryCheck *check;
39 public:
40 tsSelectType(eWidget *parent);
43 class tsManual: public eWidget
45 eTransponder transponder;
46 eButton *b_start, *b_manual_pids;
47 eTransponderWidget *transponder_widget;
48 eFEStatusWidget *festatus_widget;
49 eCheckbox *c_onlyFree, *c_searchnit, *c_useonit, *c_usebat;
50 void start();
51 void abort();
52 void retune();
53 void manual_pids();
54 public:
55 tsManual(eWidget *parent, const eTransponder &transponder, eWidget* LCDTitle=0, eWidget* LCDElement=0);
56 eTransponder &getTransponder() { return transponder; }
59 class tsTryLock: public eWidget
61 eButton *b_abort;
62 eLabel *l_status;
63 int ret, inProgress;
64 tpPacket *packet;
65 std::list<eTransponder>::iterator current_tp;
66 void dvbEvent(const eDVBEvent &event);
67 int nextTransponder(int next);
68 int eventHandler(const eWidgetEvent &);
69 public:
70 tsTryLock(eWidget *parent, tpPacket *tppacket, eString ttext);
73 class tsAutomatic: public eWidget
75 eButton *b_start;
76 eComboBox *l_network;
77 eCheckbox *c_onlyFree, *c_nocircular;
78 eLabel *l_status;
79 std::list<eTransponder>::iterator current_tp, last_tp, first_tp;
80 int automatic;
81 void start();
82 void networkSelected(eListBoxEntryText *l);
83 void dvbEvent(const eDVBEvent &event);
84 int eventHandler(const eWidgetEvent &event);
85 int loadNetworks();
86 int nextNetwork(int first=0);
87 int nextTransponder(int next);
88 int tuneNext(int next);
89 int inProgress;
90 public:
91 void openNetworkCombo();
92 tsAutomatic(eWidget *parent);
95 class tsText: public eWidget
97 eLabel *headline, *body;
98 protected:
99 int eventHandler(const eWidgetEvent &event);
100 public:
101 tsText(eString headline, eString body, eWidget *parent);
104 class tsScan: public eWidget
106 eTimer timer;
107 eLabel *status;
108 eLabel *timeleft, *service_name, *service_provider, *transponder_data, *services_scanned, *transponder_scanned;
109 eProgress *progress;
110 int tpLeft, scantime;
111 protected:
112 int eventHandler(const eWidgetEvent &event);
113 void dvbEvent(const eDVBEvent &event);
114 void dvbState(const eDVBState &event);
115 void updateTime();
116 void serviceFound( const eServiceReferenceDVB &, bool );
117 void addedTransponder( eTransponder* );
118 public:
119 bool only_new_services;
120 int tpScanned, newTVServices, newRadioServices, newDataServices, servicesScanned, newTransponders;
121 tsScan(eWidget *parent, eString satText="");
124 class eListBoxEntrySat: public eListBoxEntryText
126 eTextPara *statePara;
127 const eString& redraw(gPainter *, const eRect&, gColor, gColor, gColor, gColor, int );
128 public:
129 enum {
130 stateNotScan,
131 stateScan,
132 stateScanFree
134 int state;
135 void invalidate();
136 tpPacket *getTransponders() { return (tpPacket*) key; }
137 eListBoxEntrySat( eListBox<eListBoxEntrySat>*, tpPacket* );
140 class tsMultiSatScan: public eWidget
142 eButton *start;
143 eListBox<eListBoxEntrySat> *satellites;
144 void entrySelected( eListBoxEntrySat * );
145 public:
146 tsMultiSatScan(eWidget *parent);
147 void getSatsToScan( std::list<scanEntry> &);
150 class TransponderScan: public eWindow
152 eProgress *progress;
153 eLabel *progress_text;
154 eStatusBar *statusbar;
155 eWidget *current;
156 //#ifndef DISABLE_LCD
157 eWidget *LCDElement, *LCDTitle;
158 //#endif
159 std::list<scanEntry> toScan;
160 eServiceReference service;
161 int ret;
162 eTimer closeTimer;
163 void addService(const eServiceReference &);
164 int eventHandler(const eWidgetEvent &);
165 void Close();
166 unsigned int last_orbital_pos;
167 bool remove_new_flags;
168 public:
169 enum tState
171 stateMenu,
172 stateManual,
173 stateAutomatic,
174 stateMulti,
175 stateScan,
176 stateMultiScan,
177 stateDone,
178 stateEnd
180 TransponderScan( eWidget* LCDTitle=0, eWidget* LCDElement=0, tState initial=stateMenu );
181 ~TransponderScan();
182 int Exec();
183 private:
184 tState stateInitial;
187 class ManualPIDWindow: public eWindow
189 bool hex;
190 eTransponder transponder;
191 eServiceReferenceDVB service;
192 eTextInputField *name, *provider,
193 *vpid, *apid, *pcrpid, *tpid,
194 *tsid, *onid, *sid;
195 eCheckbox *cNoDVB, *cUseSDT, *cHoldName, *isAC3Pid;
196 eButton *bReadNIT, *bSetPIDs, *bStore, *bHexDec;
197 PAT *pat;
198 NIT *nit;
199 void gotPAT(int);
200 void gotNIT(int);
201 void startNIT();
202 void setPIDs();
203 void store();
204 void hexdec();
205 void init_ManualPIDWindow(eTransponder *tp, const eServiceReferenceDVB &ref = eServiceReferenceDVB());
206 public:
207 ManualPIDWindow(eTransponder *tp, const eServiceReferenceDVB &ref = eServiceReferenceDVB() );
208 ~ManualPIDWindow();
211 #endif