NewPipe/app/src/main/java/org/schabi/newpipe/about/AboutActivity.java

203 lines
8.3 KiB
Java
Raw Normal View History

2017-07-04 09:31:53 +02:00
package org.schabi.newpipe.about;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
2020-10-18 01:15:10 +02:00
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
2019-10-04 14:59:08 +02:00
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
2020-10-18 01:15:10 +02:00
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager2.adapter.FragmentStateAdapter;
import androidx.viewpager2.widget.ViewPager2;
import com.google.android.material.tabs.TabLayout;
2020-10-18 01:15:10 +02:00
import com.google.android.material.tabs.TabLayoutMediator;
2017-07-04 09:31:53 +02:00
import org.schabi.newpipe.BuildConfig;
import org.schabi.newpipe.R;
import org.schabi.newpipe.util.ThemeHelper;
import static org.schabi.newpipe.util.Localization.assureCorrectAppLanguage;
import static org.schabi.newpipe.util.ShareUtils.openUrlInBrowser;
2017-07-04 09:31:53 +02:00
public class AboutActivity extends AppCompatActivity {
/**
* List of all software components.
2017-07-04 09:31:53 +02:00
*/
private static final SoftwareComponent[] SOFTWARE_COMPONENTS = new SoftwareComponent[]{
new SoftwareComponent("Giga Get", "2014 - 2015", "Peter Cai",
"https://github.com/PaperAirplane-Dev-Team/GigaGet", StandardLicenses.GPL3),
new SoftwareComponent("NewPipe Extractor", "2017 - 2020", "Christian Schabesberger",
"https://github.com/TeamNewPipe/NewPipeExtractor", StandardLicenses.GPL3),
new SoftwareComponent("Jsoup", "2017", "Jonathan Hedley",
"https://github.com/jhy/jsoup", StandardLicenses.MIT),
new SoftwareComponent("Rhino", "2015", "Mozilla",
"https://www.mozilla.org/rhino/", StandardLicenses.MPL2),
new SoftwareComponent("ACRA", "2013", "Kevin Gaudin",
"http://www.acra.ch", StandardLicenses.APACHE2),
new SoftwareComponent("Universal Image Loader", "2011 - 2015", "Sergey Tarasevich",
"https://github.com/nostra13/Android-Universal-Image-Loader",
StandardLicenses.APACHE2),
new SoftwareComponent("CircleImageView", "2014 - 2020", "Henning Dodenhof",
"https://github.com/hdodenhof/CircleImageView", StandardLicenses.APACHE2),
new SoftwareComponent("NoNonsense-FilePicker", "2016", "Jonas Kalderstam",
"https://github.com/spacecowboy/NoNonsense-FilePicker", StandardLicenses.MPL2),
new SoftwareComponent("ExoPlayer", "2014 - 2020", "Google Inc",
"https://github.com/google/ExoPlayer", StandardLicenses.APACHE2),
new SoftwareComponent("RxAndroid", "2015 - 2018", "The RxAndroid authors",
"https://github.com/ReactiveX/RxAndroid", StandardLicenses.APACHE2),
new SoftwareComponent("RxJava", "2016 - 2020", "RxJava Contributors",
"https://github.com/ReactiveX/RxJava", StandardLicenses.APACHE2),
new SoftwareComponent("RxBinding", "2015 - 2018", "Jake Wharton",
"https://github.com/JakeWharton/RxBinding", StandardLicenses.APACHE2),
new SoftwareComponent("PrettyTime", "2012 - 2020", "Lincoln Baxter, III",
"https://github.com/ocpsoft/prettytime", StandardLicenses.APACHE2),
new SoftwareComponent("Markwon", "2017 - 2020", "Noties",
"https://github.com/noties/Markwon", StandardLicenses.APACHE2),
new SoftwareComponent("Groupie", "2016", "Lisa Wray",
"https://github.com/lisawray/groupie", StandardLicenses.MIT)
2017-07-04 09:31:53 +02:00
};
2020-10-18 01:15:10 +02:00
private static final int POS_ABOUT = 0;
private static final int POS_LICENSE = 1;
private static final int TOTAL_COUNT = 2;
2017-07-04 09:31:53 +02:00
/**
2020-10-18 01:15:10 +02:00
* The {@link RecyclerView.Adapter} that will provide
2017-07-04 09:31:53 +02:00
* fragments for each of the sections. We use a
2020-10-18 01:15:10 +02:00
* {@link FragmentStateAdapter} derivative, which will keep every
* loaded fragment in memory.
2017-07-04 09:31:53 +02:00
*/
private SectionsPagerAdapter mSectionsPagerAdapter;
/**
2020-10-18 01:15:10 +02:00
* The {@link ViewPager2} that will host the section contents.
2017-07-04 09:31:53 +02:00
*/
2020-10-18 01:15:10 +02:00
private ViewPager2 mViewPager;
2017-07-04 09:31:53 +02:00
@Override
protected void onCreate(final Bundle savedInstanceState) {
assureCorrectAppLanguage(this);
2017-07-04 09:31:53 +02:00
super.onCreate(savedInstanceState);
ThemeHelper.setTheme(this);
this.setTitle(getString(R.string.title_activity_about));
2017-07-04 09:31:53 +02:00
setContentView(R.layout.activity_about);
2020-08-16 10:24:58 +02:00
final Toolbar toolbar = findViewById(R.id.toolbar);
2017-07-04 09:31:53 +02:00
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
// Create the adapter that will return a fragment for each of the three
// primary sections of the activity.
mSectionsPagerAdapter = new SectionsPagerAdapter(this);
2017-07-04 09:31:53 +02:00
// Set up the ViewPager with the sections adapter.
mViewPager = findViewById(R.id.container);
2017-07-04 09:31:53 +02:00
mViewPager.setAdapter(mSectionsPagerAdapter);
2020-08-16 10:24:58 +02:00
final TabLayout tabLayout = findViewById(R.id.tabs);
2020-10-18 01:15:10 +02:00
new TabLayoutMediator(tabLayout, mViewPager, (tab, position) -> {
switch (position) {
default:
case POS_ABOUT:
tab.setText(R.string.tab_about);
break;
case POS_LICENSE:
tab.setText(R.string.tab_licenses);
break;
}
}).attach();
2017-07-04 09:31:53 +02:00
}
@Override
public boolean onOptionsItemSelected(final MenuItem item) {
2020-08-16 10:24:58 +02:00
final int id = item.getItemId();
2017-07-04 09:31:53 +02:00
switch (id) {
case android.R.id.home:
finish();
return true;
2017-07-04 09:31:53 +02:00
}
return super.onOptionsItemSelected(item);
}
/**
* A placeholder fragment containing a simple view.
*/
public static class AboutFragment extends Fragment {
public AboutFragment() { }
2017-07-04 09:31:53 +02:00
/**
* Created a new instance of this fragment for the given section number.
*
* @return New instance of {@link AboutFragment}
2017-07-04 09:31:53 +02:00
*/
public static AboutFragment newInstance() {
return new AboutFragment();
}
@Override
public View onCreateView(final LayoutInflater inflater, final ViewGroup container,
final Bundle savedInstanceState) {
2020-08-16 10:24:58 +02:00
final View rootView = inflater.inflate(R.layout.fragment_about, container, false);
final Context context = this.getContext();
2020-08-16 10:24:58 +02:00
final TextView version = rootView.findViewById(R.id.app_version);
2017-07-04 09:31:53 +02:00
version.setText(BuildConfig.VERSION_NAME);
2020-08-16 10:24:58 +02:00
final View githubLink = rootView.findViewById(R.id.github_link);
githubLink.setOnClickListener(nv ->
openUrlInBrowser(context, context.getString(R.string.github_url)));
2017-07-04 09:31:53 +02:00
2020-08-16 10:24:58 +02:00
final View donationLink = rootView.findViewById(R.id.donation_link);
donationLink.setOnClickListener(v ->
openUrlInBrowser(context, context.getString(R.string.donation_url)));
2020-08-16 10:24:58 +02:00
final View websiteLink = rootView.findViewById(R.id.website_link);
websiteLink.setOnClickListener(nv ->
openUrlInBrowser(context, context.getString(R.string.website_url)));
2020-08-16 10:24:58 +02:00
final View privacyPolicyLink = rootView.findViewById(R.id.privacy_policy_link);
privacyPolicyLink.setOnClickListener(v ->
openUrlInBrowser(context, context.getString(R.string.privacy_policy_url)));
2017-07-04 09:31:53 +02:00
return rootView;
2017-07-04 09:31:53 +02:00
}
}
/**
2020-10-18 01:15:10 +02:00
* A {@link FragmentStateAdapter} that returns a fragment corresponding to
2017-07-04 09:31:53 +02:00
* one of the sections/tabs/pages.
*/
2020-10-18 01:15:10 +02:00
public static class SectionsPagerAdapter extends FragmentStateAdapter {
public SectionsPagerAdapter(final FragmentActivity fa) {
super(fa);
2017-07-04 09:31:53 +02:00
}
2020-10-18 01:15:10 +02:00
@NonNull
2017-07-04 09:31:53 +02:00
@Override
2020-10-18 01:15:10 +02:00
public Fragment createFragment(final int position) {
2017-07-04 09:31:53 +02:00
switch (position) {
2020-10-18 01:15:10 +02:00
default:
case POS_ABOUT:
2017-07-04 09:31:53 +02:00
return AboutFragment.newInstance();
2020-10-18 01:15:10 +02:00
case POS_LICENSE:
2017-07-04 09:31:53 +02:00
return LicenseFragment.newInstance(SOFTWARE_COMPONENTS);
}
}
@Override
2020-10-18 01:15:10 +02:00
public int getItemCount() {
2017-07-04 09:31:53 +02:00
// Show 2 total pages.
2020-10-18 01:15:10 +02:00
return TOTAL_COUNT;
2017-07-04 09:31:53 +02:00
}
}
}