diff --git a/app/src/main/java/org/fdroid/fdroid/AppDetails2.java b/app/src/main/java/org/fdroid/fdroid/AppDetails2.java index 40f17cb55..7bd70df9a 100644 --- a/app/src/main/java/org/fdroid/fdroid/AppDetails2.java +++ b/app/src/main/java/org/fdroid/fdroid/AppDetails2.java @@ -98,7 +98,7 @@ public class AppDetails2 extends AppCompatActivity implements ShareChooserDialog @Override protected void onCreate(Bundle savedInstanceState) { fdroidApp = (FDroidApp) getApplication(); - //fdroidApp.applyTheme(this); + fdroidApp.applyTheme(this); super.onCreate(savedInstanceState); setContentView(R.layout.app_details2); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); diff --git a/app/src/main/java/org/fdroid/fdroid/FDroidApp.java b/app/src/main/java/org/fdroid/fdroid/FDroidApp.java index ed95dedef..fa3a435de 100644 --- a/app/src/main/java/org/fdroid/fdroid/FDroidApp.java +++ b/app/src/main/java/org/fdroid/fdroid/FDroidApp.java @@ -143,6 +143,24 @@ public class FDroidApp extends Application { } } + /** + * Force reload the {@link Activity to make theme changes take effect.} + * Same as {@link Languages.forceChangeLanguage} + * + * @param activity the {@code Activity} to force reload + */ + public static void forceChangeTheme(Activity activity) { + Intent intent = activity.getIntent(); + if (intent == null) { // when launched as LAUNCHER + return; + } + intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); + activity.finish(); + activity.overridePendingTransition(0, 0); + activity.startActivity(intent); + activity.overridePendingTransition(0, 0); + } + public static void enableSpongyCastle() { Security.addProvider(SPONGYCASTLE_PROVIDER); } diff --git a/app/src/main/java/org/fdroid/fdroid/privileged/views/AppSecurityPermissions.java b/app/src/main/java/org/fdroid/fdroid/privileged/views/AppSecurityPermissions.java index 06d703b63..95fc23076 100644 --- a/app/src/main/java/org/fdroid/fdroid/privileged/views/AppSecurityPermissions.java +++ b/app/src/main/java/org/fdroid/fdroid/privileged/views/AppSecurityPermissions.java @@ -26,6 +26,7 @@ import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.PermissionGroupInfo; import android.content.pm.PermissionInfo; +import android.graphics.Color; import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Parcel; @@ -43,6 +44,8 @@ import android.widget.LinearLayout; import android.widget.TextView; import org.fdroid.fdroid.R; +import org.fdroid.fdroid.Preferences; +import org.fdroid.fdroid.Preferences.Theme; import java.text.Collator; import java.util.ArrayList; @@ -172,7 +175,9 @@ public class AppSecurityPermissions { label = builder; } + Theme theme = Preferences.get().getTheme(); permGrpIcon.setImageDrawable(icon); + permGrpIcon.setColorFilter(theme == Theme.light ? Color.BLACK : Color.WHITE); permNameView.setText(label); setOnClickListener(this); } diff --git a/app/src/main/java/org/fdroid/fdroid/views/fragments/PreferencesFragment.java b/app/src/main/java/org/fdroid/fdroid/views/fragments/PreferencesFragment.java index ed50137d5..a4e6cdd3a 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/fragments/PreferencesFragment.java +++ b/app/src/main/java/org/fdroid/fdroid/views/fragments/PreferencesFragment.java @@ -17,6 +17,7 @@ import info.guardianproject.netcipher.NetCipher; import info.guardianproject.netcipher.proxy.OrbotHelper; import org.fdroid.fdroid.AppDetails2; import org.fdroid.fdroid.CleanCacheService; +import org.fdroid.fdroid.FDroidApp; import org.fdroid.fdroid.Languages; import org.fdroid.fdroid.Preferences; import org.fdroid.fdroid.R; @@ -52,6 +53,7 @@ public class PreferencesFragment extends PreferenceFragment private Preference updateAutoDownloadPref; private Preference updatePrivilegedExtensionPref; private long currentKeepCacheTime; + private FDroidApp fdroidApp; @Override public void onCreate(Bundle savedInstanceState) { @@ -111,7 +113,13 @@ public class PreferencesFragment extends PreferenceFragment case Preferences.PREF_THEME: entrySummary(key); - // TODO: Ask MainActivity to restart itself. + if (changing) { + Activity activity = getActivity(); + fdroidApp = (FDroidApp) activity.getApplication(); + fdroidApp.reloadTheme(); + fdroidApp.applyTheme(activity); + fdroidApp.forceChangeTheme(activity); + } break; case Preferences.PREF_INCOMP_VER: diff --git a/app/src/main/java/org/fdroid/fdroid/views/main/MainActivity.java b/app/src/main/java/org/fdroid/fdroid/views/main/MainActivity.java index 1461fc582..839626207 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/main/MainActivity.java +++ b/app/src/main/java/org/fdroid/fdroid/views/main/MainActivity.java @@ -69,6 +69,7 @@ public class MainActivity extends AppCompatActivity implements BottomNavigationB @Override protected void onCreate(@Nullable Bundle savedInstanceState) { + ((FDroidApp) getApplication()).applyTheme(this); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); diff --git a/app/src/main/res/drawable/category_preview_app_card_background.xml b/app/src/main/res/drawable/category_preview_app_card_background.xml index b2eb1a1fa..ac7b975e2 100644 --- a/app/src/main/res/drawable/category_preview_app_card_background.xml +++ b/app/src/main/res/drawable/category_preview_app_card_background.xml @@ -5,5 +5,5 @@ --> - - \ No newline at end of file + + diff --git a/app/src/main/res/layout/app_details2.xml b/app/src/main/res/layout/app_details2.xml index b435f3089..cb7a67242 100644 --- a/app/src/main/res/layout/app_details2.xml +++ b/app/src/main/res/layout/app_details2.xml @@ -6,7 +6,7 @@ android:layout_height="match_parent" android:fitsSystemWindows="true" tools:context="org.fdroid.fdroid.AppDetails2" - android:background="#fcfcfc" + android:background="?attr/appDetailsBackground" android:id="@+id/rootCoordinator" > diff --git a/app/src/main/res/layout/app_details2_header.xml b/app/src/main/res/layout/app_details2_header.xml index c2b3ada6c..b9d242400 100755 --- a/app/src/main/res/layout/app_details2_header.xml +++ b/app/src/main/res/layout/app_details2_header.xml @@ -5,7 +5,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="@dimen/details_activity_padding" - app:cardBackgroundColor="#ffffff" + app:cardBackgroundColor="?attr/appDetailsCardBackground" app:cardCornerRadius="3dp" app:cardElevation="3dp"> diff --git a/app/src/main/res/layout/app_permission_item.xml b/app/src/main/res/layout/app_permission_item.xml index ff3487840..366c1e07d 100644 --- a/app/src/main/res/layout/app_permission_item.xml +++ b/app/src/main/res/layout/app_permission_item.xml @@ -32,8 +32,7 @@ android:layout_marginStart="16dp" android:layout_marginRight="8dp" android:layout_marginEnd="8dp" - android:scaleType="fitCenter" - android:tint="@android:color/black" /> + android:scaleType="fitCenter" /> + android:background="?attr/mainTabSwapBackground"> \ No newline at end of file diff --git a/app/src/main/res/layout/updateable_app_list_item.xml b/app/src/main/res/layout/updateable_app_list_item.xml index 1ee83c0e4..eba1cad05 100644 --- a/app/src/main/res/layout/updateable_app_list_item.xml +++ b/app/src/main/res/layout/updateable_app_list_item.xml @@ -31,7 +31,7 @@ android:layout_height="wrap_content" tools:text="F-Droid Application manager with a long name that will wrap and then ellipsize" android:textSize="16sp" - android:textColor="#424242" + android:textColor="?attr/installedApps" android:lines="1" android:ellipsize="end" android:layout_marginStart="8dp" diff --git a/app/src/main/res/layout/updateable_app_status_item.xml b/app/src/main/res/layout/updateable_app_status_item.xml index 2b2251e43..0a1178a94 100644 --- a/app/src/main/res/layout/updateable_app_status_item.xml +++ b/app/src/main/res/layout/updateable_app_status_item.xml @@ -27,7 +27,7 @@ android:layout_height="wrap_content" tools:text="F-Droid Application manager with a long name that will wrap and then ellipsize" android:textSize="16sp" - android:textColor="#424242" + android:textColor="?attr/installedApps" android:maxLines="2" android:ellipsize="end" app:layout_constraintStart_toEndOf="@+id/icon" diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml new file mode 100644 index 000000000..0c2ed749a --- /dev/null +++ b/app/src/main/res/values/attrs.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index dcb4eaee0..99cc251e6 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -12,6 +12,13 @@ @style/TextViewStyle @style/AppThemeLight.Toolbar @style/AppThemeLight.Toolbar + #0c0c0c + #000000 + #000000 + #0a0a0a + #050505 + #ffffff + #ffffff