diff --git a/app/build.gradle b/app/build.gradle index c38bf8d4a..a761f5ccc 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -8,8 +8,8 @@ android { applicationId "org.schabi.newpipe" minSdkVersion 15 targetSdkVersion 27 - versionCode 41 - versionName "0.11.0" + versionCode 42 + versionName "0.11.1" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true @@ -52,7 +52,7 @@ dependencies { exclude module: 'support-annotations' } - implementation 'com.github.TeamNewPipe:NewPipeExtractor:b9d0941411' + implementation 'com.github.TeamNewPipe:NewPipeExtractor:a5ba4828' testImplementation 'junit:junit:4.12' testImplementation 'org.mockito:mockito-core:1.10.19' diff --git a/app/src/main/java/org/schabi/newpipe/about/AboutActivity.java b/app/src/main/java/org/schabi/newpipe/about/AboutActivity.java index a2fe35894..a64ed7ff4 100644 --- a/app/src/main/java/org/schabi/newpipe/about/AboutActivity.java +++ b/app/src/main/java/org/schabi/newpipe/about/AboutActivity.java @@ -135,8 +135,12 @@ public class AboutActivity extends AppCompatActivity { View githubLink = rootView.findViewById(R.id.github_link); githubLink.setOnClickListener(new OnGithubLinkClickListener()); - View licenseLink = rootView.findViewById(R.id.app_read_license); - licenseLink.setOnClickListener(new OnReadFullLicenseClickListener()); + View donationLink = rootView.findViewById(R.id.donation_link); + donationLink.setOnClickListener(new OnDonationLinkClickListener()); + + View websiteLink = rootView.findViewById(R.id.website_link); + websiteLink.setOnClickListener(new OnWebsiteLinkClickListener()); + return rootView; } @@ -149,10 +153,21 @@ public class AboutActivity extends AppCompatActivity { } } - private static class OnReadFullLicenseClickListener implements View.OnClickListener { + private static class OnDonationLinkClickListener implements View.OnClickListener { @Override - public void onClick(View v) { - LicenseFragment.showLicense(v.getContext(), StandardLicenses.GPL3); + public void onClick(final View view) { + final Context context = view.getContext(); + Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(context.getString(R.string.donation_url))); + context.startActivity(intent); + } + } + + private static class OnWebsiteLinkClickListener implements View.OnClickListener { + @Override + public void onClick(final View view) { + final Context context = view.getContext(); + Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(context.getString(R.string.website_url))); + context.startActivity(intent); } } } diff --git a/app/src/main/java/org/schabi/newpipe/about/LicenseFragment.java b/app/src/main/java/org/schabi/newpipe/about/LicenseFragment.java index 4400cac53..272e27240 100644 --- a/app/src/main/java/org/schabi/newpipe/about/LicenseFragment.java +++ b/app/src/main/java/org/schabi/newpipe/about/LicenseFragment.java @@ -62,6 +62,9 @@ public class LicenseFragment extends Fragment { View rootView = inflater.inflate(R.layout.fragment_licenses, container, false); ViewGroup softwareComponentsView = rootView.findViewById(R.id.software_components); + View licenseLink = rootView.findViewById(R.id.app_read_license); + licenseLink.setOnClickListener(new OnReadFullLicenseClickListener()); + for (final SoftwareComponent component : softwareComponents) { View componentView = inflater.inflate(R.layout.item_software_component, container, false); TextView softwareName = componentView.findViewById(R.id.name); @@ -119,4 +122,11 @@ public class LicenseFragment extends Fragment { Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(componentLink)); startActivity(browserIntent); } + + private static class OnReadFullLicenseClickListener implements View.OnClickListener { + @Override + public void onClick(View v) { + LicenseFragment.showLicense(v.getContext(), StandardLicenses.GPL3); + } + } } diff --git a/app/src/main/java/org/schabi/newpipe/database/subscription/SubscriptionEntity.java b/app/src/main/java/org/schabi/newpipe/database/subscription/SubscriptionEntity.java index 12d1764cc..e71088ac9 100644 --- a/app/src/main/java/org/schabi/newpipe/database/subscription/SubscriptionEntity.java +++ b/app/src/main/java/org/schabi/newpipe/database/subscription/SubscriptionEntity.java @@ -116,10 +116,7 @@ public class SubscriptionEntity { @Ignore public ChannelInfoItem toChannelInfoItem() { - ChannelInfoItem item = new ChannelInfoItem(); - item.url = getUrl(); - item.service_id = getServiceId(); - item.name = getName(); + ChannelInfoItem item = new ChannelInfoItem(getServiceId(), getUrl(), getName()); item.thumbnail_url = getAvatarUrl(); item.subscriber_count = getSubscriberCount(); item.description = getDescription(); diff --git a/app/src/main/java/org/schabi/newpipe/player/MainVideoPlayer.java b/app/src/main/java/org/schabi/newpipe/player/MainVideoPlayer.java index 73e4d87ac..e68f56edb 100644 --- a/app/src/main/java/org/schabi/newpipe/player/MainVideoPlayer.java +++ b/app/src/main/java/org/schabi/newpipe/player/MainVideoPlayer.java @@ -22,12 +22,15 @@ package org.schabi.newpipe.player; import android.app.Activity; import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; import android.content.pm.ActivityInfo; import android.content.res.Configuration; import android.graphics.Color; import android.media.AudioManager; import android.os.Build; import android.os.Bundle; +import android.preference.PreferenceManager; +import android.provider.Settings; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v7.widget.RecyclerView; @@ -81,6 +84,8 @@ public final class MainVideoPlayer extends Activity { private boolean activityPaused; private VideoPlayerImpl playerImpl; + private SharedPreferences defaultPreferences; + /*////////////////////////////////////////////////////////////////////////// // Activity LifeCycle //////////////////////////////////////////////////////////////////////////*/ @@ -89,6 +94,7 @@ public final class MainVideoPlayer extends Activity { protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (DEBUG) Log.d(TAG, "onCreate() called with: savedInstanceState = [" + savedInstanceState + "]"); + defaultPreferences = PreferenceManager.getDefaultSharedPreferences(this); ThemeHelper.setTheme(this); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) getWindow().setStatusBarColor(Color.BLACK); setVolumeControlStream(AudioManager.STREAM_MUSIC); @@ -99,6 +105,8 @@ public final class MainVideoPlayer extends Activity { return; } + + showSystemUi(); setContentView(R.layout.activity_main_player); playerImpl = new VideoPlayerImpl(this); @@ -146,6 +154,11 @@ public final class MainVideoPlayer extends Activity { activityPaused = false; } + if(globalScreenOrientationLocked()) { + boolean lastOrientationWasLandscape + = defaultPreferences.getBoolean(getString(R.string.last_orientation_landscape_key), false); + setLandScape(lastOrientationWasLandscape); + } } @Override @@ -198,11 +211,28 @@ public final class MainVideoPlayer extends Activity { } private void toggleOrientation() { - setRequestedOrientation(getResources().getDisplayMetrics().heightPixels > getResources().getDisplayMetrics().widthPixels + setLandScape(!isLandScape()); + defaultPreferences.edit() + .putBoolean(getString(R.string.last_orientation_landscape_key), !isLandScape()) + .apply(); + } + + private boolean isLandScape() { + return getResources().getDisplayMetrics().heightPixels < getResources().getDisplayMetrics().widthPixels; + } + + private void setLandScape(boolean v) { + setRequestedOrientation(v ? ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE : ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT); } + private boolean globalScreenOrientationLocked() { + // 1: Screen orientation changes using acelerometer + // 0: Screen orientatino is locked + return !(android.provider.Settings.System.getInt(getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, 0) == 1); + } + protected void setRepeatModeButton(final ImageButton imageButton, final int repeatMode) { switch (repeatMode) { case Player.REPEAT_MODE_OFF: diff --git a/app/src/main/res/layout/fragment_about.xml b/app/src/main/res/layout/fragment_about.xml index aa154072a..6e1db563a 100644 --- a/app/src/main/res/layout/fragment_about.xml +++ b/app/src/main/res/layout/fragment_about.xml @@ -45,6 +45,7 @@ android:id="@+id/app_description" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:paddingBottom="5dp" android:text="@string/app_description" /> -