Skip to content

Commit 7c550ed

Browse files
committed
Merge 'up-10/change-font-feature' into branch
2 parents 9232dcc + cfb58dc commit 7c550ed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+842
-78
lines changed

app/build.gradle

+8
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,10 @@ android {
118118
// Disables dependency metadata when building Android App Bundles.
119119
includeInBundle = false
120120
}
121+
122+
buildFeatures {
123+
aidl true // REVIEW up-10
124+
}
121125
}
122126

123127
ext {
@@ -255,6 +259,10 @@ dependencies {
255259
implementation "com.evernote:android-state:$stateSaverVersion"
256260
kapt "com.evernote:android-state-processor:$stateSaverVersion"
257261

262+
// changing fonts
263+
implementation 'com.github.MarcinOrlowski:fonty:3.1.5'
264+
265+
258266
// HTML parser
259267
implementation "org.jsoup:jsoup:1.17.2"
260268

74.8 KB
Binary file not shown.

app/src/main/assets/fonts/BELL.TTF

82.9 KB
Binary file not shown.

app/src/main/assets/fonts/BROADW.TTF

59 KB
Binary file not shown.

app/src/main/assets/fonts/arial.ttf

1020 KB
Binary file not shown.
1.17 MB
Binary file not shown.

app/src/main/assets/fonts/times.ttf

1.15 MB
Binary file not shown.

app/src/main/java/org/schabi/newpipe/App.java

+1
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ public void onCreate() {
120120
configureRxJavaErrorHandler();
121121
}
122122

123+
123124
@Override
124125
public void onTerminate() {
125126
super.onTerminate();

app/src/main/java/org/schabi/newpipe/MainActivity.java

+53-1
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
import androidx.preference.PreferenceManager;
5858

5959
import com.google.android.material.bottomsheet.BottomSheetBehavior;
60+
import com.marcinorlowski.fonty.Fonty;
6061

6162
import org.schabi.newpipe.databinding.ActivityMainBinding;
6263
import org.schabi.newpipe.databinding.DrawerHeaderBinding;
@@ -130,6 +131,9 @@ public class MainActivity extends AppCompatActivity {
130131

131132
@Override
132133
protected void onCreate(final Bundle savedInstanceState) {
134+
// Apply the preferred font globally
135+
final String preferredFont = getPreferredFont(this);
136+
setUpFont(preferredFont);
133137
if (DEBUG) {
134138
Log.d(TAG, "onCreate() called with: "
135139
+ "savedInstanceState = [" + savedInstanceState + "]");
@@ -174,9 +178,13 @@ protected void onCreate(final Bundle savedInstanceState) {
174178
&& ReleaseVersionUtil.INSTANCE.isReleaseApk()) {
175179
UpdateSettingsFragment.askForConsentToUpdateChecks(this);
176180
}
181+
if (!preferredFont.equals(getString(R.string.default_font_key))) {
182+
Fonty.setFonts(this);
183+
}
184+
177185
}
178186

179-
@Override
187+
@Override
180188
protected void onPostCreate(final Bundle savedInstanceState) {
181189
super.onPostCreate(savedInstanceState);
182190

@@ -190,6 +198,50 @@ protected void onPostCreate(final Bundle savedInstanceState) {
190198
NewVersionWorker.enqueueNewVersionCheckingWork(app, false);
191199
}
192200
}
201+
public String getPreferredFont(final Context context) {
202+
final SharedPreferences preferences = PreferenceManager
203+
.getDefaultSharedPreferences(context);
204+
return preferences.getString("preferred_font", getString(R.string.default_font_key));
205+
}
206+
207+
public void setUpFont(final String preferredFont) {
208+
switch (preferredFont) {
209+
case "Arial":
210+
Fonty.context(this)
211+
.normalTypeface("arial.ttf")
212+
.build();
213+
break;
214+
case "Broadway":
215+
Fonty.context(this)
216+
.normalTypeface("BROADW.TTF")
217+
.build();
218+
break;
219+
case "Algerian":
220+
Fonty.context(this)
221+
.normalTypeface("Algerian.TTF")
222+
.build();
223+
break;
224+
case "Bell MT":
225+
Fonty.context(this)
226+
.normalTypeface("BELL.TTF")
227+
.build();
228+
break;
229+
case "Calibri":
230+
Fonty.context(this)
231+
.normalTypeface("calibrii.ttf")
232+
.build();
233+
break;
234+
case "Time New Roman":
235+
Fonty.context(this)
236+
.normalTypeface("times.ttf")
237+
.build();
238+
break;
239+
default:
240+
// do nothing
241+
break;
242+
}
243+
244+
}
193245

194246
private void setupDrawer() throws ExtractionException {
195247
addDrawerMenuForCurrentService();

app/src/main/java/org/schabi/newpipe/RouterActivity.java

+12
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343

4444
import com.evernote.android.state.State;
4545
import com.livefront.bridge.Bridge;
46+
import com.marcinorlowski.fonty.Fonty; // REVIEW up-10
4647

4748
import org.schabi.newpipe.database.stream.model.StreamEntity;
4849
import org.schabi.newpipe.databinding.ListRadioIconItemBinding;
@@ -129,6 +130,7 @@ public class RouterActivity extends AppCompatActivity {
129130

130131
@Override
131132
protected void onCreate(final Bundle savedInstanceState) {
133+
final String preferredFont = getPreferredFont(this);
132134
ThemeHelper.setDayNightMode(this);
133135
setTheme(ThemeHelper.isLightThemeSelected(this)
134136
? R.style.RouterActivityThemeLight : R.style.RouterActivityThemeDark);
@@ -184,7 +186,17 @@ public void onFragmentDestroyed(@NonNull final FragmentManager fm,
184186
finish();
185187
}
186188
}
189+
190+
if (!preferredFont.equals(getString(R.string.default_font_key))) {
191+
Fonty.setFonts(this);
192+
}
187193
}
194+
public String getPreferredFont(final Context context) {
195+
final SharedPreferences preferences = PreferenceManager
196+
.getDefaultSharedPreferences(context);
197+
return preferences.getString("preferred_font", getString(R.string.default_font_key));
198+
}
199+
188200

189201
@Override
190202
protected void onStop() {

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

+12
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.schabi.newpipe.about
22

3+
import android.content.Context
34
import android.os.Bundle
45
import android.view.LayoutInflater
56
import android.view.MenuItem
@@ -10,8 +11,10 @@ import androidx.annotation.StringRes
1011
import androidx.appcompat.app.AppCompatActivity
1112
import androidx.fragment.app.Fragment
1213
import androidx.fragment.app.FragmentActivity
14+
import androidx.preference.PreferenceManager
1315
import androidx.viewpager2.adapter.FragmentStateAdapter
1416
import com.google.android.material.tabs.TabLayoutMediator
17+
import com.marcinorlowski.fonty.Fonty
1518
import org.schabi.newpipe.BuildConfig
1619
import org.schabi.newpipe.R
1720
import org.schabi.newpipe.databinding.ActivityAboutBinding
@@ -44,6 +47,15 @@ class AboutActivity : AppCompatActivity() {
4447
) { tab, position ->
4548
tab.setText(mAboutStateAdapter.getPageTitle(position))
4649
}.attach()
50+
val preferredFont = getPreferredFont(this)
51+
if (!preferredFont.equals(getString(R.string.default_font_key))) {
52+
Fonty.setFonts(this)
53+
}
54+
}
55+
fun getPreferredFont(context: Context?): String? {
56+
val preferences = PreferenceManager
57+
.getDefaultSharedPreferences(context!!)
58+
return preferences.getString("preferred_font", getString(R.string.default_font_key))
4759
}
4860

4961
override fun onOptionsItemSelected(item: MenuItem): Boolean {

app/src/main/java/org/schabi/newpipe/download/DownloadActivity.java

+15
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package org.schabi.newpipe.download;
22

3+
import android.content.Context;
34
import android.content.Intent;
5+
import android.content.SharedPreferences;
46
import android.os.Bundle;
57
import android.view.Menu;
68
import android.view.MenuInflater;
@@ -10,6 +12,7 @@
1012
import androidx.appcompat.app.ActionBar;
1113
import androidx.appcompat.app.AppCompatActivity;
1214
import androidx.fragment.app.FragmentTransaction;
15+
import androidx.preference.PreferenceManager;
1316

1417
import org.schabi.newpipe.R;
1518
import org.schabi.newpipe.databinding.ActivityDownloaderBinding;
@@ -22,6 +25,8 @@
2225

2326
import static org.schabi.newpipe.util.Localization.assureCorrectAppLanguage;
2427

28+
import com.marcinorlowski.fonty.Fonty;
29+
2530
public class DownloadActivity extends AppCompatActivity {
2631

2732
private static final String MISSIONS_FRAGMENT_TAG = "fragment_tag";
@@ -63,6 +68,10 @@ public void onGlobalLayout() {
6368
if (DeviceUtils.isTv(this)) {
6469
FocusOverlayView.setupFocusObserver(this);
6570
}
71+
final String preferredFont = getPreferredFont(this);
72+
if (!preferredFont.equals(getString(R.string.default_font_key))) {
73+
Fonty.setFonts(this);
74+
}
6675
}
6776

6877
private void updateFragments() {
@@ -73,6 +82,12 @@ private void updateFragments() {
7382
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
7483
.commit();
7584
}
85+
public String getPreferredFont(final Context context) {
86+
final SharedPreferences preferences = PreferenceManager
87+
.getDefaultSharedPreferences(context);
88+
return preferences.getString("preferred_font", getString(R.string.default_font_key));
89+
}
90+
7691

7792
@Override
7893
public boolean onCreateOptionsMenu(final Menu menu) {

app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java

+16-4
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141

4242
import com.evernote.android.state.State;
4343
import com.livefront.bridge.Bridge;
44+
import com.marcinorlowski.fonty.Fonty; // REVIEW up-10
4445
import com.nononsenseapps.filepicker.Utils;
4546

4647
import org.schabi.newpipe.MainActivity;
@@ -117,7 +118,6 @@ public class DownloadDialog extends DialogFragment
117118
private ActionMenuItemView okButton = null;
118119
private Context context = null;
119120
private boolean askForSavePath;
120-
121121
private AudioTrackAdapter audioTrackAdapter;
122122
private StreamItemAdapter<AudioStream, Stream> audioStreamsAdapter;
123123
private StreamItemAdapter<VideoStream, AudioStream> videoStreamsAdapter;
@@ -152,7 +152,6 @@ public DownloadDialog() {
152152
// otherwise InstantiationException will be thrown when fragment is recreated
153153
// TODO: Maybe use a custom FragmentFactory instead?
154154
}
155-
156155
/**
157156
* Create a new download dialog with the video, audio and subtitle streams from the provided
158157
* stream info. Video streams and video-only streams will be put into a single list menu,
@@ -245,6 +244,7 @@ public void onServiceDisconnected(final ComponentName name) {
245244
}, Context.BIND_AUTO_CREATE);
246245
}
247246

247+
248248
/**
249249
* Update the displayed video streams based on the selected audio track.
250250
*/
@@ -287,10 +287,22 @@ public View onCreateView(@NonNull final LayoutInflater inflater,
287287
+ "inflater = [" + inflater + "], container = [" + container + "], "
288288
+ "savedInstanceState = [" + savedInstanceState + "]");
289289
}
290-
return inflater.inflate(R.layout.download_dialog, container);
290+
final View view = inflater.inflate(R.layout.download_dialog, container);
291+
final String preferredFont = getPreferredFont(view.getContext());
292+
if (!preferredFont.equals(getString(R.string.default_font_key))) {
293+
Fonty.setFonts((ViewGroup) view);
294+
}
295+
return view;
291296
}
292297

293-
@Override
298+
public String getPreferredFont(final Context cont) {
299+
final SharedPreferences preferences = PreferenceManager
300+
.getDefaultSharedPreferences(cont);
301+
return preferences.getString("preferred_font", getString(R.string.default_font_key));
302+
}
303+
304+
305+
@Override
294306
public void onViewCreated(@NonNull final View view,
295307
@Nullable final Bundle savedInstanceState) {
296308
super.onViewCreated(view, savedInstanceState);

app/src/main/java/org/schabi/newpipe/error/ErrorActivity.java

+15
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import android.content.Context;
66
import android.content.Intent;
7+
import android.content.SharedPreferences;
78
import android.net.Uri;
89
import android.os.Build;
910
import android.os.Bundle;
@@ -16,8 +17,10 @@
1617
import androidx.appcompat.app.AlertDialog;
1718
import androidx.appcompat.app.AppCompatActivity;
1819
import androidx.core.content.IntentCompat;
20+
import androidx.preference.PreferenceManager;
1921

2022
import com.grack.nanojson.JsonWriter;
23+
import com.marcinorlowski.fonty.Fonty;
2124

2225
import org.schabi.newpipe.BuildConfig;
2326
import org.schabi.newpipe.R;
@@ -83,6 +86,8 @@ public class ErrorActivity extends AppCompatActivity {
8386

8487
@Override
8588
protected void onCreate(final Bundle savedInstanceState) {
89+
final String preferredFont = getPreferredFont(this);
90+
8691
assureCorrectAppLanguage(this);
8792
super.onCreate(savedInstanceState);
8893

@@ -127,6 +132,9 @@ protected void onCreate(final Bundle savedInstanceState) {
127132
for (final String e : errorInfo.getStackTraces()) {
128133
Log.e(TAG, e);
129134
}
135+
if (!preferredFont.equals(getString(R.string.default_font_key))) {
136+
Fonty.setFonts(this);
137+
}
130138
}
131139

132140
@Override
@@ -150,6 +158,13 @@ public boolean onOptionsItemSelected(final MenuItem item) {
150158
return false;
151159
}
152160
}
161+
public String getPreferredFont(final Context context) {
162+
final SharedPreferences preferences = PreferenceManager
163+
.getDefaultSharedPreferences(context);
164+
return preferences.getString("preferred_font", getString(R.string.default_font_key));
165+
}
166+
167+
153168

154169
private void openPrivacyPolicyDialog(final Context context, final String action) {
155170
new AlertDialog.Builder(context)

app/src/main/java/org/schabi/newpipe/error/ReCaptchaActivity.java

+14
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.schabi.newpipe.error;
22

33
import android.annotation.SuppressLint;
4+
import android.content.Context;
45
import android.content.Intent;
56
import android.content.SharedPreferences;
67
import android.os.Bundle;
@@ -20,6 +21,8 @@
2021
import androidx.core.app.NavUtils;
2122
import androidx.preference.PreferenceManager;
2223

24+
import com.marcinorlowski.fonty.Fonty;
25+
2326
import org.schabi.newpipe.DownloaderImpl;
2427
import org.schabi.newpipe.MainActivity;
2528
import org.schabi.newpipe.R;
@@ -68,6 +71,7 @@ public static String sanitizeRecaptchaUrl(@Nullable final String url) {
6871
@SuppressLint("SetJavaScriptEnabled")
6972
@Override
7073
protected void onCreate(final Bundle savedInstanceState) {
74+
final String preferredFont = getPreferredFont(this);
7175
ThemeHelper.setTheme(this);
7276
super.onCreate(savedInstanceState);
7377

@@ -109,6 +113,10 @@ public void onPageFinished(final WebView view, final String url) {
109113
CookieManager.getInstance().removeAllCookies(null);
110114

111115
recaptchaBinding.reCaptchaWebView.loadUrl(url);
116+
117+
if (!preferredFont.equals(getString(R.string.default_font_key))) {
118+
Fonty.setFonts(this);
119+
}
112120
}
113121

114122
@Override
@@ -129,6 +137,12 @@ public boolean onCreateOptionsMenu(final Menu menu) {
129137
public void onBackPressed() {
130138
saveCookiesAndFinish();
131139
}
140+
public String getPreferredFont(final Context context) {
141+
final SharedPreferences preferences = PreferenceManager
142+
.getDefaultSharedPreferences(context);
143+
return preferences.getString("preferred_font", getString(R.string.default_font_key));
144+
}
145+
132146

133147
@Override
134148
public boolean onOptionsItemSelected(final MenuItem item) {

0 commit comments

Comments
 (0)