2020
2121package org .schabi .newpipe ;
2222
23- import static org .schabi .newpipe .util .Localization .assureCorrectAppLanguage ;
24-
2523import android .content .BroadcastReceiver ;
2624import android .content .Context ;
2725import android .content .Intent ;
4947import androidx .appcompat .app .ActionBarDrawerToggle ;
5048import androidx .appcompat .app .AppCompatActivity ;
5149import androidx .core .app .ActivityCompat ;
50+ import androidx .core .content .ContextCompat ;
5251import androidx .core .view .GravityCompat ;
5352import androidx .drawerlayout .widget .DrawerLayout ;
5453import androidx .fragment .app .Fragment ;
7776import org .schabi .newpipe .player .helper .PlayerHolder ;
7877import org .schabi .newpipe .player .playqueue .PlayQueue ;
7978import org .schabi .newpipe .settings .UpdateSettingsFragment ;
79+ import org .schabi .newpipe .settings .migration .MigrationManager ;
8080import org .schabi .newpipe .util .Constants ;
8181import org .schabi .newpipe .util .DeviceUtils ;
8282import org .schabi .newpipe .util .KioskTranslator ;
@@ -137,6 +137,7 @@ protected void onCreate(final Bundle savedInstanceState) {
137137 + "savedInstanceState = [" + savedInstanceState + "]" );
138138 }
139139
140+ Localization .migrateAppLanguageSettingIfNecessary (getApplicationContext ());
140141 ThemeHelper .setDayNightMode (this );
141142 ThemeHelper .setTheme (this , ServiceHelper .getSelectedServiceId (this ));
142143
@@ -153,7 +154,6 @@ protected void onCreate(final Bundle savedInstanceState) {
153154 }
154155 }
155156
156- assureCorrectAppLanguage (this );
157157 super .onCreate (savedInstanceState );
158158 sharedPreferences = PreferenceManager .getDefaultSharedPreferences (this );
159159 sharedPrefEditor = sharedPreferences .edit ();
@@ -192,7 +192,7 @@ protected void onCreate(final Bundle savedInstanceState) {
192192 UpdateSettingsFragment .askForConsentToUpdateChecks (this );
193193 }
194194
195- Localization . migrateAppLanguageSettingIfNecessary ( getApplicationContext () );
195+ MigrationManager . showUserInfoIfPresent ( this );
196196 }
197197
198198 @ Override
@@ -260,19 +260,6 @@ public void onDrawerClosed(final View drawerView) {
260260 */
261261 private void addDrawerMenuForCurrentService () throws ExtractionException {
262262 //Tabs
263- final int currentServiceId = ServiceHelper .getSelectedServiceId (this );
264- final StreamingService service = NewPipe .getService (currentServiceId );
265-
266- int kioskMenuItemId = 0 ;
267-
268- for (final String ks : service .getKioskList ().getAvailableKiosks ()) {
269- drawerLayoutBinding .navigation .getMenu ()
270- .add (R .id .menu_tabs_group , kioskMenuItemId , 0 , KioskTranslator
271- .getTranslatedKioskName (ks , this ))
272- .setIcon (KioskTranslator .getKioskIcon (ks ));
273- kioskMenuItemId ++;
274- }
275-
276263 drawerLayoutBinding .navigation .getMenu ()
277264 .add (R .id .menu_tabs_group , ITEM_ID_SUBSCRIPTIONS , ORDER ,
278265 R .string .tab_subscriptions )
@@ -290,6 +277,20 @@ private void addDrawerMenuForCurrentService() throws ExtractionException {
290277 .add (R .id .menu_tabs_group , ITEM_ID_HISTORY , ORDER , R .string .action_history )
291278 .setIcon (R .drawable .ic_history );
292279
280+ //Kiosks
281+ final int currentServiceId = ServiceHelper .getSelectedServiceId (this );
282+ final StreamingService service = NewPipe .getService (currentServiceId );
283+
284+ int kioskMenuItemId = 0 ;
285+
286+ for (final String ks : service .getKioskList ().getAvailableKiosks ()) {
287+ drawerLayoutBinding .navigation .getMenu ()
288+ .add (R .id .menu_kiosks_group , kioskMenuItemId , 0 , KioskTranslator
289+ .getTranslatedKioskName (ks , this ))
290+ .setIcon (KioskTranslator .getKioskIcon (ks ));
291+ kioskMenuItemId ++;
292+ }
293+
293294 //Settings and About
294295 drawerLayoutBinding .navigation .getMenu ()
295296 .add (R .id .menu_options_about_group , ITEM_ID_SETTINGS , ORDER , R .string .settings )
@@ -309,10 +310,13 @@ private boolean drawerItemSelected(final MenuItem item) {
309310 changeService (item );
310311 break ;
311312 case R .id .menu_tabs_group :
313+ tabSelected (item );
314+ break ;
315+ case R .id .menu_kiosks_group :
312316 try {
313- tabSelected (item );
317+ kioskSelected (item );
314318 } catch (final Exception e ) {
315- ErrorUtil .showUiErrorSnackbar (this , "Selecting main page tab " , e );
319+ ErrorUtil .showUiErrorSnackbar (this , "Selecting drawer kiosk " , e );
316320 }
317321 break ;
318322 case R .id .menu_options_about_group :
@@ -336,7 +340,7 @@ private void changeService(final MenuItem item) {
336340 .setChecked (true );
337341 }
338342
339- private void tabSelected (final MenuItem item ) throws ExtractionException {
343+ private void tabSelected (final MenuItem item ) {
340344 switch (item .getItemId ()) {
341345 case ITEM_ID_SUBSCRIPTIONS :
342346 NavigationHelper .openSubscriptionFragment (getSupportFragmentManager ());
@@ -353,18 +357,19 @@ private void tabSelected(final MenuItem item) throws ExtractionException {
353357 case ITEM_ID_HISTORY :
354358 NavigationHelper .openStatisticFragment (getSupportFragmentManager ());
355359 break ;
356- default :
357- final StreamingService currentService = ServiceHelper .getSelectedService (this );
358- int kioskMenuItemId = 0 ;
359- for (final String kioskId : currentService .getKioskList ().getAvailableKiosks ()) {
360- if (kioskMenuItemId == item .getItemId ()) {
361- NavigationHelper .openKioskFragment (getSupportFragmentManager (),
362- currentService .getServiceId (), kioskId );
363- break ;
364- }
365- kioskMenuItemId ++;
366- }
360+ }
361+ }
362+
363+ private void kioskSelected (final MenuItem item ) throws ExtractionException {
364+ final StreamingService currentService = ServiceHelper .getSelectedService (this );
365+ int kioskMenuItemId = 0 ;
366+ for (final String kioskId : currentService .getKioskList ().getAvailableKiosks ()) {
367+ if (kioskMenuItemId == item .getItemId ()) {
368+ NavigationHelper .openKioskFragment (getSupportFragmentManager (),
369+ currentService .getServiceId (), kioskId );
367370 break ;
371+ }
372+ kioskMenuItemId ++;
368373 }
369374 }
370375
@@ -405,6 +410,7 @@ private void toggleServices() {
405410
406411 drawerLayoutBinding .navigation .getMenu ().removeGroup (R .id .menu_services_group );
407412 drawerLayoutBinding .navigation .getMenu ().removeGroup (R .id .menu_tabs_group );
413+ drawerLayoutBinding .navigation .getMenu ().removeGroup (R .id .menu_kiosks_group );
408414 drawerLayoutBinding .navigation .getMenu ().removeGroup (R .id .menu_options_about_group );
409415
410416 // Show up or down arrow
@@ -498,9 +504,8 @@ protected void onDestroy() {
498504
499505 @ Override
500506 protected void onResume () {
501- assureCorrectAppLanguage (this );
502507 // Change the date format to match the selected language on resume
503- Localization .initPrettyTime (Localization .resolvePrettyTime (getApplicationContext () ));
508+ Localization .initPrettyTime (Localization .resolvePrettyTime ());
504509 super .onResume ();
505510
506511 // Close drawer on return, and don't show animation,
@@ -849,7 +854,7 @@ private void openMiniPlayerUponPlayerStarted() {
849854 return ;
850855 }
851856
852- if (PlayerHolder .getInstance () .isPlayerOpen ()) {
857+ if (PlayerHolder .INSTANCE .isPlayerOpen ()) {
853858 // if the player is already open, no need for a broadcast receiver
854859 openMiniPlayerIfMissing ();
855860 } else {
@@ -859,7 +864,7 @@ private void openMiniPlayerUponPlayerStarted() {
859864 public void onReceive (final Context context , final Intent intent ) {
860865 if (Objects .equals (intent .getAction (),
861866 VideoDetailFragment .ACTION_PLAYER_STARTED )
862- && PlayerHolder .getInstance () .isPlayerOpen ()) {
867+ && PlayerHolder .INSTANCE .isPlayerOpen ()) {
863868 openMiniPlayerIfMissing ();
864869 // At this point the player is added 100%, we can unregister. Other actions
865870 // are useless since the fragment will not be removed after that.
@@ -870,11 +875,12 @@ public void onReceive(final Context context, final Intent intent) {
870875 };
871876 final IntentFilter intentFilter = new IntentFilter ();
872877 intentFilter .addAction (VideoDetailFragment .ACTION_PLAYER_STARTED );
873- registerReceiver (broadcastReceiver , intentFilter );
878+ ContextCompat .registerReceiver (this , broadcastReceiver , intentFilter ,
879+ ContextCompat .RECEIVER_EXPORTED );
874880
875881 // If the PlayerHolder is not bound yet, but the service is running, try to bind to it.
876882 // Once the connection is established, the ACTION_PLAYER_STARTED will be sent.
877- PlayerHolder .getInstance () .tryBindIfNeeded (this );
883+ PlayerHolder .INSTANCE .tryBindIfNeeded (this );
878884 }
879885 }
880886
0 commit comments