diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 2c14154..7ac24c7 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -7,8 +7,8 @@
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
index cb8da0b..35eb1dd 100644
--- a/.idea/vcs.xml
+++ b/.idea/vcs.xml
@@ -2,6 +2,5 @@
-
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index fb1cb8f..ee7cb76 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,12 +1,12 @@
apply plugin: 'com.android.application'
android {
- compileSdkVersion 25
- buildToolsVersion "25.0.2"
+ compileSdkVersion 27
+ buildToolsVersion "27.0.3"
defaultConfig {
applicationId "info.aario.snotepad"
minSdkVersion 15
- targetSdkVersion 25
+ targetSdkVersion 27
versionCode 2
versionName "1.2.2"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
@@ -23,9 +23,9 @@ dependencies {
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
- compile 'com.android.support:appcompat-v7:25.2.0'
+ compile 'com.android.support:appcompat-v7:27.1.1'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
- compile 'com.android.support:design:25.2.0'
+ compile 'com.android.support:design:27.1.1'
testCompile 'junit:junit:4.12'
compile 'com.nononsenseapps:filepicker:4.0.0'
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ef5b6b6..75fd675 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -32,16 +32,27 @@
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/nnf_provider_paths" />
+
+
-
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/info/aario/snotepad/AboutFragment.java b/app/src/main/java/info/aario/snotepad/AboutActivity.java
similarity index 53%
rename from app/src/main/java/info/aario/snotepad/AboutFragment.java
rename to app/src/main/java/info/aario/snotepad/AboutActivity.java
index 2204e7c..b9feedc 100644
--- a/app/src/main/java/info/aario/snotepad/AboutFragment.java
+++ b/app/src/main/java/info/aario/snotepad/AboutActivity.java
@@ -1,16 +1,20 @@
package info.aario.snotepad;
+import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
+import android.os.Build;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
-import android.support.v4.app.Fragment;
+import android.app.Fragment;
import android.support.v4.content.ContextCompat;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.Button;
import android.widget.TextView;
import com.nononsenseapps.filepicker.FilePickerActivity;
@@ -21,44 +25,41 @@
* Created by aario on 3/16/17.
*/
-public class AboutFragment extends Fragment {
- private MainActivity activity;
+public class AboutActivity extends Activity {
+// private MainActivity activity;
private TextView tvAbout;
private static final int FILE_CODE = 1;
@Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- setHasOptionsMenu(true);
- activity = (MainActivity) getActivity();
- View view = inflater.inflate(R.layout.about_fragment, container, false);
- tvAbout = (TextView) view.findViewById(R.id.tvAbout);
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_about);
+ tvAbout = (TextView) findViewById(R.id.tvAbout);
String aboutHtml = getResources().getString(R.string.tvAbout_text);
- if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
tvAbout.setText(Html.fromHtml(aboutHtml, Html.FROM_HTML_MODE_COMPACT));
} else {
tvAbout.setText(Html.fromHtml(aboutHtml));
}
- TextView tvVersion = (TextView) view.findViewById(R.id.tvVersion);
+ TextView tvVersion = (TextView) findViewById(R.id.tvVersion);
try {
- tvVersion.setText(tvVersion.getText() + activity.getPackageManager().getPackageInfo(activity.getPackageName(), 0).versionName);
+ tvVersion.setText(tvVersion.getText() + getPackageManager().getPackageInfo(getPackageName(), 0).versionName);
} catch (PackageManager.NameNotFoundException e) {
tvVersion.setVisibility(View.INVISIBLE);
}
- FloatingActionButton fab = (FloatingActionButton) activity.findViewById(R.id.fab);
- fab.setImageDrawable(ContextCompat.getDrawable(activity, android.R.drawable.ic_dialog_info));
- fab.setOnClickListener(new View.OnClickListener() {
+ Button bt_donate = (Button) findViewById(R.id.bt_donate);
+ bt_donate.setOnClickListener(new View.OnClickListener() {
+
@Override
- public void onClick(View view) {
+ public void onClick(View v) {
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(getResources().getString(R.string.donate_url)));
startActivity(i);
}
});
- return view;
}
}
diff --git a/app/src/main/java/info/aario/snotepad/EditorFragment.java b/app/src/main/java/info/aario/snotepad/EditorFragment.java
index 3b7fc5b..bc120d5 100644
--- a/app/src/main/java/info/aario/snotepad/EditorFragment.java
+++ b/app/src/main/java/info/aario/snotepad/EditorFragment.java
@@ -3,11 +3,17 @@
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
-import android.support.v4.app.Fragment;
+import android.app.Fragment;
import android.support.v4.content.ContextCompat;
+import android.support.v7.app.AppCompatActivity;
+import android.support.v7.widget.Toolbar;
import android.text.Editable;
import android.text.TextWatcher;
+import android.util.Log;
+import android.view.KeyEvent;
import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
@@ -22,6 +28,7 @@
public class EditorFragment extends Fragment {
private MainActivity activity;
private String name;
+ private View view;
private EditText etEditor;
private EditText etTitle;
private String path;
@@ -32,20 +39,30 @@ public class EditorFragment extends Fragment {
private Button btRedo;
private Button btSave;
private Button btShare;
+ private long tLastEdit;
+ private String previousText;
private int undoHistoryCursor = 0;
TextWatcher textWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
+ if (System.currentTimeMillis() - tLastEdit > 1000 ||
+ Math.abs(etEditor.getText().length() - textUndoHistory.get(undoHistoryCursor).toString().length()) > 8 ) {
+ saveUndoRedo();
+ }
+ previousText = new String(charSequence.toString());
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
- saveUndoRedo();
+ tLastEdit = System.currentTimeMillis();
+// activity.toast(lastChar(previousText,charSequence.toString()) + "");
+ if (lastChar(previousText, charSequence.toString()) == ' ') saveUndoRedo();
}
@Override
public void afterTextChanged(Editable editable) {
activity.editor_modified = true;
+ save();
}
};
@@ -80,14 +97,57 @@ private void updateUndoRedoButtons() {
btRedo.setEnabled(textUndoHistory.size() > 0 && undoHistoryCursor < textUndoHistory.size() - 1);
}
+ public char lastChar(String oldStr, String newStr){
+ String shorter, longer;
+// Log.d("string",oldStr+"");
+// Log.d("string",newStr+"");
+
+ //find which string is shorter so that we don't end up out of bounds
+ if (oldStr.length() fileNameList = new ArrayList();
@@ -104,12 +108,16 @@ private void search(String text) {
populateFilesList();
}
- public void refresh() {
- path = activity.getPath();
+ public void refresh(boolean requestPermissions) {
+ path = activity.getPath(requestPermissions);
contentsCache.clear();
svSearch.setQuery("", true);
}
+ public void refresh(){
+ refresh(true);
+ }
+
public void sort(boolean byDate) {
sortByDate = byDate;
populateFilesList();
@@ -129,8 +137,16 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
setHasOptionsMenu(true);
activity = (MainActivity) getActivity();
- View view = inflater.inflate(R.layout.list_fragment, container, false);
// Inflate the layout for this fragment
+ View view = inflater.inflate(R.layout.list_fragment, container, false);
+
+ Toolbar toolbar = (Toolbar) view.findViewById(R.id.listToolbar);
+
+ //Set global action bar to this fragment's actions
+ AppCompatActivity rootActivity = (AppCompatActivity) getActivity();
+ rootActivity.setSupportActionBar(toolbar);
+ rootActivity.getSupportActionBar().setDisplayShowTitleEnabled(false);
+
lvFiles = (ListView) view.findViewById(R.id.filesList);
lvFiles.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
@@ -153,9 +169,9 @@ public boolean onQueryTextChange(String newText) {
return true;
}
});
- FloatingActionButton fab = (FloatingActionButton) activity.findViewById(R.id.fab);
+ activity = (MainActivity) getActivity();
+ fab = (FloatingActionButton) view.findViewById(R.id.fab);
fab.setVisibility(View.VISIBLE);
- fab.setImageDrawable(ContextCompat.getDrawable(activity, android.R.drawable.ic_input_add));
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
@@ -186,4 +202,19 @@ public boolean onContextItemSelected(final MenuItem item) {
return true;
}
+
+ public void onPrepareOptionsMenu(Menu menu) {
+ if (menu != null) {
+ menu.findItem(R.id.action_refresh).setVisible(true);
+ menu.findItem(R.id.action_sort_by_name).setVisible(true);
+ menu.findItem(R.id.action_sort_by_date).setVisible(true);
+ activity.invalidateOptionsMenu();
+ }
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ refresh();
+ }
}
diff --git a/app/src/main/java/info/aario/snotepad/MainActivity.java b/app/src/main/java/info/aario/snotepad/MainActivity.java
index cbd8447..67ba04c 100644
--- a/app/src/main/java/info/aario/snotepad/MainActivity.java
+++ b/app/src/main/java/info/aario/snotepad/MainActivity.java
@@ -1,18 +1,23 @@
package info.aario.snotepad;
+import android.Manifest;
import android.app.AlertDialog;
-import android.content.Context;
import android.content.DialogInterface;
+import android.content.Intent;
import android.content.SharedPreferences;
+import android.content.pm.PackageManager;
+import android.os.Build;
import android.os.Bundle;
+import android.preference.PreferenceManager;
+import android.support.annotation.NonNull;
import android.support.design.widget.CoordinatorLayout;
-import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentTransaction;
+import android.app.Fragment;
+import android.app.FragmentManager;
+import android.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
+import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
@@ -22,35 +27,75 @@
public class MainActivity extends AppCompatActivity {
private SharedPreferences sharedPref;
private SharedPreferences.Editor sharedPrefEditor;
- private FloatingActionButton fab;
private EditorFragment currentEditorFragment;
CoordinatorLayout coordinatorLayoutForSnackBar;
ListFragment listFragment = new ListFragment();
public Filer filer;
public boolean editor_modified;
- public void setPath(String path) {
- sharedPrefEditor.putString("PATH", path);
- sharedPrefEditor.commit();
- listFragment.refresh();
- }
-
private String getDefaultPath() {
return getExternalFilesDir(null).getAbsolutePath();
}
- public String getPath() {
- String path = sharedPref.getString("PATH", getDefaultPath());
+ public String getPath(){
+ return getPath(true);
+ }
+
+ public String getPath(boolean requestPermissions) {
+ String path;
+
+ if (sharedPref.getString("saveLocation", "internal").equals("internal")){
+ path = getDefaultPath();
+ Log.d("storage:", "internal");
+ Log.d("path:", path);
+ } else {
+ path = sharedPref.getString("PATH", getString(R.string.default_shared_path));
+ if (requestPermissions) requestStoragePermission();
+ Log.d("storage:", "shared");
+ Log.d("path:", path);
+ }
+
File file = new File(path);
+
+ if (!file.exists()) {
+ if (file.mkdirs()) {
+ Log.d("createDir", "Successfully created the parent dir:" + file.getName());
+ } else {
+ Log.d("createDir", "Failed to create the parent dir:" + file.getName());
+ }
+ }
+
if (!file.canWrite()) {
String old_path = path;
path = getDefaultPath();
toast("The path " + old_path + " was not writable. Falling back to default path: " + path);
- setPath(path);
}
return path;
}
+ @Override
+ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults);
+ listFragment.refresh(false);
+ }
+
+ public boolean requestStoragePermission() {
+ if (Build.VERSION.SDK_INT >= 23) {
+ if (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
+ Log.v("permission","Permission is granted");
+ return true;
+ } else {
+ Log.v("permission","Permission is revoked");
+ requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
+ return false;
+ }
+ }
+ else { //permission is automatically granted on sdk<23 upon installation
+ Log.v("permission","Permission is granted");
+ return true;
+ }
+ }
+
public void setLastOpenedFilePath(String filePath) {
sharedPrefEditor.putString("CURRENT_OPENED_FILE_PATH", filePath);
sharedPrefEditor.commit();
@@ -70,7 +115,7 @@ public void makeSnackBar(String text) {
}
private void changeFragment(Fragment f, boolean allowBack) {
- FragmentManager fragmentManager = getSupportFragmentManager();
+ FragmentManager fragmentManager = getFragmentManager();
// Prune the stack, so "back" always leads home.
if (fragmentManager.getBackStackEntryCount() > 0) {
@@ -91,7 +136,7 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
coordinatorLayoutForSnackBar = (CoordinatorLayout) findViewById(R.id.co_ordinated_layout_main);
- sharedPref = getPreferences(Context.MODE_PRIVATE);
+ sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
sharedPrefEditor = sharedPref.edit();
filer = new Filer(this);
changeFragment(listFragment, false); //Show list of files to setLastOpenedFilePath
@@ -103,7 +148,7 @@ protected void onCreate(Bundle savedInstanceState) {
}
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
- fab = (FloatingActionButton) findViewById(R.id.fab);
+ getSupportActionBar().hide();
}
@Override
@@ -141,7 +186,9 @@ public boolean onOptionsItemSelected(MenuItem item) {
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
- changeFragment(new SettingsFragment(), true);
+ Intent intent = new Intent(this, SettingsActivity.class);
+ startActivity(intent);
+ //changeFragment(new SettingsFragment(), true);
return true;
}
@@ -152,7 +199,13 @@ public boolean onOptionsItemSelected(MenuItem item) {
}
if (id == R.id.action_about) {
- changeFragment(new AboutFragment(), true);
+ Intent intent = new Intent(this, AboutActivity.class);
+ startActivity(intent);
+ return true;
+ }
+
+ if (id == android.R.id.home) {
+ onBackPressed();
return true;
}
@@ -162,40 +215,14 @@ public boolean onOptionsItemSelected(MenuItem item) {
@Override
public void onBackPressed() {
- int count = getSupportFragmentManager().getBackStackEntryCount();
+ int count = getFragmentManager().getBackStackEntryCount();
if (count == 0) {
super.onBackPressed();
- } else if (editor_modified) {
- DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- switch (which) {
- case DialogInterface.BUTTON_POSITIVE:
- //Yes button clicked
- currentEditorFragment.save();
- break;
- case DialogInterface.BUTTON_NEGATIVE:
- //No button clicked
- getSupportFragmentManager().popBackStack();
- break;
- case DialogInterface.BUTTON_NEUTRAL:
- //Cancel button clicked
- return;
- }
- setLastOpenedFilePath("");//Clear last opened file path
- getSupportFragmentManager().popBackStack();
- }
- };
- AlertDialog.Builder builder = new AlertDialog.Builder(this);
- builder.setMessage(getResources().getString(R.string.save_dialog_question))
- .setPositiveButton(getResources().getString(R.string.yes), dialogClickListener)
- .setNegativeButton(getResources().getString(R.string.no), dialogClickListener)
- .setNeutralButton(getResources().getString(R.string.cancel), dialogClickListener)
- .show();
} else {
setLastOpenedFilePath("");//Clear last opened file path
- getSupportFragmentManager().popBackStack();
+ getFragmentManager().popBackStack();
}
}
-}
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/aario/snotepad/SettingsActivity.java b/app/src/main/java/info/aario/snotepad/SettingsActivity.java
new file mode 100644
index 0000000..f51987c
--- /dev/null
+++ b/app/src/main/java/info/aario/snotepad/SettingsActivity.java
@@ -0,0 +1,21 @@
+package info.aario.snotepad;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.preference.PreferenceActivity;
+import android.support.v7.app.AppCompatActivity;
+import android.support.v7.widget.Toolbar;
+import android.view.MenuItem;
+
+public class SettingsActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_settings);
+
+ Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
+ setSupportActionBar(toolbar);
+ }
+
+}
diff --git a/app/src/main/java/info/aario/snotepad/SettingsFragment.java b/app/src/main/java/info/aario/snotepad/SettingsFragment.java
index bdb811a..104b83a 100644
--- a/app/src/main/java/info/aario/snotepad/SettingsFragment.java
+++ b/app/src/main/java/info/aario/snotepad/SettingsFragment.java
@@ -2,16 +2,14 @@
import android.app.Activity;
import android.content.Intent;
+import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Bundle;
-import android.support.design.widget.FloatingActionButton;
-import android.support.v4.app.Fragment;
-import android.support.v4.content.ContextCompat;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.Button;
-import android.widget.TextView;
+import android.preference.Preference;
+import android.preference.PreferenceFragment;
+import android.preference.PreferenceManager;
+import android.support.v7.app.AppCompatActivity;
+import android.support.v7.widget.Toolbar;
import com.nononsenseapps.filepicker.FilePickerActivity;
@@ -21,24 +19,39 @@
* Created by aario on 3/16/17.
*/
-public class SettingsFragment extends Fragment {
- private MainActivity activity;
- private Button btChangePath;
- private TextView tvPath;
+public class SettingsFragment extends PreferenceFragment {
+ private AppCompatActivity activity;
+// private Button btChangePath;
+// private TextView tvPath;
+ private SharedPreferences preferences;
private static final int FILE_CODE = 1;
@Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- setHasOptionsMenu(true);
- activity = (MainActivity) getActivity();
- View view = inflater.inflate(R.layout.settings_fragment, container, false);
- tvPath = (TextView) view.findViewById(R.id.tvPath);
- tvPath.setText(activity.getPath());
- btChangePath = (Button) view.findViewById(R.id.btChangePath);
- btChangePath.setOnClickListener(new View.OnClickListener() {
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ // Load the preferences from an XML resource
+ addPreferencesFromResource(R.xml.preferences);
+
+ activity = (AppCompatActivity) getActivity();
+ Toolbar toolbar = (Toolbar) activity.findViewById(R.id.toolbar);
+ activity.setSupportActionBar(toolbar);
+ final Preference pathPref = findPreference("PATH");
+ Preference saveLocation = (Preference) findPreference("saveLocation");
+
+ SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getContext());
+ Preference savePathPref = (Preference) findPreference("PATH");
+
+ //check if path to save notes should be enabled
+ if (preferences.getString("saveLocation", "internal").equals("internal")){
+ pathPref.setEnabled(false);
+ } else {
+ pathPref.setEnabled(true);
+ }
+
+ savePathPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
- public void onClick(View view) {
+ public boolean onPreferenceClick(Preference preference){
// This always works
Intent i = new Intent(activity, FilePickerActivity.class);
// This works if you defined the intent filter
@@ -53,22 +66,29 @@ public void onClick(View view) {
// You could specify a String like "/storage/emulated/0/", but that can
// dangerous. Always use Android's API calls to get paths to the SD-card or
// internal memory.
- i.putExtra(FilePickerActivity.EXTRA_START_PATH, activity.getPath());
+ SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getContext());
+ i.putExtra(FilePickerActivity.EXTRA_START_PATH, preferences.getString("PATH", activity.getString(R.string.default_shared_path)));
startActivityForResult(i, FILE_CODE);
+
+ return true;
}
});
- FloatingActionButton fab = (FloatingActionButton) activity.findViewById(R.id.fab);
- fab.setImageDrawable(ContextCompat.getDrawable(activity, android.R.drawable.ic_menu_save));
- fab.setOnClickListener(new View.OnClickListener() {
+
+ saveLocation.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
- public void onClick(View view) {
- activity.setPath(tvPath.getText().toString());
- getFragmentManager().popBackStack();
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ if (newValue.equals("shared")) {
+ pathPref.setEnabled(true);
+ } else {
+ pathPref.setEnabled(false);
+ }
+ return true;
}
});
- return view;
+ pathPref.setSummary(preferences.getString("PATH", activity.getString(R.string.default_shared_path)));
+
}
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
@@ -80,7 +100,21 @@ public void onActivityResult(int requestCode, int resultCode, Intent intent) {
File file = com.nononsenseapps.filepicker.Utils.getFileForUri(uri);
// If you want a URI which matches the old return value, you can do
Uri fileUri = Uri.fromFile(file);
- tvPath.setText(fileUri.getPath());
+
+ SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getContext());
+ SharedPreferences.Editor editor = preferences.edit();
+ editor.putString("PATH", fileUri.getPath());
+ editor.commit();
+
+ Preference pref = findPreference("PATH");
+ pref.setSummary(preferences.getString("PATH", activity.getString(R.string.default_shared_path)));
}
}
+
+
+ @Override
+ public void onPause() {
+ super.onPause();
+ AppCompatActivity rootActivity = (AppCompatActivity) getActivity();
+ }
}
diff --git a/app/src/main/res/drawable-hdpi/ic_redo.png b/app/src/main/res/drawable-hdpi/ic_redo.png
deleted file mode 100644
index bd705ed..0000000
Binary files a/app/src/main/res/drawable-hdpi/ic_redo.png and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/ic_undo.png b/app/src/main/res/drawable-hdpi/ic_undo.png
deleted file mode 100644
index 2b40260..0000000
Binary files a/app/src/main/res/drawable-hdpi/ic_undo.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_redo.png b/app/src/main/res/drawable-mdpi/ic_redo.png
deleted file mode 100644
index ad6d109..0000000
Binary files a/app/src/main/res/drawable-mdpi/ic_redo.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/ic_undo.png b/app/src/main/res/drawable-mdpi/ic_undo.png
deleted file mode 100644
index c09d741..0000000
Binary files a/app/src/main/res/drawable-mdpi/ic_undo.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_redo.png b/app/src/main/res/drawable-xhdpi/ic_redo.png
deleted file mode 100644
index 6c95856..0000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_redo.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_undo.png b/app/src/main/res/drawable-xhdpi/ic_undo.png
deleted file mode 100644
index b3b7f33..0000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_undo.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_redo.png b/app/src/main/res/drawable-xxhdpi/ic_redo.png
deleted file mode 100644
index 93eacdf..0000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_redo.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_undo.png b/app/src/main/res/drawable-xxhdpi/ic_undo.png
deleted file mode 100644
index bf47f8c..0000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_undo.png and /dev/null differ
diff --git a/app/src/main/res/drawable/ic_add_white_24dp.xml b/app/src/main/res/drawable/ic_add_white_24dp.xml
new file mode 100644
index 0000000..b9b8eca
--- /dev/null
+++ b/app/src/main/res/drawable/ic_add_white_24dp.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_redo_white_24dp.xml b/app/src/main/res/drawable/ic_redo_white_24dp.xml
new file mode 100644
index 0000000..8fe5509
--- /dev/null
+++ b/app/src/main/res/drawable/ic_redo_white_24dp.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_save_white_24dp.xml b/app/src/main/res/drawable/ic_save_white_24dp.xml
new file mode 100644
index 0000000..74ca299
--- /dev/null
+++ b/app/src/main/res/drawable/ic_save_white_24dp.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_share_white_24dp.xml b/app/src/main/res/drawable/ic_share_white_24dp.xml
new file mode 100644
index 0000000..045bbc0
--- /dev/null
+++ b/app/src/main/res/drawable/ic_share_white_24dp.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_undo_white_24dp.xml b/app/src/main/res/drawable/ic_undo_white_24dp.xml
new file mode 100644
index 0000000..3798c37
--- /dev/null
+++ b/app/src/main/res/drawable/ic_undo_white_24dp.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/app/src/main/res/layout/about_fragment.xml b/app/src/main/res/layout/about_fragment.xml
deleted file mode 100644
index f87e51b..0000000
--- a/app/src/main/res/layout/about_fragment.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_about.xml b/app/src/main/res/layout/activity_about.xml
new file mode 100644
index 0000000..7a2c0e6
--- /dev/null
+++ b/app/src/main/res/layout/activity_about.xml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 124b08d..71f3468 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -10,28 +10,19 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
-
-
+ android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
+ app:popupTheme="@style/AppTheme.PopupOverlay">
+
-
-
-
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 0000000..27a60f5
--- /dev/null
+++ b/app/src/main/res/layout/activity_settings.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/editor_fragment.xml b/app/src/main/res/layout/editor_fragment.xml
index 7341c47..9a47c71 100644
--- a/app/src/main/res/layout/editor_fragment.xml
+++ b/app/src/main/res/layout/editor_fragment.xml
@@ -8,39 +8,36 @@
app:layout_behavior="@string/appbar_scrolling_view_behavior">
+ android:elevation="4dp"
+ android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
+ app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
+ android:layout_width="24dp"
+ android:layout_height="24dp"
+ android:layout_margin="8dp"
+ android:background="@drawable/ic_undo_white_24dp"
+ android:enabled="false"
+ android:padding="8dp" />
-
-
-
diff --git a/app/src/main/res/layout/list_fragment.xml b/app/src/main/res/layout/list_fragment.xml
index 62129da..a817bc0 100644
--- a/app/src/main/res/layout/list_fragment.xml
+++ b/app/src/main/res/layout/list_fragment.xml
@@ -1,35 +1,50 @@
-
+ xmlns:tools="http://schemas.android.com/tools"
+ android:id="@+id/co_ordinated_layout_main"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
-
-
-
+ android:layout_height="?attr/actionBarSize"
+ android:background="?attr/colorPrimary"
+ android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
+ app:popupTheme="@style/AppTheme.PopupOverlay">
+
+
-
-
+
+
-
+
+
-
\ No newline at end of file
+
+
diff --git a/app/src/main/res/layout/settings_fragment.xml b/app/src/main/res/layout/settings_fragment.xml
deleted file mode 100644
index 13e6541..0000000
--- a/app/src/main/res/layout/settings_fragment.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 3ab3e9c..ddc59ea 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -3,4 +3,5 @@
#3F51B5
#303F9F
#FF4081
+ #FFFFFF
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index af23c80..8a41e45 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -10,7 +10,9 @@
Delete
Undo
Redo
- Saving path:
+ Path to save notes:
+ /storage/emulated/0/Android/data/info.aario.snotepad/files
+ /storage/emulated/0/Notes
Select Folder
Version:
Copyright (C) 2017 Aario Shahbany<br/><br/>
@@ -33,4 +35,20 @@
Yes
No
Cancel
+ info.aario.snotepad.PREFERENCES
+ Settings
+ System Settings
+ Save Location
+ Donate now via PayPal
+
+ - internal (deleted with uninstall)
+ - shared (needs storage permission)
+
+
+ - internal
+ - shared
+
+
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
new file mode 100644
index 0000000..485e198
--- /dev/null
+++ b/app/src/main/res/xml/preferences.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index c2eea8e..4e56319 100644
--- a/build.gradle
+++ b/build.gradle
@@ -3,9 +3,14 @@
buildscript {
repositories {
jcenter()
+ maven {
+ url 'https://maven.google.com/'
+ name 'Google'
+ }
+ google()
}
dependencies {
- classpath 'com.android.tools.build:gradle:2.3.3'
+ classpath 'com.android.tools.build:gradle:3.1.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
@@ -15,6 +20,10 @@ buildscript {
allprojects {
repositories {
jcenter()
+ maven {
+ url 'https://maven.google.com/'
+ name 'Google'
+ }
}
}
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index e26d23f..10a6d45 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Wed Mar 15 15:01:03 CET 2017
+#Tue Jul 31 15:32:41 EEST 2018
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
diff --git a/icon_src/baseline-redo-24px.svg b/icon_src/baseline-redo-24px.svg
new file mode 100644
index 0000000..dd77c2d
--- /dev/null
+++ b/icon_src/baseline-redo-24px.svg
@@ -0,0 +1,61 @@
+
+
diff --git a/icon_src/baseline-share-24px.svg b/icon_src/baseline-share-24px.svg
new file mode 100644
index 0000000..87357bd
--- /dev/null
+++ b/icon_src/baseline-share-24px.svg
@@ -0,0 +1,61 @@
+
+
diff --git a/icon_src/baseline-undo-24px.svg b/icon_src/baseline-undo-24px.svg
new file mode 100644
index 0000000..2148dc1
--- /dev/null
+++ b/icon_src/baseline-undo-24px.svg
@@ -0,0 +1,61 @@
+
+
diff --git a/temp.txt b/temp.txt
new file mode 100644
index 0000000..a8ad559
--- /dev/null
+++ b/temp.txt
@@ -0,0 +1,196 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ @Override
+ public void onPause() {
+ super.onPause();
+ AppCompatActivity rootActivity = (AppCompatActivity) getActivity();
+ Toolbar toolbar = (Toolbar) rootActivity.findViewById(R.id.toolbar);
+// rootActivity.setSupportActionBar(toolbar);
+ rootActivity.getSupportActionBar().hide();
+ }
+
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ AppCompatActivity rootActivity = (AppCompatActivity) getActivity();
+ Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar);
+ rootActivity.setSupportActionBar(toolbar);
+ rootActivity.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+ rootActivity.getSupportActionBar().show();
+ activity.toast("resume");
+ }
+
+
+
+
+package info.aario.snotepad;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.preference.PreferenceActivity;
+import android.support.v7.widget.Toolbar;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.LinearLayout;
+
+public class SettingsActivity extends PreferenceActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_settings);
+
+ LinearLayout root = (LinearLayout)findViewById(android.R.id.list).getParent().getParent().getParent();
+ Toolbar bar = (Toolbar) LayoutInflater.from(this).inflate(R.layout.activity_settings, root, false);
+ root.addView(bar, 0); // insert at top
+ bar.setNavigationOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ finish();
+ }
+ });
+
+ addPreferencesFromResource(R.xml.preferences);
+
+ }
+}
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ // Handle action bar item clicks here. The action bar will
+ // automatically handle clicks on the Home/Up button, so long
+ // as you specify a parent activity in AndroidManifest.xml.
+ int id = item.getItemId();
+
+ if (id == android.R.id.home) {
+ onBackPressed();
+ return true;
+ }
+
+ return super.onOptionsItemSelected(item);
+ }
+
+package info.aario.snotepad;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.preference.PreferenceActivity;
+import android.view.MenuItem;
+
+public class SettingsActivity extends PreferenceActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_settings);
+
+ addPreferencesFromResource(R.xml.preferences);
+ }
+
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ // Handle action bar item clicks here. The action bar will
+ // automatically handle clicks on the Home/Up button, so long
+ // as you specify a parent activity in AndroidManifest.xml.
+ int id = item.getItemId();
+
+ if (id == android.R.id.home) {
+ onBackPressed();
+ return true;
+ }
+
+ return super.onOptionsItemSelected(item);
+ }
+
+}
+
+
+
+
+// getSupportActionBar().setTitle(this.getString(R.string.pref_title_settings));
diff --git a/todo.org b/todo.org
new file mode 100644
index 0000000..3858f64
--- /dev/null
+++ b/todo.org
@@ -0,0 +1,6 @@
+** tasks
+* autosave
+* themes
+* pygments
+* open intent
+* save as