Skip to content

Commit 77d0e9a

Browse files
committed
add dark theme
1 parent 4d91c3d commit 77d0e9a

File tree

15 files changed

+108
-13
lines changed

15 files changed

+108
-13
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,18 @@
2929

3030
<activity
3131
android:name=".activities.AboutActivity"
32-
android:label="@string/about"/>
32+
android:label="@string/about"
33+
android:parentActivityName=".activities.MainActivity"/>
3334

3435
<activity
3536
android:name=".activities.LicenseActivity"
36-
android:label="@string/third_party_licences"/>
37+
android:label="@string/third_party_licences"
38+
android:parentActivityName=".activities.AboutActivity"/>
3739

3840
<activity
3941
android:name=".activities.SettingsActivity"
40-
android:label="@string/settings"/>
42+
android:label="@string/settings"
43+
android:parentActivityName=".activities.MainActivity"/>
4144

4245
<receiver
4346
android:name=".MyWidgetProvider"

app/src/main/java/com/simplemobiletools/notes/Config.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,14 @@ public void setIsFirstRun(boolean firstRun) {
2222
mPrefs.edit().putBoolean(Constants.IS_FIRST_RUN, firstRun).apply();
2323
}
2424

25+
public boolean getIsDarkTheme() {
26+
return mPrefs.getBoolean(Constants.IS_DARK_THEME, false);
27+
}
28+
29+
public void setIsDarkTheme(boolean isDarkTheme) {
30+
mPrefs.edit().putBoolean(Constants.IS_DARK_THEME, isDarkTheme).apply();
31+
}
32+
2533
public boolean getIsAutosaveEnabled() {
2634
return mPrefs.getBoolean(Constants.AUTOSAVE, false);
2735
}

