Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,10 @@ android {
sourceSets {
androidTest.assets.srcDirs += files("$projectDir/schemas".toString())
}

viewBinding {
enabled = true
}
}

ext {
Expand Down
5 changes: 2 additions & 3 deletions app/src/main/java/org/schabi/newpipe/BaseFragment.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import android.view.View;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;

Expand All @@ -20,7 +19,7 @@ public abstract class BaseFragment extends Fragment {
public static final ImageLoader IMAGE_LOADER = ImageLoader.getInstance();
protected final String TAG = getClass().getSimpleName() + "@" + Integer.toHexString(hashCode());
protected final boolean DEBUG = MainActivity.DEBUG;
protected AppCompatActivity activity;
protected MainActivity activity;
//These values are used for controlling fragments when they are part of the frontpage
@State
protected boolean useAsFrontPage = false;
Expand All @@ -37,7 +36,7 @@ public void useAsFrontPage(final boolean value) {
@Override
public void onAttach(final Context context) {
super.onAttach(context);
activity = (AppCompatActivity) context;
activity = (MainActivity) context;
}

@Override
Expand Down
112 changes: 56 additions & 56 deletions app/src/main/java/org/schabi/newpipe/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,7 @@
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import androidx.preference.PreferenceManager;
import android.util.Log;

import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
Expand All @@ -41,11 +39,10 @@
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.ActionBarDrawerToggle;
Expand All @@ -55,10 +52,13 @@
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.preference.PreferenceManager;

import com.google.android.material.bottomsheet.BottomSheetBehavior;
import com.google.android.material.navigation.NavigationView;

import org.schabi.newpipe.databinding.ActivityMainBinding;
import org.schabi.newpipe.databinding.DrawerHeaderBinding;
import org.schabi.newpipe.extractor.NewPipe;
import org.schabi.newpipe.extractor.StreamingService;
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
Expand All @@ -71,8 +71,8 @@
import org.schabi.newpipe.player.event.OnKeyDownListener;
import org.schabi.newpipe.player.playqueue.PlayQueue;
import org.schabi.newpipe.report.ErrorActivity;
import org.schabi.newpipe.util.DeviceUtils;
import org.schabi.newpipe.util.Constants;
import org.schabi.newpipe.util.DeviceUtils;
import org.schabi.newpipe.util.KioskTranslator;
import org.schabi.newpipe.util.Localization;
import org.schabi.newpipe.util.NavigationHelper;
Expand All @@ -83,6 +83,7 @@
import org.schabi.newpipe.util.StateSaver;
import org.schabi.newpipe.util.TLSSocketFactoryCompat;
import org.schabi.newpipe.util.ThemeHelper;
import org.schabi.newpipe.views.FocusAwareDrawerLayout;
import org.schabi.newpipe.views.FocusOverlayView;

import java.util.ArrayList;
Expand All @@ -94,15 +95,12 @@ public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
public static final boolean DEBUG = !BuildConfig.BUILD_TYPE.equals("release");

public ActivityMainBinding binding;
private DrawerHeaderBinding headerBinding;

private ActionBarDrawerToggle toggle;
private DrawerLayout drawer;
private NavigationView drawerItems;
private ImageView headerServiceIcon;
private TextView headerServiceView;
private Button toggleServiceButton;

private boolean servicesShown = false;
private ImageView serviceArrow;

private BroadcastReceiver broadcastReceiver;

Expand Down Expand Up @@ -135,14 +133,16 @@ protected void onCreate(final Bundle savedInstanceState) {

assureCorrectAppLanguage(this);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
binding = ActivityMainBinding.inflate(getLayoutInflater());
final View view = binding.getRoot();
setContentView(view);

if (getSupportFragmentManager() != null
&& getSupportFragmentManager().getBackStackEntryCount() == 0) {
initFragments();
}

setSupportActionBar(findViewById(R.id.toolbar));
setSupportActionBar(binding.toolbarLayout.toolbar);
try {
setupDrawer();
} catch (final Exception e) {
Expand All @@ -156,9 +156,9 @@ && getSupportFragmentManager().getBackStackEntryCount() == 0) {
}

private void setupDrawer() throws Exception {
final Toolbar toolbar = findViewById(R.id.toolbar);
drawer = findViewById(R.id.drawer_layout);
drawerItems = findViewById(R.id.navigation);
final Toolbar toolbar = binding.toolbarLayout.toolbar;
final FocusAwareDrawerLayout drawer = binding.mainDrawerLayout;
final NavigationView drawerItems = binding.drawerLayout.drawerLayout;

//Tabs
final int currentServiceId = ServiceHelper.getSelectedServiceId(this);
Expand Down Expand Up @@ -245,16 +245,16 @@ private boolean drawerItemSelected(final MenuItem item) {
return false;
}

drawer.closeDrawers();
binding.mainDrawerLayout.closeDrawers();
return true;
}

private void changeService(final MenuItem item) {
drawerItems.getMenu().getItem(ServiceHelper.getSelectedServiceId(this))
.setChecked(false);
binding.drawerLayout.drawerLayout.getMenu()
.getItem(ServiceHelper.getSelectedServiceId(this)).setChecked(false);
ServiceHelper.setSelectedServiceId(this, item.getItemId());
drawerItems.getMenu().getItem(ServiceHelper.getSelectedServiceId(this))
.setChecked(true);
binding.drawerLayout.drawerLayout.getMenu()
.getItem(ServiceHelper.getSelectedServiceId(this)).setChecked(true);
}

private void tabSelected(final MenuItem item) throws ExtractionException {
Expand Down Expand Up @@ -305,19 +305,15 @@ private void optionsAboutSelected(final MenuItem item) {
}

private void setupDrawerHeader() {
final NavigationView navigationView = findViewById(R.id.navigation);
final View hView = navigationView.getHeaderView(0);
final View hView = binding.drawerLayout.drawerLayout.getHeaderView(0);
headerBinding = DrawerHeaderBinding.bind(hView);

serviceArrow = hView.findViewById(R.id.drawer_arrow);
headerServiceIcon = hView.findViewById(R.id.drawer_header_service_icon);
headerServiceView = hView.findViewById(R.id.drawer_header_service_view);
toggleServiceButton = hView.findViewById(R.id.drawer_header_action_button);
toggleServiceButton.setOnClickListener(view -> toggleServices());
headerBinding.drawerHeaderActionButton.setOnClickListener(view -> toggleServices());

// If the current app name is bigger than the default "NewPipe" (7 chars),
// let the text view grow a little more as well.
if (getString(R.string.app_name).length() > "NewPipe".length()) {
final TextView headerTitle = hView.findViewById(R.id.drawer_header_newpipe_title);
final TextView headerTitle = headerBinding.drawerHeaderNewpipeTitle;
final ViewGroup.LayoutParams layoutParams = headerTitle.getLayoutParams();
layoutParams.width = ViewGroup.LayoutParams.WRAP_CONTENT;
headerTitle.setLayoutParams(layoutParams);
Expand All @@ -332,9 +328,9 @@ private void setupDrawerHeader() {
private void toggleServices() {
servicesShown = !servicesShown;

drawerItems.getMenu().removeGroup(R.id.menu_services_group);
drawerItems.getMenu().removeGroup(R.id.menu_tabs_group);
drawerItems.getMenu().removeGroup(R.id.menu_options_about_group);
binding.drawerLayout.drawerLayout.getMenu().removeGroup(R.id.menu_services_group);
binding.drawerLayout.drawerLayout.getMenu().removeGroup(R.id.menu_tabs_group);
binding.drawerLayout.drawerLayout.getMenu().removeGroup(R.id.menu_options_about_group);

if (servicesShown) {
showServices();
Expand All @@ -348,13 +344,13 @@ private void toggleServices() {
}

private void showServices() {
serviceArrow.setImageResource(R.drawable.ic_arrow_drop_up_white_24dp);
headerBinding.drawerArrow.setImageResource(R.drawable.ic_arrow_drop_up_white_24dp);

for (final StreamingService s : NewPipe.getServices()) {
final String title = s.getServiceInfo().getName()
+ (ServiceHelper.isBeta(s) ? " (beta)" : "");

final MenuItem menuItem = drawerItems.getMenu()
final MenuItem menuItem = binding.drawerLayout.drawerLayout.getMenu()
.add(R.id.menu_services_group, s.getServiceId(), ORDER, title)
.setIcon(ServiceHelper.getIcon(s.getServiceId()));

Expand All @@ -363,8 +359,8 @@ private void showServices() {
enhancePeertubeMenu(s, menuItem);
}
}
drawerItems.getMenu().getItem(ServiceHelper.getSelectedServiceId(this))
.setChecked(true);
binding.drawerLayout.drawerLayout.getMenu()
.getItem(ServiceHelper.getSelectedServiceId(this)).setChecked(true);
}

private void enhancePeertubeMenu(final StreamingService s, final MenuItem menuItem) {
Expand Down Expand Up @@ -396,7 +392,7 @@ public void onItemSelected(final AdapterView<?> parent, final View view,
}
PeertubeHelper.selectInstance(newInstance, getApplicationContext());
changeService(menuItem);
drawer.closeDrawers();
binding.mainDrawerLayout.closeDrawers();
new Handler(Looper.getMainLooper()).postDelayed(() -> {
getSupportFragmentManager().popBackStack(null,
FragmentManager.POP_BACK_STACK_INCLUSIVE);
Expand All @@ -413,14 +409,16 @@ public void onNothingSelected(final AdapterView<?> parent) {
}

private void showTabs() throws ExtractionException {
serviceArrow.setImageResource(R.drawable.ic_arrow_drop_down_white_24dp);
headerBinding.drawerArrow.setImageResource(R.drawable.ic_arrow_drop_down_white_24dp);

//Tabs
final int currentServiceId = ServiceHelper.getSelectedServiceId(this);
final StreamingService service = NewPipe.getService(currentServiceId);

int kioskId = 0;

final NavigationView drawerItems = binding.drawerLayout.drawerLayout;

for (final String ks : service.getKioskList().getAvailableKiosks()) {
drawerItems.getMenu()
.add(R.id.menu_tabs_group, kioskId, ORDER,
Expand Down Expand Up @@ -474,16 +472,18 @@ protected void onResume() {

// Close drawer on return, and don't show animation,
// so it looks like the drawer isn't open when the user returns to MainActivity
drawer.closeDrawer(GravityCompat.START, false);
binding.mainDrawerLayout.closeDrawer(GravityCompat.START, false);
try {
final int selectedServiceId = ServiceHelper.getSelectedServiceId(this);
final String selectedServiceName = NewPipe.getService(selectedServiceId)
.getServiceInfo().getName();
headerServiceView.setText(selectedServiceName);
headerServiceIcon.setImageResource(ServiceHelper.getIcon(selectedServiceId));
headerBinding.drawerHeaderServiceView.setText(selectedServiceName);
headerBinding.drawerHeaderServiceIcon
.setImageResource(ServiceHelper.getIcon(selectedServiceId));

headerServiceView.post(() -> headerServiceView.setSelected(true));
toggleServiceButton.setContentDescription(
headerBinding.drawerHeaderServiceView.post(() ->
headerBinding.drawerHeaderServiceView.setSelected(true));
headerBinding.drawerHeaderActionButton.setContentDescription(
getString(R.string.drawer_header_description) + selectedServiceName);
} catch (final Exception e) {
ErrorActivity.reportUiError(this, e);
Expand Down Expand Up @@ -512,7 +512,8 @@ protected void onResume() {

final boolean isHistoryEnabled = sharedPreferences.getBoolean(
getString(R.string.enable_watch_history_key), true);
drawerItems.getMenu().findItem(ITEM_ID_HISTORY).setVisible(isHistoryEnabled);
binding.drawerLayout.drawerLayout.getMenu().findItem(ITEM_ID_HISTORY)
.setVisible(isHistoryEnabled);
}

@Override
Expand Down Expand Up @@ -556,9 +557,9 @@ public void onBackPressed() {
}

if (DeviceUtils.isTv(this)) {
final View drawerPanel = findViewById(R.id.navigation);
if (drawer.isDrawerOpen(drawerPanel)) {
drawer.closeDrawers();
final View drawerPanel = binding.drawerLayout.drawerLayout;
if (binding.mainDrawerLayout.isDrawerOpen(drawerPanel)) {
binding.mainDrawerLayout.closeDrawers();
return;
}
}
Expand All @@ -584,8 +585,7 @@ public void onBackPressed() {
// delegate the back press to it
if (fragmentPlayer instanceof BackPressable) {
if (!((BackPressable) fragmentPlayer).onBackPressed()) {
final FrameLayout bottomSheetLayout =
findViewById(R.id.fragment_player_holder);
final FrameLayout bottomSheetLayout = binding.fragmentPlayerHolder;
BottomSheetBehavior.from(bottomSheetLayout)
.setState(BottomSheetBehavior.STATE_COLLAPSED);
}
Expand Down Expand Up @@ -669,8 +669,7 @@ public boolean onCreateOptionsMenu(final Menu menu) {
final Fragment fragment
= getSupportFragmentManager().findFragmentById(R.id.fragment_holder);
if (!(fragment instanceof SearchFragment)) {
findViewById(R.id.toolbar).findViewById(R.id.toolbar_search_container)
.setVisibility(View.GONE);
binding.toolbarLayout.toolbarSearchContainer.getRoot().setVisibility(View.GONE);
}

final ActionBar actionBar = getSupportActionBar();
Expand Down Expand Up @@ -731,19 +730,20 @@ private void updateDrawerNavigation() {
return;
}

final Toolbar toolbar = findViewById(R.id.toolbar);
final Toolbar toolbar = binding.toolbarLayout.toolbar;

final Fragment fragment = getSupportFragmentManager()
.findFragmentById(R.id.fragment_holder);
if (fragment instanceof MainFragment) {
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
if (toggle != null) {
toggle.syncState();
toolbar.setNavigationOnClickListener(v -> drawer.openDrawer(GravityCompat.START));
drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNDEFINED);
toolbar.setNavigationOnClickListener(v ->
binding.mainDrawerLayout.openDrawer(GravityCompat.START));
binding.mainDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNDEFINED);
}
} else {
drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
binding.mainDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
toolbar.setNavigationOnClickListener(v -> onHomeButtonPressed());
}
Expand Down Expand Up @@ -836,7 +836,7 @@ public void onReceive(final Context context, final Intent intent) {
}

private boolean bottomSheetHiddenOrCollapsed() {
final FrameLayout bottomSheetLayout = findViewById(R.id.fragment_player_holder);
final FrameLayout bottomSheetLayout = binding.fragmentPlayerHolder;
final BottomSheetBehavior<FrameLayout> bottomSheetBehavior =
BottomSheetBehavior.from(bottomSheetLayout);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,13 @@ public void onDestroy() {
.unregisterOnSharedPreferenceChangeListener(this);
}

@Override
public void onDestroyView() {
super.onDestroyView();

itemsList = null;
}

@Override
public void onResume() {
super.onResume();
Expand Down
Loading