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