Skip to content

Commit a7180ea

Browse files
committed
add the Autosave option
1 parent be6b1d5 commit a7180ea

File tree

11 files changed

+149
-5
lines changed

11 files changed

+149
-5
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@
3535
android:name=".activities.LicenseActivity"
3636
android:label="@string/third_party_licences"/>
3737

38+
<activity
39+
android:name=".activities.SettingsActivity"
40+
android:label="@string/settings"/>
41+
3842
<receiver
3943
android:name=".MyWidgetProvider"
4044
android:icon="@mipmap/widget_preview">

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,12 @@ public boolean getIsFirstRun() {
2121
public void setIsFirstRun(boolean firstRun) {
2222
mPrefs.edit().putBoolean(Constants.IS_FIRST_RUN, firstRun).apply();
2323
}
24+
25+
public boolean getIsAutosaveEnabled() {
26+
return mPrefs.getBoolean(Constants.AUTOSAVE, false);
27+
}
28+
29+
public void setIsAutosaveEnabled(boolean enabled) {
30+
mPrefs.edit().putBoolean(Constants.AUTOSAVE, enabled).apply();
31+
}
2432
}

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 AUTOSAVE = "autosave";
910
public static final String WIDGET_BG_COLOR = "widget_bg_color";
1011
public static final String WIDGET_TEXT_COLOR = "widget_text_color";
1112
}

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

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
import android.support.v7.app.AppCompatActivity;
99
import android.text.Html;
1010
import android.text.method.LinkMovementMethod;
11+
import android.view.Menu;
12+
import android.view.MenuItem;
1113
import android.view.View;
1214
import android.widget.TextView;
1315

@@ -40,6 +42,24 @@ protected void onCreate(Bundle savedInstanceState) {
4042
setupRateUs();
4143
}
4244

