From d17496f7207b6d4475e1d122aecef3fd6bc0a301 Mon Sep 17 00:00:00 2001 From: 59436419 Date: Mon, 27 Feb 2017 17:25:15 +0530 Subject: [PATCH] Improved code for changing theme --- app/build.gradle | 8 +- .../org/schabi/newpipe/ChannelActivity.java | 15 +- .../java/org/schabi/newpipe/MainActivity.java | 8 +- .../org/schabi/newpipe/ThemableActivity.java | 19 --- .../detail/VideoItemDetailActivity.java | 61 +++---- .../newpipe/download/DownloadActivity.java | 19 +-- .../schabi/newpipe/report/ErrorActivity.java | 155 +++++++++--------- .../newpipe/settings/SettingsActivity.java | 20 +-- .../newpipe/settings/SettingsFragment.java | 8 +- .../org/schabi/newpipe/util/ThemeHelper.java | 31 ++++ .../main/res/drawable-v21/splash_screen.xml | 12 ++ app/src/main/res/drawable/splash_screen.xml | 2 +- app/src/main/res/values-de/strings.xml | 78 ++++----- app/src/main/res/values-es/strings.xml | 78 ++++----- app/src/main/res/values-id/strings.xml | 78 ++++----- app/src/main/res/values-it/strings.xml | 78 ++++----- app/src/main/res/values-ja/strings.xml | 78 ++++----- app/src/main/res/values-nl/strings.xml | 78 ++++----- app/src/main/res/values-pt/strings.xml | 78 ++++----- app/src/main/res/values-sk/strings.xml | 78 ++++----- app/src/main/res/values-sr/strings.xml | 78 ++++----- app/src/main/res/values/settings_keys.xml | 2 + app/src/main/res/values/strings.xml | 1 + app/src/main/res/values/styles.xml | 9 + 24 files changed, 538 insertions(+), 534 deletions(-) delete mode 100644 app/src/main/java/org/schabi/newpipe/ThemableActivity.java create mode 100644 app/src/main/java/org/schabi/newpipe/util/ThemeHelper.java create mode 100644 app/src/main/res/drawable-v21/splash_screen.xml diff --git a/app/build.gradle b/app/build.gradle index 488012afc..a64e72496 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -32,10 +32,10 @@ android { dependencies { testCompile 'junit:junit:4.12' - compile 'com.android.support:appcompat-v7:25.1.1' - compile 'com.android.support:support-v4:25.1.1' - compile 'com.android.support:design:25.1.1' - compile 'com.android.support:recyclerview-v7:25.1.1' + compile 'com.android.support:appcompat-v7:25.1.0' + compile 'com.android.support:support-v4:25.1.0' + compile 'com.android.support:design:25.1.0' + compile 'com.android.support:recyclerview-v7:25.1.0' compile 'org.jsoup:jsoup:1.8.3' compile 'org.mozilla:rhino:1.7.7' compile 'info.guardianproject.netcipher:netcipher:1.2' diff --git a/app/src/main/java/org/schabi/newpipe/ChannelActivity.java b/app/src/main/java/org/schabi/newpipe/ChannelActivity.java index e64605218..86f902ea6 100644 --- a/app/src/main/java/org/schabi/newpipe/ChannelActivity.java +++ b/app/src/main/java/org/schabi/newpipe/ChannelActivity.java @@ -4,7 +4,6 @@ import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.os.Handler; -import android.preference.PreferenceManager; import android.support.design.widget.CollapsingToolbarLayout; import android.support.design.widget.FloatingActionButton; import android.support.v7.app.AppCompatActivity; @@ -30,9 +29,9 @@ import org.schabi.newpipe.extractor.exceptions.ParsingException; import org.schabi.newpipe.info_list.InfoItemBuilder; import org.schabi.newpipe.info_list.InfoListAdapter; import org.schabi.newpipe.report.ErrorActivity; +import org.schabi.newpipe.util.ThemeHelper; import java.io.IOException; -import java.util.Objects; /** * Copyright (C) Christian Schabesberger 2016 @@ -55,13 +54,11 @@ import java.util.Objects; public class ChannelActivity extends AppCompatActivity { - private static final String TAG = ChannelActivity.class.toString(); - private View rootView = null; - // intent const public static final String CHANNEL_URL = "channel_url"; public static final String SERVICE_ID = "service_id"; - + private static final String TAG = ChannelActivity.class.toString(); + private View rootView = null; private int serviceId = -1; private String channelUrl = ""; private int pageNumber = 0; @@ -73,12 +70,8 @@ public class ChannelActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { - if (PreferenceManager.getDefaultSharedPreferences(this) - .getString("theme", getResources().getString(R.string.light_theme_title)). - equals(getResources().getString(R.string.dark_theme_title))) { - setTheme(R.style.DarkTheme_NoActionBar); - } super.onCreate(savedInstanceState); + ThemeHelper.setTheme(this, false); setContentView(R.layout.activity_channel); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); rootView = findViewById(R.id.rootView); diff --git a/app/src/main/java/org/schabi/newpipe/MainActivity.java b/app/src/main/java/org/schabi/newpipe/MainActivity.java index 3621603de..a4cf408ab 100644 --- a/app/src/main/java/org/schabi/newpipe/MainActivity.java +++ b/app/src/main/java/org/schabi/newpipe/MainActivity.java @@ -2,15 +2,17 @@ package org.schabi.newpipe; import android.content.Intent; import android.media.AudioManager; +import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.NavUtils; -import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import org.schabi.newpipe.settings.SettingsActivity; import org.schabi.newpipe.util.PermissionHelper; +import org.schabi.newpipe.util.ThemeHelper; /** * Created by Christian Schabesberger on 02.08.16. @@ -32,13 +34,14 @@ import org.schabi.newpipe.util.PermissionHelper; * along with NewPipe. If not, see . */ -public class MainActivity extends ThemableActivity { +public class MainActivity extends AppCompatActivity { private Fragment mainFragment = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + ThemeHelper.setTheme(this, true); setContentView(R.layout.activity_main); setVolumeControlStream(AudioManager.STREAM_MUSIC); mainFragment = getSupportFragmentManager() @@ -49,7 +52,6 @@ public class MainActivity extends ThemableActivity { public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); MenuInflater inflater = getMenuInflater(); - inflater.inflate(R.menu.main_menu, menu); return true; } diff --git a/app/src/main/java/org/schabi/newpipe/ThemableActivity.java b/app/src/main/java/org/schabi/newpipe/ThemableActivity.java deleted file mode 100644 index 81789ec1c..000000000 --- a/app/src/main/java/org/schabi/newpipe/ThemableActivity.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.schabi.newpipe; - -import android.os.Build; -import android.os.Bundle; -import android.preference.PreferenceManager; -import android.support.v7.app.AppCompatActivity; - -public class ThemableActivity extends AppCompatActivity { - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - if (PreferenceManager.getDefaultSharedPreferences(this) - .getString("theme", getResources().getString(R.string.light_theme_title)). - equals(getResources().getString(R.string.dark_theme_title))) { - setTheme(R.style.DarkTheme); - } - } -} \ No newline at end of file diff --git a/app/src/main/java/org/schabi/newpipe/detail/VideoItemDetailActivity.java b/app/src/main/java/org/schabi/newpipe/detail/VideoItemDetailActivity.java index 354f0b47d..1acf05258 100644 --- a/app/src/main/java/org/schabi/newpipe/detail/VideoItemDetailActivity.java +++ b/app/src/main/java/org/schabi/newpipe/detail/VideoItemDetailActivity.java @@ -5,17 +5,17 @@ import android.media.AudioManager; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.v4.app.NavUtils; +import android.support.v7.app.AppCompatActivity; import android.util.Log; -import android.view.Menu; import android.view.MenuItem; import android.widget.Toast; import org.schabi.newpipe.App; import org.schabi.newpipe.MainActivity; import org.schabi.newpipe.R; -import org.schabi.newpipe.ThemableActivity; import org.schabi.newpipe.extractor.NewPipe; import org.schabi.newpipe.extractor.StreamingService; +import org.schabi.newpipe.util.ThemeHelper; import java.util.Collection; import java.util.HashSet; @@ -39,7 +39,7 @@ import java.util.HashSet; * along with NewPipe. If not, see . */ -public class VideoItemDetailActivity extends ThemableActivity { +public class VideoItemDetailActivity extends AppCompatActivity { /** * Removes invisible separators (\p{Z}) and punctuation characters including @@ -55,8 +55,36 @@ public class VideoItemDetailActivity extends ThemableActivity { private String videoUrl; private int currentStreamingService = -1; + private static String removeHeadingGibberish(final String input) { + int start = 0; + for (int i = input.indexOf("://") - 1; i >= 0; i--) { + if (!input.substring(i, i + 1).matches("\\p{L}")) { + start = i + 1; + break; + } + } + return input.substring(start, input.length()); + } + + private static String trim(final String input) { + if (input == null || input.length() < 1) { + return input; + } else { + String output = input; + while (output.length() > 0 && output.substring(0, 1).matches(REGEX_REMOVE_FROM_URL)) { + output = output.substring(1); + } + while (output.length() > 0 + && output.substring(output.length() - 1, output.length()).matches(REGEX_REMOVE_FROM_URL)) { + output = output.substring(0, output.length() - 1); + } + return output; + } + } + protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + ThemeHelper.setTheme(this, true); setContentView(R.layout.activity_videoitem_detail); setVolumeControlStream(AudioManager.STREAM_MUSIC); // Show the Up button in the action bar. @@ -193,33 +221,6 @@ public class VideoItemDetailActivity extends ThemableActivity { return result.toArray(new String[result.size()]); } - private static String removeHeadingGibberish(final String input) { - int start = 0; - for (int i = input.indexOf("://") - 1; i >= 0; i--) { - if (!input.substring(i, i + 1).matches("\\p{L}")) { - start = i + 1; - break; - } - } - return input.substring(start, input.length()); - } - - private static String trim(final String input) { - if (input == null || input.length() < 1) { - return input; - } else { - String output = input; - while (output.length() > 0 && output.substring(0, 1).matches(REGEX_REMOVE_FROM_URL)) { - output = output.substring(1); - } - while (output.length() > 0 - && output.substring(output.length() - 1, output.length()).matches(REGEX_REMOVE_FROM_URL)) { - output = output.substring(0, output.length() - 1); - } - return output; - } - } - private int getServiceIdByUrl(String url) { StreamingService[] serviceList = NewPipe.getServices(); int service = -1; diff --git a/app/src/main/java/org/schabi/newpipe/download/DownloadActivity.java b/app/src/main/java/org/schabi/newpipe/download/DownloadActivity.java index 2cf8cedc9..68fd68b63 100644 --- a/app/src/main/java/org/schabi/newpipe/download/DownloadActivity.java +++ b/app/src/main/java/org/schabi/newpipe/download/DownloadActivity.java @@ -3,18 +3,15 @@ package org.schabi.newpipe.download; import android.annotation.TargetApi; import android.app.AlertDialog; import android.app.FragmentTransaction; -import android.content.ComponentName; import android.content.Context; import android.content.Intent; -import android.content.ServiceConnection; import android.content.SharedPreferences; import android.os.Bundle; -import android.os.IBinder; import android.preference.PreferenceManager; import android.support.v4.app.NavUtils; import android.support.v7.app.ActionBar; +import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; -import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; @@ -28,32 +25,28 @@ import android.widget.SeekBar; import android.widget.TextView; import android.widget.Toast; -import org.schabi.newpipe.ThemableActivity; -import org.schabi.newpipe.report.ErrorActivity; import org.schabi.newpipe.R; +import org.schabi.newpipe.report.ErrorActivity; import org.schabi.newpipe.settings.NewPipeSettings; import org.schabi.newpipe.settings.SettingsActivity; +import org.schabi.newpipe.util.ThemeHelper; import java.io.File; import java.util.Vector; -import us.shandian.giga.get.DownloadManager; import us.shandian.giga.service.DownloadManagerService; import us.shandian.giga.ui.fragment.AllMissionsFragment; import us.shandian.giga.ui.fragment.MissionsFragment; import us.shandian.giga.util.CrashHandler; import us.shandian.giga.util.Utility; -public class DownloadActivity extends ThemableActivity implements AdapterView.OnItemClickListener{ +public class DownloadActivity extends AppCompatActivity implements AdapterView.OnItemClickListener { public static final String INTENT_DOWNLOAD = "us.shandian.giga.intent.DOWNLOAD"; public static final String INTENT_LIST = "us.shandian.giga.intent.LIST"; - - private static final String TAG = DownloadActivity.class.toString(); public static final String THREADS = "threads"; - - + private static final String TAG = DownloadActivity.class.toString(); private MissionsFragment mFragment; @@ -72,9 +65,9 @@ public class DownloadActivity extends ThemableActivity implements AdapterView.On startService(i); super.onCreate(savedInstanceState); + ThemeHelper.setTheme(this, true); setContentView(R.layout.activity_downloader); - //noinspection ConstantConditions // its ok if this fails, we will catch that error later, and send it as report diff --git a/app/src/main/java/org/schabi/newpipe/report/ErrorActivity.java b/app/src/main/java/org/schabi/newpipe/report/ErrorActivity.java index 039ed8eaa..e79f796a6 100644 --- a/app/src/main/java/org/schabi/newpipe/report/ErrorActivity.java +++ b/app/src/main/java/org/schabi/newpipe/report/ErrorActivity.java @@ -1,5 +1,3 @@ - - package org.schabi.newpipe.report; import android.app.Activity; @@ -8,14 +6,15 @@ import android.content.Intent; import android.graphics.Color; import android.net.Uri; import android.os.Build; +import android.os.Bundle; +import android.os.Handler; import android.os.Parcel; import android.os.Parcelable; import android.preference.PreferenceManager; import android.support.design.widget.Snackbar; import android.support.v4.app.NavUtils; import android.support.v7.app.ActionBar; -import android.os.Bundle; -import android.os.Handler; +import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.Menu; import android.view.MenuInflater; @@ -34,8 +33,8 @@ import org.schabi.newpipe.BuildConfig; import org.schabi.newpipe.Downloader; import org.schabi.newpipe.MainActivity; import org.schabi.newpipe.R; -import org.schabi.newpipe.ThemableActivity; import org.schabi.newpipe.extractor.Parser; +import org.schabi.newpipe.util.ThemeHelper; import java.io.PrintWriter; import java.io.StringWriter; @@ -65,65 +64,12 @@ import java.util.Vector; * along with NewPipe. If not, see . */ -public class ErrorActivity extends ThemableActivity { - public static class ErrorInfo implements Parcelable { - public int userAction; - public String request; - public String serviceName; - public int message; - - public static ErrorInfo make(int userAction, String serviceName, String request, int message) { - ErrorInfo info = new ErrorInfo(); - info.userAction = userAction; - info.serviceName = serviceName; - info.request = request; - info.message = message; - return info; - } - - @Override - public int describeContents() { - return 0; - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - dest.writeInt(this.userAction); - dest.writeString(this.request); - dest.writeString(this.serviceName); - dest.writeInt(this.message); - } - - public ErrorInfo() { - } - - protected ErrorInfo(Parcel in) { - this.userAction = in.readInt(); - this.request = in.readString(); - this.serviceName = in.readString(); - this.message = in.readInt(); - } - - public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { - @Override - public ErrorInfo createFromParcel(Parcel source) { - return new ErrorInfo(source); - } - - @Override - public ErrorInfo[] newArray(int size) { - return new ErrorInfo[size]; - } - }; - } - +public class ErrorActivity extends AppCompatActivity { // LOG TAGS public static final String TAG = ErrorActivity.class.toString(); - // BUNDLE TAGS public static final String ERROR_INFO = "error_info"; public static final String ERROR_LIST = "error_list"; - // MESSAGE ID public static final int SEARCHED = 0; public static final int REQUESTED_STREAM = 1; @@ -133,7 +79,6 @@ public class ErrorActivity extends ThemableActivity { public static final int LOAD_IMAGE = 5; public static final int UI_ERROR = 6; public static final int REQUESTED_CHANNEL = 7; - // MESSAGE STRING public static final String SEARCHED_STRING = "searched"; public static final String REQUESTED_STREAM_STRING = "requested stream"; @@ -143,17 +88,14 @@ public class ErrorActivity extends ThemableActivity { public static final String LOAD_IMAGE_STRING = "load image"; public static final String UI_ERROR_STRING = "ui error"; public static final String REQUESTED_CHANNEL_STRING = "requested channel"; - public static final String ERROR_EMAIL_ADDRESS = "crashreport@newpipe.schabi.org"; public static final String ERROR_EMAIL_SUBJECT = "Exception in NewPipe " + BuildConfig.VERSION_NAME; - + Thread globIpRangeThread; private String[] errorList; private ErrorInfo errorInfo; private Class returnActivity; private String currentTimeStamp; private String globIpRange; - Thread globIpRangeThread; - // views private TextView errorView; private EditText userCommentBox; @@ -238,9 +180,26 @@ public class ErrorActivity extends ThemableActivity { context.startActivity(intent); } + private static String getStackTrace(final Throwable throwable) { + final StringWriter sw = new StringWriter(); + final PrintWriter pw = new PrintWriter(sw, true); + throwable.printStackTrace(pw); + return sw.getBuffer().toString(); + } + + // errorList to StringList + private static String[] elToSl(List stackTraces) { + String[] out = new String[stackTraces.size()]; + for (int i = 0; i < stackTraces.size(); i++) { + out[i] = getStackTrace(stackTraces.get(i)); + } + return out; + } + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + ThemeHelper.setTheme(this, true); setContentView(R.layout.activity_error); Intent intent = getIntent(); @@ -325,13 +284,6 @@ public class ErrorActivity extends ThemableActivity { return false; } - private static String getStackTrace(final Throwable throwable) { - final StringWriter sw = new StringWriter(); - final PrintWriter pw = new PrintWriter(sw, true); - throwable.printStackTrace(pw); - return sw.getBuffer().toString(); - } - private String formErrorText(String[] el) { String text = ""; if(el != null) { @@ -468,6 +420,56 @@ public class ErrorActivity extends ThemableActivity { return df.format(new Date()); } + public static class ErrorInfo implements Parcelable { + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + @Override + public ErrorInfo createFromParcel(Parcel source) { + return new ErrorInfo(source); + } + + @Override + public ErrorInfo[] newArray(int size) { + return new ErrorInfo[size]; + } + }; + public int userAction; + public String request; + public String serviceName; + public int message; + + public ErrorInfo() { + } + + protected ErrorInfo(Parcel in) { + this.userAction = in.readInt(); + this.request = in.readString(); + this.serviceName = in.readString(); + this.message = in.readInt(); + } + + public static ErrorInfo make(int userAction, String serviceName, String request, int message) { + ErrorInfo info = new ErrorInfo(); + info.userAction = userAction; + info.serviceName = serviceName; + info.request = request; + info.message = message; + return info; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(this.userAction); + dest.writeString(this.request); + dest.writeString(this.serviceName); + dest.writeInt(this.message); + } + } + private class IpRagneRequester implements Runnable { Handler h = new Handler(); public void run() { @@ -487,8 +489,6 @@ public class ErrorActivity extends ThemableActivity { } } - - private class IpRageReturnRunnable implements Runnable { String ipRange; public IpRageReturnRunnable(String ipRange) { @@ -504,13 +504,4 @@ public class ErrorActivity extends ThemableActivity { } } } - - // errorList to StringList - private static String[] elToSl(List stackTraces) { - String[] out = new String[stackTraces.size()]; - for(int i = 0; i < stackTraces.size(); i++) { - out[i] = getStackTrace(stackTraces.get(i)); - } - return out; - } } diff --git a/app/src/main/java/org/schabi/newpipe/settings/SettingsActivity.java b/app/src/main/java/org/schabi/newpipe/settings/SettingsActivity.java index 7765f9653..1ad2747a7 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/SettingsActivity.java +++ b/app/src/main/java/org/schabi/newpipe/settings/SettingsActivity.java @@ -5,7 +5,6 @@ import android.content.Intent; import android.content.res.Configuration; import android.os.Bundle; import android.preference.PreferenceActivity; -import android.preference.PreferenceManager; import android.support.annotation.LayoutRes; import android.support.annotation.NonNull; import android.support.v7.app.ActionBar; @@ -16,8 +15,7 @@ import android.view.View; import android.view.ViewGroup; import org.schabi.newpipe.R; - -import java.util.Objects; +import org.schabi.newpipe.util.ThemeHelper; /** @@ -41,16 +39,16 @@ import java.util.Objects; */ public class SettingsActivity extends PreferenceActivity { - private AppCompatDelegate mDelegate = null; SettingsFragment f = new SettingsFragment(); + private AppCompatDelegate mDelegate = null; + + public static void initSettings(Context context) { + NewPipeSettings.initSettings(context); + } @Override protected void onCreate(Bundle savedInstanceBundle) { - if (PreferenceManager.getDefaultSharedPreferences(this) - .getString("theme", getResources().getString(R.string.light_theme_title)). - equals(getResources().getString(R.string.dark_theme_title))) { - setTheme(R.style.DarkTheme); - } + ThemeHelper.setTheme(this, true); getDelegate().installViewFactory(); getDelegate().onCreate(savedInstanceBundle); super.onCreate(savedInstanceBundle); @@ -156,8 +154,4 @@ public class SettingsActivity extends PreferenceActivity { } return true; } - - public static void initSettings(Context context) { - NewPipeSettings.initSettings(context); - } } diff --git a/app/src/main/java/org/schabi/newpipe/settings/SettingsFragment.java b/app/src/main/java/org/schabi/newpipe/settings/SettingsFragment.java index a6466daf9..206d989e4 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/SettingsFragment.java +++ b/app/src/main/java/org/schabi/newpipe/settings/SettingsFragment.java @@ -1,14 +1,12 @@ package org.schabi.newpipe.settings; import android.app.Activity; -import android.app.ListActivity; import android.content.ClipData; import android.content.Intent; import android.content.SharedPreferences; import android.net.Uri; import android.os.Build; import android.os.Bundle; -import android.preference.CheckBoxPreference; import android.preference.ListPreference; import android.preference.Preference; import android.preference.PreferenceFragment; @@ -21,7 +19,6 @@ import org.schabi.newpipe.App; import org.schabi.newpipe.R; import java.util.ArrayList; -import java.util.Objects; import info.guardianproject.netcipher.proxy.OrbotHelper; @@ -48,8 +45,8 @@ import info.guardianproject.netcipher.proxy.OrbotHelper; public class SettingsFragment extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener { + public static final int REQUEST_INSTALL_ORBOT = 0x1234; SharedPreferences.OnSharedPreferenceChangeListener prefListener; - // get keys String DEFAULT_RESOLUTION_PREFERENCE; String DEFAULT_AUDIO_FORMAT_PREFERENCE; @@ -58,9 +55,6 @@ public class SettingsFragment extends PreferenceFragment String DOWNLOAD_PATH_AUDIO_PREFERENCE; String USE_TOR_KEY; String THEME; - - public static final int REQUEST_INSTALL_ORBOT = 0x1234; - private ListPreference defaultResolutionPreference; private ListPreference defaultAudioFormatPreference; private ListPreference searchLanguagePreference; diff --git a/app/src/main/java/org/schabi/newpipe/util/ThemeHelper.java b/app/src/main/java/org/schabi/newpipe/util/ThemeHelper.java new file mode 100644 index 000000000..a4fdb72f7 --- /dev/null +++ b/app/src/main/java/org/schabi/newpipe/util/ThemeHelper.java @@ -0,0 +1,31 @@ +package org.schabi.newpipe.util; + +import android.content.Context; +import android.preference.PreferenceManager; + +import org.schabi.newpipe.R; + +public class ThemeHelper { + + public static void setTheme(Context context, boolean mode) { + // mode is true for normal theme, false for no action bar theme. + + String themeKey = context.getString(R.string.theme_key); + //String lightTheme = context.getResources().getString(R.string.light_theme_title); + String darkTheme = context.getResources().getString(R.string.dark_theme_title); + String blackTheme = context.getResources().getString(R.string.black_theme_title); + + String sp = PreferenceManager.getDefaultSharedPreferences(context) + .getString(themeKey, context.getResources().getString(R.string.light_theme_title)); + + if (mode) { + if (sp.equals(darkTheme)) context.setTheme(R.style.DarkTheme); + else if (sp.equals(blackTheme)) context.setTheme(R.style.BlackTheme); + else context.setTheme(R.style.AppTheme); + } else { + if (sp.equals(darkTheme)) context.setTheme(R.style.DarkTheme_NoActionBar); + else if (sp.equals(blackTheme)) context.setTheme(R.style.BlackTheme_NoActionBar); + else context.setTheme(R.style.AppTheme_NoActionBar); + } + } +} diff --git a/app/src/main/res/drawable-v21/splash_screen.xml b/app/src/main/res/drawable-v21/splash_screen.xml new file mode 100644 index 000000000..34a890727 --- /dev/null +++ b/app/src/main/res/drawable-v21/splash_screen.xml @@ -0,0 +1,12 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/splash_screen.xml b/app/src/main/res/drawable/splash_screen.xml index e049c2941..c016189ac 100644 --- a/app/src/main/res/drawable/splash_screen.xml +++ b/app/src/main/res/drawable/splash_screen.xml @@ -2,7 +2,7 @@ + android:drawable="windowBackground"/> @string/light_theme_title @string/dark_theme_title + @string/black_theme_title @string/light_theme_title @string/dark_theme_title + @string/black_theme_title default_audio_format diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 66204d0c8..ec05f2ca3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -49,6 +49,7 @@ Light Dark Black + Theme will be applied on next launch. Download diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 2339c12a5..22cc59274 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -49,6 +49,10 @@ @drawable/ic_rss_feed_black_24dp + + + +