mirror of
				https://github.com/TeamNewPipe/NewPipe
				synced 2025-10-30 23:03:00 +00:00 
			
		
		
		
	creating first prototype of kiosk page
This commit is contained in:
		| @@ -18,11 +18,16 @@ import android.view.ViewGroup; | ||||
|  | ||||
| import org.schabi.newpipe.BaseFragment; | ||||
| import org.schabi.newpipe.R; | ||||
| import org.schabi.newpipe.fragments.list.kisok.KioskFragment; | ||||
| import org.schabi.newpipe.fragments.subscription.SubscriptionFragment; | ||||
| import org.schabi.newpipe.util.NavigationHelper; | ||||
|  | ||||
| public class MainFragment extends BaseFragment implements TabLayout.OnTabSelectedListener { | ||||
|     private ViewPager viewPager; | ||||
|     private boolean showBlankTab = false; | ||||
|  | ||||
|     //todo: FIX THIS URGENTLY | ||||
|     public int currentServiceId = 0; //for youtube | ||||
|  | ||||
|     /*////////////////////////////////////////////////////////////////////////// | ||||
|     // Fragment's LifeCycle | ||||
| @@ -115,7 +120,17 @@ public class MainFragment extends BaseFragment implements TabLayout.OnTabSelecte | ||||
|                 case 1: | ||||
|                     return new SubscriptionFragment(); | ||||
|                 default: | ||||
|                     return new BlankFragment(); | ||||
|                     if(showBlankTab) { | ||||
|                         return new BlankFragment(); | ||||
|                     } else { | ||||
|                         try { | ||||
|                             return KioskFragment.getInstance(currentServiceId); | ||||
|                         } catch (Exception e) { | ||||
|                             //todo: replace this with propper error reporting | ||||
|                             e.printStackTrace(); | ||||
|                             return new BlankFragment(); | ||||
|                         } | ||||
|                     } | ||||
|             } | ||||
|         } | ||||
|  | ||||
|   | ||||
| @@ -0,0 +1,148 @@ | ||||
| package org.schabi.newpipe.fragments.list.kisok; | ||||
|  | ||||
| import android.os.Bundle; | ||||
| import android.preference.PreferenceManager; | ||||
| import android.support.annotation.NonNull; | ||||
| import android.support.annotation.Nullable; | ||||
| import android.text.TextUtils; | ||||
| import android.view.LayoutInflater; | ||||
| import android.view.View; | ||||
| import android.view.ViewGroup; | ||||
| import android.widget.TextView; | ||||
|  | ||||
| import org.schabi.newpipe.R; | ||||
| import org.schabi.newpipe.extractor.ListExtractor; | ||||
| import org.schabi.newpipe.extractor.NewPipe; | ||||
| import org.schabi.newpipe.extractor.StreamingService; | ||||
| import org.schabi.newpipe.extractor.UrlIdHandler; | ||||
| import org.schabi.newpipe.extractor.exceptions.ExtractionException; | ||||
| import org.schabi.newpipe.extractor.kiosk.KioskInfo; | ||||
| import org.schabi.newpipe.extractor.kiosk.KioskList; | ||||
| import org.schabi.newpipe.extractor.playlist.PlaylistInfo; | ||||
| import org.schabi.newpipe.fragments.list.BaseListInfoFragment; | ||||
| import org.schabi.newpipe.fragments.list.channel.ChannelFragment; | ||||
| import org.schabi.newpipe.report.UserAction; | ||||
| import org.schabi.newpipe.util.ExtractorHelper; | ||||
| import org.schabi.newpipe.util.NavigationHelper; | ||||
|  | ||||
| import io.reactivex.Single; | ||||
|  | ||||
| import static org.schabi.newpipe.util.AnimationUtils.animateView; | ||||
|  | ||||
| /** | ||||
|  * Created by Christian Schabesberger on 23.09.17. | ||||
|  * | ||||
|  * Copyright (C) Christian Schabesberger 2017 <chris.schabesberger@mailbox.org> | ||||
|  * KioskFragment.java is part of NewPipe. | ||||
|  * | ||||
|  * NewPipe is free software: you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation, either version 3 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * NewPipe is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with OpenHitboxStreams.  If not, see <http://www.gnu.org/licenses/>. | ||||
|  */ | ||||
|  | ||||
| public class KioskFragment extends BaseListInfoFragment<KioskInfo> { | ||||
|  | ||||
|  | ||||
|     /*////////////////////////////////////////////////////////////////////////// | ||||
|     // Views | ||||
|     //////////////////////////////////////////////////////////////////////////*/ | ||||
|  | ||||
|     private View headerRootLayout; | ||||
|     private TextView headerTitleView; | ||||
|  | ||||
|     public static KioskFragment getInstance(int serviceId) | ||||
|             throws ExtractionException { | ||||
|         KioskFragment instance = new KioskFragment(); | ||||
|         StreamingService service = NewPipe.getService(serviceId); | ||||
|         String defaultKioskType = service.getKioskList().getDefaultKioskType(); | ||||
|         UrlIdHandler defaultKioskTypeUrlIdHandler = service.getKioskList() | ||||
|                 .getUrlIdHandlerByType(defaultKioskType); | ||||
|         instance.setInitialData(serviceId, | ||||
|                 defaultKioskTypeUrlIdHandler.getUrl(defaultKioskType), | ||||
|                 defaultKioskType); | ||||
|         return instance; | ||||
|     } | ||||
|  | ||||
|     /*////////////////////////////////////////////////////////////////////////// | ||||
|     // LifeCycle | ||||
|     //////////////////////////////////////////////////////////////////////////*/ | ||||
|  | ||||
|     @Override | ||||
|     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { | ||||
|         return inflater.inflate(R.layout.fragment_kiosk, container, false); | ||||
|     } | ||||
|  | ||||
|     /*////////////////////////////////////////////////////////////////////////// | ||||
|     // Init | ||||
|     //////////////////////////////////////////////////////////////////////////*/ | ||||
|  | ||||
|     protected View getListHeader() { | ||||
|         headerRootLayout = activity.getLayoutInflater().inflate(R.layout.kiosk_header, itemsList, false); | ||||
|         headerTitleView = headerRootLayout.findViewById(R.id.kiosk_title_view); | ||||
|  | ||||
|         return headerRootLayout; | ||||
|     } | ||||
|  | ||||
|     /*////////////////////////////////////////////////////////////////////////// | ||||
|     // Load and handle | ||||
|     //////////////////////////////////////////////////////////////////////////*/ | ||||
|  | ||||
|     @Override | ||||
|     public Single<KioskInfo> loadResult(boolean forceReload) { | ||||
|         String contentCountry = PreferenceManager | ||||
|                 .getDefaultSharedPreferences(activity) | ||||
|                 .getString(getString(R.string.search_language_key), | ||||
|                         getString(R.string.default_language_value)); | ||||
|         return ExtractorHelper.getKioskInfo(serviceId, url, contentCountry, forceReload); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public Single<ListExtractor.NextItemsResult> loadMoreItemsLogic() { | ||||
|         return ExtractorHelper.getMoreKisokItems(serviceId, url, currentNextItemsUrl); | ||||
|     } | ||||
|  | ||||
|     /*////////////////////////////////////////////////////////////////////////// | ||||
|     // Contract | ||||
|     //////////////////////////////////////////////////////////////////////////*/ | ||||
|  | ||||
|     @Override | ||||
|     public void showLoading() { | ||||
|         super.showLoading(); | ||||
|         animateView(headerRootLayout, false, 200); | ||||
|         animateView(itemsList, false, 100); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void handleResult(@NonNull final KioskInfo result) { | ||||
|         super.handleResult(result); | ||||
|  | ||||
|         animateView(headerRootLayout, true, 100); | ||||
|         headerTitleView.setText(result.type); | ||||
|  | ||||
|         if (!result.errors.isEmpty()) { | ||||
|             showSnackBarError(result.errors, | ||||
|                     UserAction.REQUESTED_PLAYLIST, | ||||
|                     NewPipe.getNameOfService(result.service_id), result.url, 0); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void handleNextItems(ListExtractor.NextItemsResult result) { | ||||
|         super.handleNextItems(result); | ||||
|  | ||||
|         if (!result.errors.isEmpty()) { | ||||
|             showSnackBarError(result.errors, | ||||
|                     UserAction.REQUESTED_PLAYLIST, NewPipe.getNameOfService(serviceId) | ||||
|                     , "Get next page of: " + url, 0); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -26,6 +26,7 @@ import org.schabi.newpipe.extractor.Info; | ||||
| import org.schabi.newpipe.extractor.ListExtractor.NextItemsResult; | ||||
| import org.schabi.newpipe.extractor.NewPipe; | ||||
| import org.schabi.newpipe.extractor.channel.ChannelInfo; | ||||
| import org.schabi.newpipe.extractor.kiosk.KioskInfo; | ||||
| import org.schabi.newpipe.extractor.playlist.PlaylistInfo; | ||||
| import org.schabi.newpipe.extractor.search.SearchEngine; | ||||
| import org.schabi.newpipe.extractor.search.SearchResult; | ||||
| @@ -124,6 +125,24 @@ public final class ExtractorHelper { | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     public static Single<KioskInfo> getKioskInfo(final int serviceId, final String url, final String contentCountry, boolean forceLoad) { | ||||
|         return checkCache(forceLoad, serviceId, url, Single.fromCallable(new Callable<KioskInfo>() { | ||||
|             @Override | ||||
|             public KioskInfo call() throws Exception { | ||||
|                 return KioskInfo.getInfo(NewPipe.getService(serviceId), url, contentCountry); | ||||
|             } | ||||
|         })); | ||||
|     } | ||||
|  | ||||
|     public static Single<NextItemsResult> getMoreKisokItems(final int serviceId, final String url, final String nextStreamsUrl) { | ||||
|         return Single.fromCallable(new Callable<NextItemsResult>() { | ||||
|             @Override | ||||
|             public NextItemsResult call() throws Exception { | ||||
|                 return KioskInfo.getMoreItems(NewPipe.getService(serviceId), url, nextStreamsUrl); | ||||
|             } | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     /*////////////////////////////////////////////////////////////////////////// | ||||
|     // Utils | ||||
|     //////////////////////////////////////////////////////////////////////////*/ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Christian Schabesberger
					Christian Schabesberger