45+
@Override
46+
public boolean onCreateOptionsMenu(Menu menu) {
47+
getMenuInflater().inflate(R.menu.menu_about, menu);
48+
return true;
49+
}
50+
51+
@Override
52+
public boolean onOptionsItemSelected(MenuItem item) {
53+
switch (item.getItemId()) {
54+
case R.id.settings:
55+
final Intent intent = new Intent(getApplicationContext(), SettingsActivity.class);
56+
startActivity(intent);
57+
return true;
58+
default:
59+
return super.onOptionsItemSelected(item);
60+
}
61+
}
62+
4363
private void setupEmail() {
4464
final String email = mRes.getString(R.string.email);
4565
final String appName = mRes.getString(R.string.app_name);

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

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
import android.view.MenuItem;
1313
import android.view.inputmethod.InputMethodManager;
1414
import android.widget.EditText;
15-
import android.widget.Toast;
1615

1716
import com.simplemobiletools.notes.Config;
1817
import com.simplemobiletools.notes.Constants;
@@ -39,6 +38,20 @@ protected void onCreate(Bundle savedInstanceState) {
3938
mNotesView.setText(text);
4039
}
4140

41+
@Override
42+
protected void onResume() {
43+
super.onResume();
44+
invalidateOptionsMenu();
45+
}
46+
47+
@Override
48+
protected void onPause() {
49+
super.onPause();
50+
if (Config.newInstance(getApplicationContext()).getIsAutosaveEnabled()) {
51+
saveText(false);
52+
}
53+
}
54+
4255
@Override
4356
protected void onDestroy() {
4457
super.onDestroy();
@@ -48,14 +61,17 @@ protected void onDestroy() {
4861
@Override
4962
public boolean onCreateOptionsMenu(Menu menu) {
5063
getMenuInflater().inflate(R.menu.menu, menu);
64+
if (Config.newInstance(getApplicationContext()).getIsAutosaveEnabled())
65+
menu.findItem(R.id.save).setVisible(false);
66+
5167
return true;
5268
}
5369

5470
@Override
5571
public boolean onOptionsItemSelected(MenuItem item) {
5672
switch (item.getItemId()) {
5773
case R.id.save:
58-
saveText();
74+
saveText(true);
5975
return true;
6076
case R.id.share:
6177
shareText();
@@ -69,19 +85,22 @@ public boolean onOptionsItemSelected(MenuItem item) {
6985
}
7086
}
7187

72-
private void saveText() {
88+
private void saveText(boolean showToast) {
7389
final String text = mNotesView.getText().toString().trim();
7490
mPrefs.edit().putString(Constants.TEXT, text).apply();
7591

76-
Toast.makeText(this, getResources().getString(R.string.text_saved), Toast.LENGTH_SHORT).show();
92+
if (showToast) {
93+
Utils.showToast(getApplicationContext(), R.string.text_saved);
94+
}
95+
7796
hideKeyboard();
7897
updateWidget();
7998
}
8099

81100
private void shareText() {
82101
final String text = mNotesView.getText().toString().trim();
83102
if (text.isEmpty()) {
84-
Utils.showToast(this, R.string.cannot_share_empty_text);
103+
Utils.showToast(getApplicationContext(), R.string.cannot_share_empty_text);
85104
return;
86105
}
87106

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package com.simplemobiletools.notes.activities;
2+
3+
import android.os.Bundle;
4+
import android.support.v7.app.AppCompatActivity;
5+
import android.support.v7.widget.SwitchCompat;
6+
7+
import com.simplemobiletools.notes.Config;
8+
import com.simplemobiletools.notes.R;
9+
10+
import butterknife.BindView;
11+
import butterknife.ButterKnife;
12+
import butterknife.OnClick;
13+
14+
public class SettingsActivity extends AppCompatActivity {
15+
@BindView(R.id.settings_autosave) SwitchCompat mAutosaveSwitch;
16+
17+
private static Config mConfig;
18+
19+
@Override
20+
protected void onCreate(Bundle savedInstanceState) {
21+
super.onCreate(savedInstanceState);
22+
setContentView(R.layout.activity_settings);
23+
mConfig = Config.newInstance(getApplicationContext());
24+
ButterKnife.bind(this);
25+
26+
setupAutosave();
27+
}
28+
29+
private void setupAutosave() {
30+
mAutosaveSwitch.setChecked(mConfig.getIsAutosaveEnabled());
31+
}
32+
33+
@OnClick(R.id.settings_autosave_holder)
34+
public void handleAutosave() {
35+
mAutosaveSwitch.setChecked(!mAutosaveSwitch.isChecked());
36+
mConfig.setIsAutosaveEnabled(mAutosaveSwitch.isChecked());
37+
}
38+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<ScrollView
3+
android:id="@+id/settings_scrollview"
4+
xmlns:android="http://schemas.android.com/apk/res/android"
5+
android:layout_width="match_parent"
6+
android:layout_height="wrap_content">
7+
8+
<LinearLayout
9+
android:id="@+id/settings_holder"
10+
android:layout_width="match_parent"
11+
android:layout_height="wrap_content"
12+
android:orientation="vertical">
13+
14+
<RelativeLayout
15+
android:id="@+id/settings_autosave_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_autosave_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/autosave"/>
29+
30+
<android.support.v7.widget.SwitchCompat
31+
android:id="@+id/settings_autosave"
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+
</LinearLayout>
40+
</ScrollView>
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<menu xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:app="http://schemas.android.com/apk/res-auto">
4+
<item
5+
android:id="@+id/settings"
6+
android:title="@string/settings"
7+
app:showAsAction="never"/>
8+
</menu>

app/src/main/res/values-sw600dp/dimens.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<resources>
22
<dimen name="social_padding">12dp</dimen>
33
<dimen name="social_logo">50dp</dimen>
4+
<dimen name="settings_padding">12dp</dimen>
45

56
<dimen name="normal_text_size">18sp</dimen>
67
<dimen name="config_text_size">22sp</dimen>

app/src/main/res/values/dimens.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
<dimen name="activity_margin">16dp</dimen>
33
<dimen name="social_padding">8dp</dimen>
44
<dimen name="social_logo">40dp</dimen>
5+
<dimen name="settings_padding">8dp</dimen>
56

67
<dimen name="normal_text_size">14sp</dimen>
78
<dimen name="config_text_size">18sp</dimen>

0 commit comments

Comments
 (0)