Merge pull request #7215 from litetex/code-cleanup-drawer-main-activity
Deduplicated drawer code in MainActivity
This commit is contained in:
commit
a2050a5211
|
@ -20,6 +20,8 @@
|
||||||
|
|
||||||
package org.schabi.newpipe;
|
package org.schabi.newpipe;
|
||||||
|
|
||||||
|
import static org.schabi.newpipe.util.Localization.assureCorrectAppLanguage;
|
||||||
|
|
||||||
import android.content.BroadcastReceiver;
|
import android.content.BroadcastReceiver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
@ -91,8 +93,6 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
import static org.schabi.newpipe.util.Localization.assureCorrectAppLanguage;
|
|
||||||
|
|
||||||
public class MainActivity extends AppCompatActivity {
|
public class MainActivity extends AppCompatActivity {
|
||||||
private static final String TAG = "MainActivity";
|
private static final String TAG = "MainActivity";
|
||||||
@SuppressWarnings("ConstantConditions")
|
@SuppressWarnings("ConstantConditions")
|
||||||
|
@ -165,7 +165,42 @@ public class MainActivity extends AppCompatActivity {
|
||||||
openMiniPlayerUponPlayerStarted();
|
openMiniPlayerUponPlayerStarted();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupDrawer() throws Exception {
|
private void setupDrawer() throws ExtractionException {
|
||||||
|
addDrawerMenuForCurrentService();
|
||||||
|
|
||||||
|
toggle = new ActionBarDrawerToggle(this, mainBinding.getRoot(),
|
||||||
|
toolbarLayoutBinding.toolbar, R.string.drawer_open, R.string.drawer_close);
|
||||||
|
toggle.syncState();
|
||||||
|
mainBinding.getRoot().addDrawerListener(toggle);
|
||||||
|
mainBinding.getRoot().addDrawerListener(new DrawerLayout.SimpleDrawerListener() {
|
||||||
|
private int lastService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDrawerOpened(final View drawerView) {
|
||||||
|
lastService = ServiceHelper.getSelectedServiceId(MainActivity.this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDrawerClosed(final View drawerView) {
|
||||||
|
if (servicesShown) {
|
||||||
|
toggleServices();
|
||||||
|
}
|
||||||
|
if (lastService != ServiceHelper.getSelectedServiceId(MainActivity.this)) {
|
||||||
|
ActivityCompat.recreate(MainActivity.this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
drawerLayoutBinding.navigation.setNavigationItemSelectedListener(this::drawerItemSelected);
|
||||||
|
setupDrawerHeader();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds the drawer menu for the current service.
|
||||||
|
*
|
||||||
|
* @throws ExtractionException
|
||||||
|
*/
|
||||||
|
private void addDrawerMenuForCurrentService() throws ExtractionException {
|
||||||
//Tabs
|
//Tabs
|
||||||
final int currentServiceId = ServiceHelper.getSelectedServiceId(this);
|
final int currentServiceId = ServiceHelper.getSelectedServiceId(this);
|
||||||
final StreamingService service = NewPipe.getService(currentServiceId);
|
final StreamingService service = NewPipe.getService(currentServiceId);
|
||||||
|
@ -204,32 +239,6 @@ public class MainActivity extends AppCompatActivity {
|
||||||
drawerLayoutBinding.navigation.getMenu()
|
drawerLayoutBinding.navigation.getMenu()
|
||||||
.add(R.id.menu_options_about_group, ITEM_ID_ABOUT, ORDER, R.string.tab_about)
|
.add(R.id.menu_options_about_group, ITEM_ID_ABOUT, ORDER, R.string.tab_about)
|
||||||
.setIcon(R.drawable.ic_info_outline);
|
.setIcon(R.drawable.ic_info_outline);
|
||||||
|
|
||||||
toggle = new ActionBarDrawerToggle(this, mainBinding.getRoot(),
|
|
||||||
toolbarLayoutBinding.toolbar, R.string.drawer_open, R.string.drawer_close);
|
|
||||||
toggle.syncState();
|
|
||||||
mainBinding.getRoot().addDrawerListener(toggle);
|
|
||||||
mainBinding.getRoot().addDrawerListener(new DrawerLayout.SimpleDrawerListener() {
|
|
||||||
private int lastService;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onDrawerOpened(final View drawerView) {
|
|
||||||
lastService = ServiceHelper.getSelectedServiceId(MainActivity.this);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onDrawerClosed(final View drawerView) {
|
|
||||||
if (servicesShown) {
|
|
||||||
toggleServices();
|
|
||||||
}
|
|
||||||
if (lastService != ServiceHelper.getSelectedServiceId(MainActivity.this)) {
|
|
||||||
ActivityCompat.recreate(MainActivity.this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
drawerLayoutBinding.navigation.setNavigationItemSelectedListener(this::drawerItemSelected);
|
|
||||||
setupDrawerHeader();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean drawerItemSelected(final MenuItem item) {
|
private boolean drawerItemSelected(final MenuItem item) {
|
||||||
|
@ -337,11 +346,15 @@ public class MainActivity extends AppCompatActivity {
|
||||||
drawerLayoutBinding.navigation.getMenu().removeGroup(R.id.menu_tabs_group);
|
drawerLayoutBinding.navigation.getMenu().removeGroup(R.id.menu_tabs_group);
|
||||||
drawerLayoutBinding.navigation.getMenu().removeGroup(R.id.menu_options_about_group);
|
drawerLayoutBinding.navigation.getMenu().removeGroup(R.id.menu_options_about_group);
|
||||||
|
|
||||||
|
// Show up or down arrow
|
||||||
|
drawerHeaderBinding.drawerArrow.setImageResource(
|
||||||
|
servicesShown ? R.drawable.ic_arrow_drop_up : R.drawable.ic_arrow_drop_down);
|
||||||
|
|
||||||
if (servicesShown) {
|
if (servicesShown) {
|
||||||
showServices();
|
showServices();
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
showTabs();
|
addDrawerMenuForCurrentService();
|
||||||
} catch (final Exception e) {
|
} catch (final Exception e) {
|
||||||
ErrorActivity.reportUiErrorInSnackbar(this, "Showing main page tabs", e);
|
ErrorActivity.reportUiErrorInSnackbar(this, "Showing main page tabs", e);
|
||||||
}
|
}
|
||||||
|
@ -349,8 +362,6 @@ public class MainActivity extends AppCompatActivity {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showServices() {
|
private void showServices() {
|
||||||
drawerHeaderBinding.drawerArrow.setImageResource(R.drawable.ic_arrow_drop_up);
|
|
||||||
|
|
||||||
for (final StreamingService s : NewPipe.getServices()) {
|
for (final StreamingService s : NewPipe.getServices()) {
|
||||||
final String title = s.getServiceInfo().getName()
|
final String title = s.getServiceInfo().getName()
|
||||||
+ (ServiceHelper.isBeta(s) ? " (beta)" : "");
|
+ (ServiceHelper.isBeta(s) ? " (beta)" : "");
|
||||||
|
@ -414,48 +425,6 @@ public class MainActivity extends AppCompatActivity {
|
||||||
menuItem.setActionView(spinner);
|
menuItem.setActionView(spinner);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showTabs() throws ExtractionException {
|
|
||||||
drawerHeaderBinding.drawerArrow.setImageResource(R.drawable.ic_arrow_drop_down);
|
|
||||||
|
|
||||||
//Tabs
|
|
||||||
final int currentServiceId = ServiceHelper.getSelectedServiceId(this);
|
|
||||||
final StreamingService service = NewPipe.getService(currentServiceId);
|
|
||||||
|
|
||||||
int kioskId = 0;
|
|
||||||
|
|
||||||
for (final String ks : service.getKioskList().getAvailableKiosks()) {
|
|
||||||
drawerLayoutBinding.navigation.getMenu()
|
|
||||||
.add(R.id.menu_tabs_group, kioskId, ORDER,
|
|
||||||
KioskTranslator.getTranslatedKioskName(ks, this))
|
|
||||||
.setIcon(KioskTranslator.getKioskIcon(ks, this));
|
|
||||||
kioskId++;
|
|
||||||
}
|
|
||||||
|
|
||||||
drawerLayoutBinding.navigation.getMenu()
|
|
||||||
.add(R.id.menu_tabs_group, ITEM_ID_SUBSCRIPTIONS, ORDER, R.string.tab_subscriptions)
|
|
||||||
.setIcon(R.drawable.ic_tv);
|
|
||||||
drawerLayoutBinding.navigation.getMenu()
|
|
||||||
.add(R.id.menu_tabs_group, ITEM_ID_FEED, ORDER, R.string.fragment_feed_title)
|
|
||||||
.setIcon(R.drawable.ic_rss_feed);
|
|
||||||
drawerLayoutBinding.navigation.getMenu()
|
|
||||||
.add(R.id.menu_tabs_group, ITEM_ID_BOOKMARKS, ORDER, R.string.tab_bookmarks)
|
|
||||||
.setIcon(R.drawable.ic_bookmark);
|
|
||||||
drawerLayoutBinding.navigation.getMenu()
|
|
||||||
.add(R.id.menu_tabs_group, ITEM_ID_DOWNLOADS, ORDER, R.string.downloads)
|
|
||||||
.setIcon(R.drawable.ic_file_download);
|
|
||||||
drawerLayoutBinding.navigation.getMenu()
|
|
||||||
.add(R.id.menu_tabs_group, ITEM_ID_HISTORY, ORDER, R.string.action_history)
|
|
||||||
.setIcon(R.drawable.ic_history);
|
|
||||||
|
|
||||||
//Settings and About
|
|
||||||
drawerLayoutBinding.navigation.getMenu()
|
|
||||||
.add(R.id.menu_options_about_group, ITEM_ID_SETTINGS, ORDER, R.string.settings)
|
|
||||||
.setIcon(R.drawable.ic_settings);
|
|
||||||
drawerLayoutBinding.navigation.getMenu()
|
|
||||||
.add(R.id.menu_options_about_group, ITEM_ID_ABOUT, ORDER, R.string.tab_about)
|
|
||||||
.setIcon(R.drawable.ic_info_outline);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onDestroy() {
|
protected void onDestroy() {
|
||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
|
|
Loading…
Reference in New Issue