app/src/main/java/com/simplemobiletools/notes/Constants.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ public class Constants {
66
// shared preferences
77
public static final String PREFS_KEY = "Notes";
88
public static final String IS_FIRST_RUN = "is_first_run";
9+
public static final String IS_DARK_THEME = "is_dark_theme";
910
public static final String AUTOSAVE = "autosave";
1011
public static final String WIDGET_BG_COLOR = "widget_bg_color";
1112
public static final String WIDGET_TEXT_COLOR = "widget_text_color";

app/src/main/java/com/simplemobiletools/notes/activities/AboutActivity.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import android.content.res.Resources;
66
import android.net.Uri;
77
import android.os.Bundle;
8-
import android.support.v7.app.AppCompatActivity;
98
import android.text.Html;
109
import android.text.method.LinkMovementMethod;
1110
import android.view.View;
@@ -21,7 +20,7 @@
2120
import butterknife.ButterKnife;
2221
import butterknife.OnClick;
2322

24-
public class AboutActivity extends AppCompatActivity {
23+
public class AboutActivity extends SimpleActivity {
2524
@BindView(R.id.about_copyright) TextView mCopyright;
2625
@BindView(R.id.about_email) TextView mEmailTV;
2726
@BindView(R.id.about_rate_us) View mRateUs;

app/src/main/java/com/simplemobiletools/notes/activities/LicenseActivity.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,13 @@
33
import android.content.Intent;
44
import android.net.Uri;
55
import android.os.Bundle;
6-
import android.support.v7.app.AppCompatActivity;
76

87
import com.simplemobiletools.notes.R;
98

109
import butterknife.ButterKnife;
1110
import butterknife.OnClick;
1211

13-
public class LicenseActivity extends AppCompatActivity {
12+
public class LicenseActivity extends SimpleActivity {
1413

1514
@Override
1615
protected void onCreate(Bundle savedInstanceState) {

app/src/main/java/com/simplemobiletools/notes/activities/MainActivity.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import android.content.SharedPreferences;
88
import android.content.res.Resources;
99
import android.os.Bundle;
10-
import android.support.v7.app.AppCompatActivity;
1110
import android.view.Menu;
1211
import android.view.MenuItem;
1312
import android.view.inputmethod.InputMethodManager;
@@ -22,7 +21,7 @@
2221
import butterknife.BindView;
2322
import butterknife.ButterKnife;
2423

25-
public class MainActivity extends AppCompatActivity {
24+
public class MainActivity extends SimpleActivity {
2625
@BindView(R.id.notes_view) EditText mNotesView;
2726

2827
private SharedPreferences mPrefs;

app/src/main/java/com/simplemobiletools/notes/activities/SettingsActivity.java

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.simplemobiletools.notes.activities;
22

33
import android.os.Bundle;
4-
import android.support.v7.app.AppCompatActivity;
4+
import android.support.v4.app.TaskStackBuilder;
55
import android.support.v7.widget.SwitchCompat;
66

77
import com.simplemobiletools.notes.Config;
@@ -11,7 +11,8 @@
1111
import butterknife.ButterKnife;
1212
import butterknife.OnClick;
1313

14-
public class SettingsActivity extends AppCompatActivity {
14+
public class SettingsActivity extends SimpleActivity {
15+
@BindView(R.id.settings_dark_theme) SwitchCompat mDarkThemeSwitch;
1516
@BindView(R.id.settings_autosave) SwitchCompat mAutosaveSwitch;
1617

1718
private static Config mConfig;
@@ -23,16 +24,32 @@ protected void onCreate(Bundle savedInstanceState) {
2324
mConfig = Config.newInstance(getApplicationContext());
2425
ButterKnife.bind(this);
2526

27+
setupDarkTheme();
2628
setupAutosave();
2729
}
2830

31+
private void setupDarkTheme() {
32+
mDarkThemeSwitch.setChecked(mConfig.getIsDarkTheme());
33+
}
34+
2935
private void setupAutosave() {
3036
mAutosaveSwitch.setChecked(mConfig.getIsAutosaveEnabled());
3137
}
3238

39+
@OnClick(R.id.settings_dark_theme_holder)
40+
public void handleDarkTheme() {
41+
mDarkThemeSwitch.setChecked(!mDarkThemeSwitch.isChecked());
42+
mConfig.setIsDarkTheme(mDarkThemeSwitch.isChecked());
43+
restartActivity();
44+
}
45+
3346
@OnClick(R.id.settings_autosave_holder)
3447
public void handleAutosave() {
3548
mAutosaveSwitch.setChecked(!mAutosaveSwitch.isChecked());
3649
mConfig.setIsAutosaveEnabled(mAutosaveSwitch.isChecked());
3750
}
51+
52+
private void restartActivity() {
53+
TaskStackBuilder.create(getApplicationContext()).addNextIntentWithParentStack(getIntent()).startActivities();
54+
}
3855
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.simplemobiletools.notes.activities;
2+
3+
import android.os.Bundle;
4+
import android.support.annotation.Nullable;
5+
import android.support.v7.app.AppCompatActivity;
6+
import android.view.MenuItem;
7+
8+
import com.simplemobiletools.notes.Config;
9+
import com.simplemobiletools.notes.R;
10+
11+
public class SimpleActivity extends AppCompatActivity {
12+
protected Config mConfig;
13+
14+
@Override
15+
protected void onCreate(@Nullable Bundle savedInstanceState) {
16+
mConfig = Config.newInstance(getApplicationContext());
17+
setTheme(mConfig.getIsDarkTheme() ? R.style.AppTheme_Dark : R.style.AppTheme);
18+
super.onCreate(savedInstanceState);
19+
}
20+
21+
@Override
22+
public boolean onOptionsItemSelected(MenuItem item) {
23+
switch (item.getItemId()) {
24+
case android.R.id.home:
25+
finish();
26+
return true;
27+
default:
28+
return super.onOptionsItemSelected(item);
29+
}
30+
}
31+
}

app/src/main/res/layout/activity_main.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@
1010
android:layout_width="match_parent"
1111
android:layout_height="match_parent"
1212
android:background="@null"
13-
android:gravity="top"
14-
android:textColor="@color/dark_grey"/>
13+
android:gravity="top"/>
14+
1515
</RelativeLayout>

app/src/main/res/layout/activity_settings.xml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,32 @@
1111
android:layout_height="wrap_content"
1212
android:orientation="vertical">
1313

14+
<RelativeLayout
15+
android:id="@+id/settings_dark_theme_holder"
16+
android:layout_width="match_parent"
17+
android:layout_height="wrap_content"
18+
android:layout_marginTop="@dimen/settings_padding"
19+
android:background="?android:attr/selectableItemBackground"
20+
android:padding="@dimen/activity_margin">
21+
22+
<TextView
23+
android:id="@+id/settings_dark_theme_label"
24+
android:layout_width="wrap_content"
25+
android:layout_height="wrap_content"
26+
android:layout_centerVertical="true"
27+
android:paddingLeft="@dimen/settings_padding"
28+
android:text="@string/dark_theme"/>
29+
30+
<android.support.v7.widget.SwitchCompat
31+
android:id="@+id/settings_dark_theme"
32+
android:layout_width="wrap_content"
33+
android:layout_height="wrap_content"
34+
android:layout_alignParentRight="true"
35+
android:background="@null"
36+
android:clickable="false"/>
37+
38+
</RelativeLayout>
39+
1440
<RelativeLayout
1541
android:id="@+id/settings_autosave_holder"
1642
android:layout_width="match_parent"

0 commit comments

Comments
 (0)