Commit 5bf7e5c6 authored by Varun Patil's avatar Varun Patil

Add dark theme to settings

parent e85df5b3
...@@ -14,13 +14,13 @@ import android.support.transition.Slide; ...@@ -14,13 +14,13 @@ import android.support.transition.Slide;
import android.support.transition.Transition; import android.support.transition.Transition;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction; import android.support.v4.app.FragmentTransaction;
import android.util.TypedValue; import android.util.TypedValue;
import android.view.View; import android.view.View;
import android.webkit.CookieManager; import android.webkit.CookieManager;
import android.widget.Button; import android.widget.Button;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.Toast;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.squareup.picasso.Callback; import com.squareup.picasso.Callback;
...@@ -29,7 +29,6 @@ import com.squareup.picasso.Picasso; ...@@ -29,7 +29,6 @@ import com.squareup.picasso.Picasso;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import app.insti.activity.MainActivity;
import app.insti.api.RetrofitInterface; import app.insti.api.RetrofitInterface;
import app.insti.api.model.Body; import app.insti.api.model.Body;
import app.insti.api.model.Event; import app.insti.api.model.Event;
...@@ -37,6 +36,7 @@ import app.insti.api.model.Notification; ...@@ -37,6 +36,7 @@ import app.insti.api.model.Notification;
import app.insti.api.model.User; import app.insti.api.model.User;
import app.insti.fragment.BodyFragment; import app.insti.fragment.BodyFragment;
import app.insti.fragment.EventFragment; import app.insti.fragment.EventFragment;
import app.insti.fragment.SettingsFragment;
import app.insti.fragment.TransitionTargetChild; import app.insti.fragment.TransitionTargetChild;
import app.insti.fragment.TransitionTargetFragment; import app.insti.fragment.TransitionTargetFragment;
import app.insti.fragment.UserFragment; import app.insti.fragment.UserFragment;
...@@ -49,7 +49,6 @@ public final class Utils { ...@@ -49,7 +49,6 @@ public final class Utils {
private static String sessionId; private static String sessionId;
private static RetrofitInterface retrofitInterface; private static RetrofitInterface retrofitInterface;
public static Gson gson; public static Gson gson;
public static boolean darkTheme = false;
public static final void loadImageWithPlaceholder(final ImageView imageView, final String url) { public static final void loadImageWithPlaceholder(final ImageView imageView, final String url) {
Picasso.get() Picasso.get()
...@@ -231,18 +230,22 @@ public final class Utils { ...@@ -231,18 +230,22 @@ public final class Utils {
Utils.gson = new Gson(); Utils.gson = new Gson();
} }
public static void changeTheme(FragmentActivity context) { public static void changeTheme(SettingsFragment fragment, boolean darkTheme) {
if (darkTheme) { FragmentActivity fragmentActivity = fragment.getActivity();
context.setTheme(R.style.AppTheme); fragmentActivity.setTheme(darkTheme ? R.style.AppThemeDark : R.style.AppTheme);
} else {
Toast.makeText(context, "You have unlocked super max pro mode", Toast.LENGTH_SHORT).show(); // Set background color of activity
context.setTheme(R.style.AppThemeDark); fragmentActivity.findViewById(R.id.drawer_layout).setBackgroundColor(
} getAttrColor(fragmentActivity, R.attr.themeColor));
darkTheme = !darkTheme;
Intent intent = new Intent(context, MainActivity.class); // Put in a new settings fragment
context.startActivity(intent); Fragment newFragment = new SettingsFragment();
context.overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); newFragment.setArguments(fragment.getArguments());
context.finish(); FragmentManager fm = fragmentActivity.getSupportFragmentManager();
fm.popBackStack();
FragmentTransaction ft = fm.beginTransaction();
ft.addToBackStack(newFragment.getTag());
ft.replace(R.id.framelayout_for_fragment, newFragment, newFragment.getTag()).commit();
} }
public static void setSelectedMenuItem(Activity activity, int id) { public static void setSelectedMenuItem(Activity activity, int id) {
......
...@@ -25,10 +25,8 @@ import android.support.v7.app.ActionBarDrawerToggle; ...@@ -25,10 +25,8 @@ import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity; import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar; import android.support.v7.widget.Toolbar;
import android.util.Log; import android.util.Log;
import android.view.GestureDetector;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View; import android.view.View;
import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodManager;
import android.widget.ImageView; import android.widget.ImageView;
...@@ -115,9 +113,6 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On ...@@ -115,9 +113,6 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
@SuppressLint("ClickableViewAccessibility") @SuppressLint("ClickableViewAccessibility")
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
if (Utils.darkTheme) {
setTheme(R.style.AppThemeDark_NoActionBar);
}
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
ServiceGenerator serviceGenerator = new ServiceGenerator(getApplicationContext()); ServiceGenerator serviceGenerator = new ServiceGenerator(getApplicationContext());
...@@ -159,22 +154,6 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On ...@@ -159,22 +154,6 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
} }
} }
toolbar.setOnTouchListener(new View.OnTouchListener() {
private GestureDetector gestureDetector = new GestureDetector(MainActivity.this, new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onDoubleTap(MotionEvent e) {
Utils.changeTheme(MainActivity.this);
return super.onDoubleTap(e);
}
});
@Override
public boolean onTouch(View v, MotionEvent event) {
gestureDetector.onTouchEvent(event);
return true;
}
});
checkLatestVersion(); checkLatestVersion();
} }
......
...@@ -23,6 +23,7 @@ import retrofit2.Response; ...@@ -23,6 +23,7 @@ import retrofit2.Response;
public class SettingsFragment extends PreferenceFragmentCompat { public class SettingsFragment extends PreferenceFragmentCompat {
SwitchPreferenceCompat showContactPref; SwitchPreferenceCompat showContactPref;
SwitchPreferenceCompat darkThemePref;
Preference profilePref; Preference profilePref;
Preference feedbackPref; Preference feedbackPref;
Preference aboutPref; Preference aboutPref;
...@@ -43,6 +44,16 @@ public class SettingsFragment extends PreferenceFragmentCompat { ...@@ -43,6 +44,16 @@ public class SettingsFragment extends PreferenceFragmentCompat {
}); });
showContactPref.setEnabled(false); showContactPref.setEnabled(false);
// Dark Theme
darkThemePref = (SwitchPreferenceCompat) findPreference("dark_theme");
darkThemePref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object o) {
toggleDarkTheme((SwitchPreferenceCompat) preference, o);
return true;
}
});
// Update Profile // Update Profile
profilePref = findPreference("profile"); profilePref = findPreference("profile");
profilePref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { profilePref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
...@@ -146,6 +157,10 @@ public class SettingsFragment extends PreferenceFragmentCompat { ...@@ -146,6 +157,10 @@ public class SettingsFragment extends PreferenceFragmentCompat {
}); });
} }
public void toggleDarkTheme(final SwitchPreferenceCompat showContactPref, Object o) {
Utils.changeTheme(this, (boolean) o);
}
public void openAbout() { public void openAbout() {
Utils.updateFragment(new AboutFragment(), getActivity()); Utils.updateFragment(new AboutFragment(), getActivity());
} }
......
<vector android:height="36dp" android:tint="#767676"
android:viewportHeight="24.0" android:viewportWidth="24.0"
android:width="36dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M12,3c-4.97,0 -9,4.03 -9,9s4.03,9 9,9c0.83,0 1.5,-0.67 1.5,-1.5 0,-0.39 -0.15,-0.74 -0.39,-1.01 -0.23,-0.26 -0.38,-0.61 -0.38,-0.99 0,-0.83 0.67,-1.5 1.5,-1.5L16,16c2.76,0 5,-2.24 5,-5 0,-4.42 -4.03,-8 -9,-8zM6.5,12c-0.83,0 -1.5,-0.67 -1.5,-1.5S5.67,9 6.5,9 8,9.67 8,10.5 7.33,12 6.5,12zM9.5,8C8.67,8 8,7.33 8,6.5S8.67,5 9.5,5s1.5,0.67 1.5,1.5S10.33,8 9.5,8zM14.5,8c-0.83,0 -1.5,-0.67 -1.5,-1.5S13.67,5 14.5,5s1.5,0.67 1.5,1.5S15.33,8 14.5,8zM17.5,12c-0.83,0 -1.5,-0.67 -1.5,-1.5S16.67,9 17.5,9s1.5,0.67 1.5,1.5 -0.67,1.5 -1.5,1.5z"/>
</vector>
...@@ -9,6 +9,12 @@ ...@@ -9,6 +9,12 @@
app:summary="Toggle visibility on your profile" app:summary="Toggle visibility on your profile"
android:icon="@drawable/ic_local_phone_gray_36dp"/> android:icon="@drawable/ic_local_phone_gray_36dp"/>
<SwitchPreferenceCompat
app:key="dark_theme"
app:title="Dark Theme"
app:summary="Note: this feature is in beta"
android:icon="@drawable/ic_color_lens_gray_36dp"/>
<Preference <Preference
app:key="profile" app:key="profile"
app:title="Update Profile" app:title="Update Profile"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment