diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c25bdcd1..fd73c8c7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -35,6 +35,10 @@ android:name=".activities.LicenseActivity" android:label="@string/third_party_licences"/> + <activity + android:name=".activities.SettingsActivity" + android:label="@string/settings"/> + <receiver android:name=".MyWidgetProvider" android:icon="@mipmap/widget_preview"> diff --git a/app/src/main/java/com/simplemobiletools/notes/Config.java b/app/src/main/java/com/simplemobiletools/notes/Config.java index 670d7862..3b5d5438 100644 --- a/app/src/main/java/com/simplemobiletools/notes/Config.java +++ b/app/src/main/java/com/simplemobiletools/notes/Config.java @@ -21,4 +21,12 @@ public class Config { public void setIsFirstRun(boolean firstRun) { mPrefs.edit().putBoolean(Constants.IS_FIRST_RUN, firstRun).apply(); } + + public boolean getIsAutosaveEnabled() { + return mPrefs.getBoolean(Constants.AUTOSAVE, false); + } + + public void setIsAutosaveEnabled(boolean enabled) { + mPrefs.edit().putBoolean(Constants.AUTOSAVE, enabled).apply(); + } } diff --git a/app/src/main/java/com/simplemobiletools/notes/Constants.java b/app/src/main/java/com/simplemobiletools/notes/Constants.java index dd95c340..e9e7d59a 100644 --- a/app/src/main/java/com/simplemobiletools/notes/Constants.java +++ b/app/src/main/java/com/simplemobiletools/notes/Constants.java @@ -6,6 +6,7 @@ public class Constants { // shared preferences public static final String PREFS_KEY = "Notes"; public static final String IS_FIRST_RUN = "is_first_run"; + public static final String AUTOSAVE = "autosave"; public static final String WIDGET_BG_COLOR = "widget_bg_color"; public static final String WIDGET_TEXT_COLOR = "widget_text_color"; } diff --git a/app/src/main/java/com/simplemobiletools/notes/activities/AboutActivity.java b/app/src/main/java/com/simplemobiletools/notes/activities/AboutActivity.java index 86811289..d28c9145 100644 --- a/app/src/main/java/com/simplemobiletools/notes/activities/AboutActivity.java +++ b/app/src/main/java/com/simplemobiletools/notes/activities/AboutActivity.java @@ -8,6 +8,8 @@ import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.text.Html; import android.text.method.LinkMovementMethod; +import android.view.Menu; +import android.view.MenuItem; import android.view.View; import android.widget.TextView; @@ -40,6 +42,24 @@ public class AboutActivity extends AppCompatActivity { setupRateUs(); } + @Override + public boolean onCreateOptionsMenu(Menu menu) { + getMenuInflater().inflate(R.menu.menu_about, menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case R.id.settings: + final Intent intent = new Intent(getApplicationContext(), SettingsActivity.class); + startActivity(intent); + return true; + default: + return super.onOptionsItemSelected(item); + } + } + private void setupEmail() { final String email = mRes.getString(R.string.email); final String appName = mRes.getString(R.string.app_name); diff --git a/app/src/main/java/com/simplemobiletools/notes/activities/MainActivity.java b/app/src/main/java/com/simplemobiletools/notes/activities/MainActivity.java index 22436114..c98fbc10 100644 --- a/app/src/main/java/com/simplemobiletools/notes/activities/MainActivity.java +++ b/app/src/main/java/com/simplemobiletools/notes/activities/MainActivity.java @@ -12,7 +12,6 @@ import android.view.Menu; import android.view.MenuItem; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; -import android.widget.Toast; import com.simplemobiletools.notes.Config; import com.simplemobiletools.notes.Constants; @@ -39,6 +38,20 @@ public class MainActivity extends AppCompatActivity { mNotesView.setText(text); } + @Override + protected void onResume() { + super.onResume(); + invalidateOptionsMenu(); + } + + @Override + protected void onPause() { + super.onPause(); + if (Config.newInstance(getApplicationContext()).getIsAutosaveEnabled()) { + saveText(false); + } + } + @Override protected void onDestroy() { super.onDestroy(); @@ -48,6 +61,9 @@ public class MainActivity extends AppCompatActivity { @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu, menu); + if (Config.newInstance(getApplicationContext()).getIsAutosaveEnabled()) + menu.findItem(R.id.save).setVisible(false); + return true; } @@ -55,7 +71,7 @@ public class MainActivity extends AppCompatActivity { public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.save: - saveText(); + saveText(true); return true; case R.id.share: shareText(); @@ -69,11 +85,14 @@ public class MainActivity extends AppCompatActivity { } } - private void saveText() { + private void saveText(boolean showToast) { final String text = mNotesView.getText().toString().trim(); mPrefs.edit().putString(Constants.TEXT, text).apply(); - Toast.makeText(this, getResources().getString(R.string.text_saved), Toast.LENGTH_SHORT).show(); + if (showToast) { + Utils.showToast(getApplicationContext(), R.string.text_saved); + } + hideKeyboard(); updateWidget(); } @@ -81,7 +100,7 @@ public class MainActivity extends AppCompatActivity { private void shareText() { final String text = mNotesView.getText().toString().trim(); if (text.isEmpty()) { - Utils.showToast(this, R.string.cannot_share_empty_text); + Utils.showToast(getApplicationContext(), R.string.cannot_share_empty_text); return; } diff --git a/app/src/main/java/com/simplemobiletools/notes/activities/SettingsActivity.java b/app/src/main/java/com/simplemobiletools/notes/activities/SettingsActivity.java new file mode 100644 index 00000000..b5f35c9b --- /dev/null +++ b/app/src/main/java/com/simplemobiletools/notes/activities/SettingsActivity.java @@ -0,0 +1,38 @@ +package com.simplemobiletools.notes.activities; + +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.SwitchCompat; + +import com.simplemobiletools.notes.Config; +import com.simplemobiletools.notes.R; + +import butterknife.BindView; +import butterknife.ButterKnife; +import butterknife.OnClick; + +public class SettingsActivity extends AppCompatActivity { + @BindView(R.id.settings_autosave) SwitchCompat mAutosaveSwitch; + + private static Config mConfig; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_settings); + mConfig = Config.newInstance(getApplicationContext()); + ButterKnife.bind(this); + + setupAutosave(); + } + + private void setupAutosave() { + mAutosaveSwitch.setChecked(mConfig.getIsAutosaveEnabled()); + } + + @OnClick(R.id.settings_autosave_holder) + public void handleAutosave() { + mAutosaveSwitch.setChecked(!mAutosaveSwitch.isChecked()); + mConfig.setIsAutosaveEnabled(mAutosaveSwitch.isChecked()); + } +} diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml new file mode 100644 index 00000000..cfab5a05 --- /dev/null +++ b/app/src/main/res/layout/activity_settings.xml @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="utf-8"?> +<ScrollView + android:id="@+id/settings_scrollview" + xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <LinearLayout + android:id="@+id/settings_holder" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + + <RelativeLayout + android:id="@+id/settings_autosave_holder" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/settings_padding" + android:background="?android:attr/selectableItemBackground" + android:padding="@dimen/activity_margin"> + + <TextView + android:id="@+id/settings_autosave_label" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerVertical="true" + android:paddingLeft="@dimen/settings_padding" + android:text="@string/autosave"/> + + <android.support.v7.widget.SwitchCompat + android:id="@+id/settings_autosave" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignParentRight="true" + android:background="@null" + android:clickable="false"/> + + </RelativeLayout> + </LinearLayout> +</ScrollView> diff --git a/app/src/main/res/menu/menu_about.xml b/app/src/main/res/menu/menu_about.xml new file mode 100644 index 00000000..f408693c --- /dev/null +++ b/app/src/main/res/menu/menu_about.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto"> + <item + android:id="@+id/settings" + android:title="@string/settings" + app:showAsAction="never"/> +</menu> diff --git a/app/src/main/res/values-sw600dp/dimens.xml b/app/src/main/res/values-sw600dp/dimens.xml index b5cec34d..3b8b3161 100644 --- a/app/src/main/res/values-sw600dp/dimens.xml +++ b/app/src/main/res/values-sw600dp/dimens.xml @@ -1,6 +1,7 @@ <resources> <dimen name="social_padding">12dp</dimen> <dimen name="social_logo">50dp</dimen> + <dimen name="settings_padding">12dp</dimen> <dimen name="normal_text_size">18sp</dimen> <dimen name="config_text_size">22sp</dimen> diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 10395801..fcf7d56d 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -2,6 +2,7 @@ <dimen name="activity_margin">16dp</dimen> <dimen name="social_padding">8dp</dimen> <dimen name="social_logo">40dp</dimen> + <dimen name="settings_padding">8dp</dimen> <dimen name="normal_text_size">14sp</dimen> <dimen name="config_text_size">18sp</dimen> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7f305a18..dc1c375f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -8,6 +8,10 @@ <string name="text_saved">Text Saved</string> <string name="simple_note">Simple Note</string> + <!-- Settings --> + <string name="settings">Settings</string> + <string name="autosave">Autosave</string> + <!-- About --> <string name="about">About</string> <string name="website">More simple apps and source code at:\nhttp://simplemobiletools.com</string>