2018-09-05 04:54:17 +02:00
|
|
|
package org.schabi.newpipe.settings.tabs;
|
|
|
|
|
|
|
|
import android.annotation.SuppressLint;
|
|
|
|
import android.app.Dialog;
|
|
|
|
import android.content.Context;
|
|
|
|
import android.os.Bundle;
|
|
|
|
import android.view.LayoutInflater;
|
|
|
|
import android.view.Menu;
|
|
|
|
import android.view.MenuInflater;
|
|
|
|
import android.view.MenuItem;
|
|
|
|
import android.view.MotionEvent;
|
|
|
|
import android.view.View;
|
|
|
|
import android.view.ViewGroup;
|
|
|
|
import android.widget.ImageView;
|
|
|
|
import android.widget.TextView;
|
|
|
|
|
2020-03-31 19:20:15 +02:00
|
|
|
import androidx.annotation.NonNull;
|
|
|
|
import androidx.annotation.Nullable;
|
|
|
|
import androidx.appcompat.app.AlertDialog;
|
|
|
|
import androidx.appcompat.content.res.AppCompatResources;
|
|
|
|
import androidx.appcompat.widget.AppCompatImageView;
|
|
|
|
import androidx.fragment.app.Fragment;
|
|
|
|
import androidx.recyclerview.widget.ItemTouchHelper;
|
|
|
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
|
|
|
import androidx.recyclerview.widget.RecyclerView;
|
|
|
|
|
|
|
|
import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
|
|
|
|
2018-09-05 04:54:17 +02:00
|
|
|
import org.schabi.newpipe.R;
|
2020-12-09 12:42:01 +01:00
|
|
|
import org.schabi.newpipe.error.ErrorActivity;
|
|
|
|
import org.schabi.newpipe.error.ErrorInfo;
|
|
|
|
import org.schabi.newpipe.error.UserAction;
|
2020-12-11 15:07:18 +01:00
|
|
|
import org.schabi.newpipe.extractor.NewPipe;
|
2018-09-05 04:54:17 +02:00
|
|
|
import org.schabi.newpipe.settings.SelectChannelFragment;
|
|
|
|
import org.schabi.newpipe.settings.SelectKioskFragment;
|
2020-04-30 22:52:47 +02:00
|
|
|
import org.schabi.newpipe.settings.SelectPlaylistFragment;
|
2018-09-05 04:54:17 +02:00
|
|
|
import org.schabi.newpipe.settings.tabs.AddTabDialog.ChooseTabListItem;
|
|
|
|
import org.schabi.newpipe.util.ThemeHelper;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.Collections;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
import static org.schabi.newpipe.settings.tabs.Tab.typeFrom;
|
|
|
|
|
|
|
|
public class ChooseTabsFragment extends Fragment {
|
2020-03-31 19:20:15 +02:00
|
|
|
private static final int MENU_ITEM_RESTORE_ID = 123456;
|
2020-04-02 13:51:10 +02:00
|
|
|
|
2018-09-05 04:54:17 +02:00
|
|
|
private TabsManager tabsManager;
|
2020-03-31 19:20:15 +02:00
|
|
|
|
2020-05-02 23:14:31 +02:00
|
|
|
private final List<Tab> tabList = new ArrayList<>();
|
2020-04-02 13:51:10 +02:00
|
|
|
private ChooseTabsFragment.SelectedTabsAdapter selectedTabsAdapter;
|
2018-09-05 04:54:17 +02:00
|
|
|
|
|
|
|
/*//////////////////////////////////////////////////////////////////////////
|
|
|
|
// Lifecycle
|
|
|
|
//////////////////////////////////////////////////////////////////////////*/
|
|
|
|
|
|
|
|
@Override
|
2020-03-31 19:20:15 +02:00
|
|
|
public void onCreate(@Nullable final Bundle savedInstanceState) {
|
2018-09-05 04:54:17 +02:00
|
|
|
super.onCreate(savedInstanceState);
|
|
|
|
|
|
|
|
tabsManager = TabsManager.getManager(requireContext());
|
|
|
|
updateTabList();
|
|
|
|
|
|
|
|
setHasOptionsMenu(true);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2020-03-31 19:20:15 +02:00
|
|
|
public View onCreateView(@NonNull final LayoutInflater inflater, final ViewGroup container,
|
|
|
|
final Bundle savedInstanceState) {
|
2018-09-05 04:54:17 +02:00
|
|
|
return inflater.inflate(R.layout.fragment_choose_tabs, container, false);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2020-03-31 19:20:15 +02:00
|
|
|
public void onViewCreated(@NonNull final View rootView,
|
|
|
|
@Nullable final Bundle savedInstanceState) {
|
2018-09-05 04:54:17 +02:00
|
|
|
super.onViewCreated(rootView, savedInstanceState);
|
|
|
|
|
|
|
|
initButton(rootView);
|
|
|
|
|
2020-05-02 23:14:31 +02:00
|
|
|
final RecyclerView listSelectedTabs = rootView.findViewById(R.id.selectedTabs);
|
2018-09-05 04:54:17 +02:00
|
|
|
listSelectedTabs.setLayoutManager(new LinearLayoutManager(requireContext()));
|
|
|
|
|
2020-05-02 23:14:31 +02:00
|
|
|
final ItemTouchHelper itemTouchHelper = new ItemTouchHelper(getItemTouchCallback());
|
2018-09-05 04:54:17 +02:00
|
|
|
itemTouchHelper.attachToRecyclerView(listSelectedTabs);
|
|
|
|
|
|
|
|
selectedTabsAdapter = new SelectedTabsAdapter(requireContext(), itemTouchHelper);
|
|
|
|
listSelectedTabs.setAdapter(selectedTabsAdapter);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onResume() {
|
|
|
|
super.onResume();
|
2020-09-07 15:25:26 +02:00
|
|
|
ThemeHelper.setTitleToAppCompatActivity(getActivity(),
|
|
|
|
getString(R.string.main_page_content));
|
2018-09-05 04:54:17 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onPause() {
|
|
|
|
super.onPause();
|
|
|
|
saveChanges();
|
|
|
|
}
|
|
|
|
|
2020-04-02 13:51:10 +02:00
|
|
|
/*//////////////////////////////////////////////////////////////////////////
|
|
|
|
// Menu
|
|
|
|
//////////////////////////////////////////////////////////////////////////*/
|
|
|
|
|
2018-09-05 04:54:17 +02:00
|
|
|
@Override
|
2020-03-31 19:20:15 +02:00
|
|
|
public void onCreateOptionsMenu(final Menu menu, final MenuInflater inflater) {
|
2018-09-05 04:54:17 +02:00
|
|
|
super.onCreateOptionsMenu(menu, inflater);
|
|
|
|
|
2020-03-31 19:20:15 +02:00
|
|
|
final MenuItem restoreItem = menu.add(Menu.NONE, MENU_ITEM_RESTORE_ID, Menu.NONE,
|
|
|
|
R.string.restore_defaults);
|
2018-09-05 04:54:17 +02:00
|
|
|
restoreItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
|
2021-03-27 15:45:49 +01:00
|
|
|
restoreItem.setIcon(AppCompatResources.getDrawable(requireContext(),
|
|
|
|
R.drawable.ic_settings_backup_restore));
|
2018-09-05 04:54:17 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2020-03-31 19:20:15 +02:00
|
|
|
public boolean onOptionsItemSelected(final MenuItem item) {
|
2018-09-05 04:54:17 +02:00
|
|
|
if (item.getItemId() == MENU_ITEM_RESTORE_ID) {
|
|
|
|
restoreDefaults();
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
return super.onOptionsItemSelected(item);
|
|
|
|
}
|
|
|
|
|
|
|
|
/*//////////////////////////////////////////////////////////////////////////
|
|
|
|
// Utils
|
|
|
|
//////////////////////////////////////////////////////////////////////////*/
|
|
|
|
|
|
|
|
private void updateTabList() {
|
|
|
|
tabList.clear();
|
|
|
|
tabList.addAll(tabsManager.getTabs());
|
|
|
|
}
|
|
|
|
|
|
|
|
private void saveChanges() {
|
|
|
|
tabsManager.saveTabs(tabList);
|
|
|
|
}
|
|
|
|
|
|
|
|
private void restoreDefaults() {
|
2021-03-29 23:01:22 +02:00
|
|
|
new AlertDialog.Builder(requireContext())
|
2018-09-05 04:54:17 +02:00
|
|
|
.setTitle(R.string.restore_defaults)
|
|
|
|
.setMessage(R.string.restore_defaults_confirmation)
|
|
|
|
.setNegativeButton(R.string.cancel, null)
|
|
|
|
.setPositiveButton(R.string.yes, (dialog, which) -> {
|
|
|
|
tabsManager.resetTabs();
|
|
|
|
updateTabList();
|
|
|
|
selectedTabsAdapter.notifyDataSetChanged();
|
|
|
|
})
|
|
|
|
.show();
|
|
|
|
}
|
|
|
|
|
2020-03-31 19:20:15 +02:00
|
|
|
private void initButton(final View rootView) {
|
2018-09-05 04:54:17 +02:00
|
|
|
final FloatingActionButton fab = rootView.findViewById(R.id.addTabsButton);
|
|
|
|
fab.setOnClickListener(v -> {
|
|
|
|
final ChooseTabListItem[] availableTabs = getAvailableTabs(requireContext());
|
|
|
|
|
|
|
|
if (availableTabs.length == 0) {
|
|
|
|
//Toast.makeText(requireContext(), "No available tabs", Toast.LENGTH_SHORT).show();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2020-08-16 10:24:58 +02:00
|
|
|
final Dialog.OnClickListener actionListener = (dialog, which) -> {
|
2018-09-05 04:54:17 +02:00
|
|
|
final ChooseTabListItem selected = availableTabs[which];
|
|
|
|
addTab(selected.tabId);
|
|
|
|
};
|
|
|
|
|
|
|
|
new AddTabDialog(requireContext(), availableTabs, actionListener)
|
|
|
|
.show();
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
private void addTab(final Tab tab) {
|
|
|
|
tabList.add(tab);
|
|
|
|
selectedTabsAdapter.notifyDataSetChanged();
|
|
|
|
}
|
|
|
|
|
2020-03-31 19:20:15 +02:00
|
|
|
private void addTab(final int tabId) {
|
2018-09-05 04:54:17 +02:00
|
|
|
final Tab.Type type = typeFrom(tabId);
|
|
|
|
|
|
|
|
if (type == null) {
|
2021-01-09 16:33:59 +01:00
|
|
|
ErrorActivity.reportErrorInSnackbar(this,
|
2020-12-11 14:55:47 +01:00
|
|
|
new ErrorInfo(new IllegalStateException("Tab id not found: " + tabId),
|
|
|
|
UserAction.SOMETHING_ELSE, "Choosing tabs on settings"));
|
2018-09-05 04:54:17 +02:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
switch (type) {
|
2020-03-31 19:20:15 +02:00
|
|
|
case KIOSK:
|
2020-08-16 10:24:58 +02:00
|
|
|
final SelectKioskFragment selectKioskFragment = new SelectKioskFragment();
|
2020-05-02 23:14:31 +02:00
|
|
|
selectKioskFragment.setOnSelectedListener((serviceId, kioskId, kioskName) ->
|
2018-09-05 04:54:17 +02:00
|
|
|
addTab(new Tab.KioskTab(serviceId, kioskId)));
|
2021-06-16 04:08:25 +02:00
|
|
|
selectKioskFragment.show(getParentFragmentManager(), "select_kiosk");
|
2018-09-05 04:54:17 +02:00
|
|
|
return;
|
2020-03-31 19:20:15 +02:00
|
|
|
case CHANNEL:
|
2020-08-16 10:24:58 +02:00
|
|
|
final SelectChannelFragment selectChannelFragment = new SelectChannelFragment();
|
2020-05-02 23:14:31 +02:00
|
|
|
selectChannelFragment.setOnSelectedListener((serviceId, url, name) ->
|
2018-09-05 04:54:17 +02:00
|
|
|
addTab(new Tab.ChannelTab(serviceId, url, name)));
|
2021-06-16 04:08:25 +02:00
|
|
|
selectChannelFragment.show(getParentFragmentManager(), "select_channel");
|
2018-09-05 04:54:17 +02:00
|
|
|
return;
|
2020-04-30 22:52:47 +02:00
|
|
|
case PLAYLIST:
|
2020-08-16 10:24:58 +02:00
|
|
|
final SelectPlaylistFragment selectPlaylistFragment = new SelectPlaylistFragment();
|
2020-05-02 23:14:31 +02:00
|
|
|
selectPlaylistFragment.setOnSelectedListener(
|
|
|
|
new SelectPlaylistFragment.OnSelectedListener() {
|
2020-04-30 22:52:47 +02:00
|
|
|
@Override
|
|
|
|
public void onLocalPlaylistSelected(final long id, final String name) {
|
|
|
|
addTab(new Tab.PlaylistTab(id, name));
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onRemotePlaylistSelected(
|
|
|
|
final int serviceId, final String url, final String name) {
|
|
|
|
addTab(new Tab.PlaylistTab(serviceId, url, name));
|
|
|
|
}
|
|
|
|
});
|
2021-06-16 04:08:25 +02:00
|
|
|
selectPlaylistFragment.show(getParentFragmentManager(), "select_playlist");
|
2020-04-30 22:52:47 +02:00
|
|
|
return;
|
2018-09-05 04:54:17 +02:00
|
|
|
default:
|
|
|
|
addTab(type.getTab());
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-04-02 13:51:10 +02:00
|
|
|
private ChooseTabListItem[] getAvailableTabs(final Context context) {
|
2018-09-05 04:54:17 +02:00
|
|
|
final ArrayList<ChooseTabListItem> returnList = new ArrayList<>();
|
|
|
|
|
2020-08-16 10:24:58 +02:00
|
|
|
for (final Tab.Type type : Tab.Type.values()) {
|
2018-09-05 04:54:17 +02:00
|
|
|
final Tab tab = type.getTab();
|
|
|
|
switch (type) {
|
|
|
|
case BLANK:
|
|
|
|
if (!tabList.contains(tab)) {
|
2020-03-31 19:20:15 +02:00
|
|
|
returnList.add(new ChooseTabListItem(tab.getTabId(),
|
|
|
|
getString(R.string.blank_page_summary),
|
2018-09-05 04:54:17 +02:00
|
|
|
tab.getTabIconRes(context)));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case KIOSK:
|
2020-03-31 19:20:15 +02:00
|
|
|
returnList.add(new ChooseTabListItem(tab.getTabId(),
|
|
|
|
getString(R.string.kiosk_page_summary),
|
2021-03-27 15:45:49 +01:00
|
|
|
R.drawable.ic_whatshot));
|
2018-09-05 04:54:17 +02:00
|
|
|
break;
|
|
|
|
case CHANNEL:
|
2020-03-31 19:20:15 +02:00
|
|
|
returnList.add(new ChooseTabListItem(tab.getTabId(),
|
|
|
|
getString(R.string.channel_page_summary),
|
2018-09-05 04:54:17 +02:00
|
|
|
tab.getTabIconRes(context)));
|
|
|
|
break;
|
2019-03-10 22:38:30 +01:00
|
|
|
case DEFAULT_KIOSK:
|
|
|
|
if (!tabList.contains(tab)) {
|
2020-03-31 19:20:15 +02:00
|
|
|
returnList.add(new ChooseTabListItem(tab.getTabId(),
|
|
|
|
getString(R.string.default_kiosk_page_summary),
|
2021-03-27 15:45:49 +01:00
|
|
|
R.drawable.ic_whatshot));
|
2019-03-10 22:38:30 +01:00
|
|
|
}
|
|
|
|
break;
|
2020-04-30 22:52:47 +02:00
|
|
|
case PLAYLIST:
|
|
|
|
returnList.add(new ChooseTabListItem(tab.getTabId(),
|
|
|
|
getString(R.string.playlist_page_summary),
|
|
|
|
tab.getTabIconRes(context)));
|
|
|
|
break;
|
2018-09-05 04:54:17 +02:00
|
|
|
default:
|
|
|
|
if (!tabList.contains(tab)) {
|
|
|
|
returnList.add(new ChooseTabListItem(context, tab));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return returnList.toArray(new ChooseTabListItem[0]);
|
|
|
|
}
|
|
|
|
|
|
|
|
/*//////////////////////////////////////////////////////////////////////////
|
|
|
|
// List Handling
|
|
|
|
//////////////////////////////////////////////////////////////////////////*/
|
|
|
|
|
2020-03-31 19:20:15 +02:00
|
|
|
private ItemTouchHelper.SimpleCallback getItemTouchCallback() {
|
|
|
|
return new ItemTouchHelper.SimpleCallback(ItemTouchHelper.UP | ItemTouchHelper.DOWN,
|
|
|
|
ItemTouchHelper.START | ItemTouchHelper.END) {
|
|
|
|
@Override
|
|
|
|
public int interpolateOutOfBoundsScroll(final RecyclerView recyclerView,
|
|
|
|
final int viewSize,
|
|
|
|
final int viewSizeOutOfBounds,
|
|
|
|
final int totalSize,
|
|
|
|
final long msSinceStartScroll) {
|
|
|
|
final int standardSpeed = super.interpolateOutOfBoundsScroll(recyclerView, viewSize,
|
|
|
|
viewSizeOutOfBounds, totalSize, msSinceStartScroll);
|
|
|
|
final int minimumAbsVelocity = Math.max(12,
|
|
|
|
Math.abs(standardSpeed));
|
|
|
|
return minimumAbsVelocity * (int) Math.signum(viewSizeOutOfBounds);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean onMove(final RecyclerView recyclerView,
|
|
|
|
final RecyclerView.ViewHolder source,
|
|
|
|
final RecyclerView.ViewHolder target) {
|
|
|
|
if (source.getItemViewType() != target.getItemViewType()
|
|
|
|
|| selectedTabsAdapter == null) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
final int sourceIndex = source.getAdapterPosition();
|
|
|
|
final int targetIndex = target.getAdapterPosition();
|
|
|
|
selectedTabsAdapter.swapItems(sourceIndex, targetIndex);
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean isLongPressDragEnabled() {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean isItemViewSwipeEnabled() {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onSwiped(final RecyclerView.ViewHolder viewHolder, final int swipeDir) {
|
2020-08-16 10:24:58 +02:00
|
|
|
final int position = viewHolder.getAdapterPosition();
|
2020-03-31 19:20:15 +02:00
|
|
|
tabList.remove(position);
|
|
|
|
selectedTabsAdapter.notifyItemRemoved(position);
|
|
|
|
|
|
|
|
if (tabList.isEmpty()) {
|
|
|
|
tabList.add(Tab.Type.BLANK.getTab());
|
|
|
|
selectedTabsAdapter.notifyItemInserted(0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
private class SelectedTabsAdapter
|
|
|
|
extends RecyclerView.Adapter<ChooseTabsFragment.SelectedTabsAdapter.TabViewHolder> {
|
2018-09-05 04:54:17 +02:00
|
|
|
private final LayoutInflater inflater;
|
2020-11-18 23:50:00 +01:00
|
|
|
private final ItemTouchHelper itemTouchHelper;
|
2018-09-05 04:54:17 +02:00
|
|
|
|
2020-03-31 19:20:15 +02:00
|
|
|
SelectedTabsAdapter(final Context context, final ItemTouchHelper itemTouchHelper) {
|
2018-09-05 04:54:17 +02:00
|
|
|
this.itemTouchHelper = itemTouchHelper;
|
|
|
|
this.inflater = LayoutInflater.from(context);
|
|
|
|
}
|
|
|
|
|
2020-03-31 19:20:15 +02:00
|
|
|
public void swapItems(final int fromPosition, final int toPosition) {
|
2018-09-05 04:54:17 +02:00
|
|
|
Collections.swap(tabList, fromPosition, toPosition);
|
|
|
|
notifyItemMoved(fromPosition, toPosition);
|
|
|
|
}
|
|
|
|
|
|
|
|
@NonNull
|
|
|
|
@Override
|
2020-03-31 19:20:15 +02:00
|
|
|
public ChooseTabsFragment.SelectedTabsAdapter.TabViewHolder onCreateViewHolder(
|
|
|
|
@NonNull final ViewGroup parent, final int viewType) {
|
2020-05-02 23:14:31 +02:00
|
|
|
final View view = inflater.inflate(R.layout.list_choose_tabs, parent, false);
|
2018-09-05 04:54:17 +02:00
|
|
|
return new ChooseTabsFragment.SelectedTabsAdapter.TabViewHolder(view);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2020-03-31 19:20:15 +02:00
|
|
|
public void onBindViewHolder(
|
|
|
|
@NonNull final ChooseTabsFragment.SelectedTabsAdapter.TabViewHolder holder,
|
|
|
|
final int position) {
|
2018-09-05 04:54:17 +02:00
|
|
|
holder.bind(position, holder);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public int getItemCount() {
|
|
|
|
return tabList.size();
|
|
|
|
}
|
|
|
|
|
|
|
|
class TabViewHolder extends RecyclerView.ViewHolder {
|
2020-11-18 23:50:00 +01:00
|
|
|
private final AppCompatImageView tabIconView;
|
|
|
|
private final TextView tabNameView;
|
|
|
|
private final ImageView handle;
|
2018-09-05 04:54:17 +02:00
|
|
|
|
2020-03-31 19:20:15 +02:00
|
|
|
TabViewHolder(final View itemView) {
|
2018-09-05 04:54:17 +02:00
|
|
|
super(itemView);
|
|
|
|
|
|
|
|
tabNameView = itemView.findViewById(R.id.tabName);
|
|
|
|
tabIconView = itemView.findViewById(R.id.tabIcon);
|
|
|
|
handle = itemView.findViewById(R.id.handle);
|
|
|
|
}
|
|
|
|
|
|
|
|
@SuppressLint("ClickableViewAccessibility")
|
2020-03-31 19:20:15 +02:00
|
|
|
void bind(final int position, final TabViewHolder holder) {
|
2018-09-05 04:54:17 +02:00
|
|
|
handle.setOnTouchListener(getOnTouchListener(holder));
|
|
|
|
|
|
|
|
final Tab tab = tabList.get(position);
|
|
|
|
final Tab.Type type = Tab.typeFrom(tab.getTabId());
|
|
|
|
|
|
|
|
if (type == null) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2019-10-20 02:31:14 +02:00
|
|
|
final String tabName;
|
2018-09-05 04:54:17 +02:00
|
|
|
switch (type) {
|
|
|
|
case BLANK:
|
2019-10-20 02:31:14 +02:00
|
|
|
tabName = getString(R.string.blank_page_summary);
|
|
|
|
break;
|
|
|
|
case DEFAULT_KIOSK:
|
|
|
|
tabName = getString(R.string.default_kiosk_page_summary);
|
2018-09-05 04:54:17 +02:00
|
|
|
break;
|
|
|
|
case KIOSK:
|
2020-03-31 19:20:15 +02:00
|
|
|
tabName = NewPipe.getNameOfService(((Tab.KioskTab) tab)
|
|
|
|
.getKioskServiceId()) + "/" + tab.getTabName(requireContext());
|
2018-09-05 04:54:17 +02:00
|
|
|
break;
|
|
|
|
case CHANNEL:
|
2020-03-31 19:20:15 +02:00
|
|
|
tabName = NewPipe.getNameOfService(((Tab.ChannelTab) tab)
|
|
|
|
.getChannelServiceId()) + "/" + tab.getTabName(requireContext());
|
2018-09-05 04:54:17 +02:00
|
|
|
break;
|
2020-04-30 22:52:47 +02:00
|
|
|
case PLAYLIST:
|
2020-05-02 23:14:31 +02:00
|
|
|
final int serviceId = ((Tab.PlaylistTab) tab).getPlaylistServiceId();
|
|
|
|
final String serviceName = serviceId == -1
|
2020-04-30 22:52:47 +02:00
|
|
|
? getString(R.string.local)
|
|
|
|
: NewPipe.getNameOfService(serviceId);
|
|
|
|
tabName = serviceName + "/" + tab.getTabName(requireContext());
|
|
|
|
break;
|
2019-10-20 02:31:14 +02:00
|
|
|
default:
|
|
|
|
tabName = tab.getTabName(requireContext());
|
2019-03-10 22:38:30 +01:00
|
|
|
break;
|
2018-09-05 04:54:17 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
tabNameView.setText(tabName);
|
|
|
|
tabIconView.setImageResource(tab.getTabIconRes(requireContext()));
|
|
|
|
}
|
|
|
|
|
|
|
|
@SuppressLint("ClickableViewAccessibility")
|
|
|
|
private View.OnTouchListener getOnTouchListener(final RecyclerView.ViewHolder item) {
|
|
|
|
return (view, motionEvent) -> {
|
|
|
|
if (motionEvent.getActionMasked() == MotionEvent.ACTION_DOWN) {
|
|
|
|
if (itemTouchHelper != null && getItemCount() > 1) {
|
|
|
|
itemTouchHelper.startDrag(item);
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|