@@ -152,7 +152,7 @@ function loadServicelistProviders(url, cancelAllowed) {
152152 if ( servicelists [ i ] [ "servicelists" ] [ j ] [ "url" ] == serviceList ) {
153153 selected = urls . length ;
154154 }
155- urls . push ( servicelists [ i ] [ "servicelists" ] [ j ] [ "url" ] ) ;
155+ urls . push ( servicelists [ i ] [ "servicelists" ] [ j ] ) ;
156156 }
157157 }
158158 showDialog (
@@ -161,20 +161,108 @@ function loadServicelistProviders(url, cancelAllowed) {
161161 selected ,
162162 selected ,
163163 function ( checked ) {
164- setLocalStorage ( "servicelist" , urls [ checked ] ) ;
165- getLocalStorage ( "region" , true ) ; //New service list selected, clear region
166- getServiceList (
167- urls [ checked ] ,
168- function ( servicelist ) {
169- $ ( "#dialog" ) . html ( "" ) ;
170- $ ( "#dialog" ) . removeClass ( "show" ) ;
171- $ ( "#dialog" ) . addClass ( "hide" ) ;
172- selectServiceList ( servicelist ) ;
173- } ,
174- function ( ) {
175- console . log ( "Error in fetching service data" ) ;
176- }
177- ) ;
164+ if ( urls [ checked ] . postcodeFiltering ) {
165+ var postcodes = [
166+ "Enter postcode:" ,
167+ "Skip" ,
168+ "Example: Augsburg (86150)" ,
169+ "Example: Dortmund (44135)" ,
170+ "Example: Düsseldorf (40210)" ,
171+ "Example: Franken (90402)" ,
172+ "Example: Köln (50126)" ,
173+ ] ;
174+ var values = [ "" , null , "86150" , "44135" , "40210" , "90402" , "50126" ] ;
175+ showDialog (
176+ "Server side postcode filtering" ,
177+ postcodes ,
178+ null ,
179+ null ,
180+ function ( checked2 ) {
181+ var url = urls [ checked ] [ "url" ] ;
182+
183+ if ( values [ checked2 ] ) {
184+ url += "?postcode=" + values [ checked2 ] ;
185+ }
186+
187+ setLocalStorage ( "servicelist" , url ) ;
188+ getLocalStorage ( "region" , true ) ; //New service list selected, clear region
189+ getServiceList (
190+ url ,
191+ function ( servicelist ) {
192+ $ ( "#dialog" ) . html ( "" ) ;
193+ $ ( "#dialog" ) . removeClass ( "show" ) ;
194+ $ ( "#dialog" ) . addClass ( "hide" ) ;
195+ selectServiceList ( servicelist ) ;
196+ } ,
197+ function ( ) {
198+ console . log ( "Error in fetching service data" ) ;
199+ }
200+ ) ;
201+ } ,
202+ null ,
203+ function ( keyCode , button ) {
204+ if ( button != 0 ) {
205+ return false ;
206+ }
207+ if ( keyCode == VK_BACK ) {
208+ return true ;
209+ } else {
210+ var num_key = null ;
211+ switch ( keyCode ) {
212+ case VK_0 :
213+ num_key = "0" ;
214+ break ;
215+ case VK_1 :
216+ num_key = "1" ;
217+ break ;
218+ case VK_2 :
219+ num_key = "2" ;
220+ break ;
221+ case VK_3 :
222+ num_key = "3" ;
223+ break ;
224+ case VK_4 :
225+ num_key = "4" ;
226+ break ;
227+ case VK_5 :
228+ num_key = "5" ;
229+ break ;
230+ case VK_6 :
231+ num_key = "6" ;
232+ break ;
233+ case VK_7 :
234+ num_key = "7" ;
235+ break ;
236+ case VK_8 :
237+ num_key = "8" ;
238+ break ;
239+ case VK_9 :
240+ num_key = "9" ;
241+ break ;
242+ }
243+ if ( num_key != null ) {
244+ values [ 0 ] += num_key ;
245+ updateLabel ( button , "Enter postcode:" + values [ 0 ] ) ;
246+ }
247+ }
248+ }
249+ ) ;
250+ } else {
251+ setLocalStorage ( "servicelist" , urls [ checked ] [ "url" ] ) ;
252+ getLocalStorage ( "region" , true ) ; //New service list selected, clear region
253+ getServiceList (
254+ urls [ checked ] [ "url" ] ,
255+ function ( servicelist ) {
256+ $ ( "#dialog" ) . html ( "" ) ;
257+ $ ( "#dialog" ) . removeClass ( "show" ) ;
258+ $ ( "#dialog" ) . addClass ( "hide" ) ;
259+ selectServiceList ( servicelist ) ;
260+ } ,
261+ function ( ) {
262+ console . log ( "Error in fetching service data" ) ;
263+ }
264+ ) ;
265+ }
178266 } ,
179267 cancelAllowed
180268 ) ;
@@ -193,7 +281,18 @@ function selectServiceList(servicelistXML) {
193281 } catch ( e ) { }
194282 serviceList = parseServiceList ( servicelistXML , channelList , supportedDrmSystems ) ;
195283 epgServiceList = serviceList ;
284+ var selectable = 0 ;
196285 if ( serviceList . regions ) {
286+ for ( var i = 0 ; i < serviceList . regions . length ; i ++ ) {
287+ if ( serviceList . regions [ i ] . selectable ) {
288+ selectable ++ ;
289+ }
290+ if ( selectable > 1 ) {
291+ break ;
292+ }
293+ }
294+ }
295+ if ( selectable > 1 ) {
197296 selectRegion ( serviceList , currentChannel , channelList ) ;
198297 } else {
199298 createMenu ( serviceList , currentChannel , channelList ) ;
@@ -209,7 +308,7 @@ function selectRegion(serviceList, currentChannel, channelList) {
209308 }
210309 var buttons = [ ] ;
211310 for ( var i = 0 ; i < serviceList . regions . length ; i ++ ) {
212- if ( serviceList . regions [ i ] . regionName ) {
311+ if ( serviceList . regions [ i ] . regionName && serviceList . regions [ i ] . selectable != false ) {
213312 buttons . push ( serviceList . regions [ i ] . regionName ) ;
214313 }
215314 }
0 commit comments