Skip to content

Commit 73c38ea

Browse files
committed
Merge branch 'hotfix/5.2.19'
Conflicts: gradle.properties omniNotes/src/main/java/it/feio/android/omninotes/BaseActivity.java omniNotes/src/main/java/it/feio/android/omninotes/MainActivity.java omniNotes/src/main/res/raw/changelog.xml
2 parents 24f139a + 81ac9c5 commit 73c38ea

14 files changed

Lines changed: 280 additions & 196 deletions

File tree

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ buildscript {
2121
jcenter()
2222
}
2323
dependencies {
24-
classpath 'com.android.tools.build:gradle:2.2.0'
24+
classpath 'com.android.tools.build:gradle:2.2.1'
2525
classpath 'me.tatarka:gradle-retrolambda:3.2.5'
2626
classpath 'me.tatarka.retrolambda.projectlombok:lombok.ast:0.2.3.a2'
2727
}

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
MIN_SDK=14
1919
TARGET_SDK=24
2020
VERSION_NAME=6.0
21-
VERSION_CODE=228
21+
VERSION_CODE=229
2222
PACKAGE=it.feio.android.omninotes
2323

2424
# The following properties are empty defaults to allow build and can EVENTUALLY be overridden to allow:

omniNotes/src/main/java/it/feio/android/omninotes/BaseActivity.java

Lines changed: 28 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import android.os.Bundle;
3030
import android.os.Handler;
3131
import android.support.design.widget.CollapsingToolbarLayout;
32+
import android.support.annotation.NonNull;
3233
import android.support.v4.app.FragmentTransaction;
3334
import android.support.v4.content.LocalBroadcastManager;
3435
import android.support.v7.app.ActionBarActivity;
@@ -37,13 +38,12 @@
3738
import android.view.*;
3839
import android.widget.EditText;
3940
import android.widget.Toast;
41+
import com.afollestad.materialdialogs.DialogAction;
4042
import com.afollestad.materialdialogs.MaterialDialog;
43+
import com.afollestad.materialdialogs.MaterialDialog.SingleButtonCallback;
4144
import it.feio.android.omninotes.models.Note;
4245
import it.feio.android.omninotes.models.PasswordValidator;
43-
import it.feio.android.omninotes.utils.Constants;
44-
import it.feio.android.omninotes.utils.KeyboardUtils;
45-
import it.feio.android.omninotes.utils.Navigation;
46-
import it.feio.android.omninotes.utils.Security;
46+
import it.feio.android.omninotes.utils.*;
4747
import it.feio.android.omninotes.widget.ListWidgetProvider;
4848

4949
import java.lang.reflect.Field;
@@ -104,82 +104,31 @@ protected void showToast(CharSequence text, int duration) {
104104
}
105105

106106

107-
/**
108-
* Method to validate security password to protect notes.
109-
* It uses an interface callback.
110-
*/
111-
public static void requestPassword(final Activity mActivity, final PasswordValidator mPasswordValidator) {
112-
113-
// Inflate layout
114-
LayoutInflater inflater = mActivity.getLayoutInflater();
115-
final View v = inflater.inflate(R.layout.password_request_dialog_layout, null);
116-
final EditText passwordEditText = (EditText) v.findViewById(R.id.password_request);
117-
118-
MaterialDialog dialog = new MaterialDialog.Builder(mActivity)
119-
.autoDismiss(false)
120-
.title(R.string.insert_security_password)
121-
.customView(v, false)
122-
.positiveText(R.string.ok)
123-
.callback(new MaterialDialog.ButtonCallback() {
124-
@Override
125-
public void onPositive(MaterialDialog dialog) {
126-
// When positive button is pressed password correctness is checked
127-
String oldPassword = mActivity.getSharedPreferences(Constants.PREFS_NAME, MODE_MULTI_PROCESS)
128-
.getString(Constants.PREF_PASSWORD, "");
129-
String password = passwordEditText.getText().toString();
130-
// The check is done on password's hash stored in preferences
131-
boolean result = Security.md5(password).equals(oldPassword);
132-
133-
// In case password is ok dialog is dismissed and result sent to callback
134-
if (result) {
135-
KeyboardUtils.hideKeyboard(passwordEditText);
136-
dialog.dismiss();
137-
mPasswordValidator.onPasswordValidated(true);
138-
// If password is wrong the auth flow is not interrupted and simply a message is shown
139-
} else {
140-
passwordEditText.setError(mActivity.getString(R.string.wrong_password));
141-
}
142-
}
143-
}).build();
144-
145-
dialog.setOnCancelListener(dialog1 -> {
146-
KeyboardUtils.hideKeyboard(passwordEditText);
147-
dialog1.dismiss();
148-
mPasswordValidator.onPasswordValidated(false);
149-
});
150-
151-
dialog.show();
152-
153-
// Force focus and shows soft keyboard
154-
new Handler().postDelayed(() -> KeyboardUtils.showKeyboard(passwordEditText), 100);
155-
}
156-
157-
158-
/**
159-
* Method to validate security password to protect a list of notes.
160-
* When "Request password on access" in switched on this check not required all the times.
161-
* It uses an interface callback.
162-
*/
163-
public void requestPassword(final Activity mActivity, List<Note> notes,
164-
final PasswordValidator mPasswordValidator) {
165-
if (prefs.getBoolean("settings_password_access", false)) {
166-
mPasswordValidator.onPasswordValidated(true);
167-
return;
168-
}
107+
/**
108+
* Method to validate security password to protect a list of notes.
109+
* When "Request password on access" in switched on this check not required all the times.
110+
* It uses an interface callback.
111+
*/
112+
public void requestPassword(final Activity mActivity, List<Note> notes,
113+
final PasswordValidator mPasswordValidator) {
114+
if (prefs.getBoolean("settings_password_access", false)) {
115+
mPasswordValidator.onPasswordValidated(true);
116+
return;
117+
}
169118

170-
boolean askForPassword = false;
171-
for (Note note : notes) {
172-
if (note.isLocked()) {
173-
askForPassword = true;
174-
break;
175-
}
176-
}
177-
if (askForPassword) {
178-
BaseActivity.requestPassword(mActivity, mPasswordValidator::onPasswordValidated);
179-
} else {
180-
mPasswordValidator.onPasswordValidated(true);
181-
}
182-
}
119+
boolean askForPassword = false;
120+
for (Note note : notes) {
121+
if (note.isLocked()) {
122+
askForPassword = true;
123+
break;
124+
}
125+
}
126+
if (askForPassword) {
127+
PasswordHelper.requestPassword(mActivity, mPasswordValidator);
128+
} else {
129+
mPasswordValidator.onPasswordValidated(true);
130+
}
131+
}
183132

184133

185134
public boolean updateNavigation(String nav) {

omniNotes/src/main/java/it/feio/android/omninotes/DetailFragment.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -472,7 +472,7 @@ private void checkNoteLock(Note note) {
472472
if (note.isLocked()
473473
&& prefs.getString(Constants.PREF_PASSWORD, null) != null
474474
&& !prefs.getBoolean("settings_password_access", false)) {
475-
BaseActivity.requestPassword(mainActivity, passwordConfirmed -> {
475+
PasswordHelper.requestPassword(mainActivity, passwordConfirmed -> {
476476
if (passwordConfirmed) {
477477
noteTmp.setPasswordChecked(true);
478478
init();
@@ -1889,7 +1889,7 @@ private void lockNote() {
18891889
}
18901890

18911891
// Password will be requested here
1892-
BaseActivity.requestPassword(mainActivity, passwordConfirmed -> {
1892+
PasswordHelper.requestPassword(mainActivity, passwordConfirmed -> {
18931893
if (passwordConfirmed) {
18941894
lockUnlock();
18951895
}

omniNotes/src/main/java/it/feio/android/omninotes/ListFragment.java

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import android.graphics.Color;
3030
import android.graphics.drawable.AnimationDrawable;
3131
import android.os.*;
32+
import android.support.annotation.NonNull;
3233
import android.support.v4.util.Pair;
3334
import android.support.v4.view.GravityCompat;
3435
import android.support.v4.view.MenuItemCompat;
@@ -48,6 +49,7 @@
4849
import android.widget.ListView;
4950
import butterknife.Bind;
5051
import butterknife.ButterKnife;
52+
import com.afollestad.materialdialogs.DialogAction;
5153
import com.afollestad.materialdialogs.MaterialDialog;
5254
import com.neopixl.pixlui.components.textview.TextView;
5355
import com.pnikosis.materialishprogress.ProgressWheel;
@@ -891,7 +893,7 @@ private void switchNotesView(int menu_grid_view) {
891893

892894
void editNote(final Note note, final View view) {
893895
if (note.isLocked() && !prefs.getBoolean("settings_password_access", false)) {
894-
BaseActivity.requestPassword(mainActivity, passwordConfirmed -> {
896+
PasswordHelper.requestPassword(mainActivity, passwordConfirmed -> {
895897
if (passwordConfirmed) {
896898
note.setPasswordChecked(true);
897899
AnimationsHelper.zoomListItem(mainActivity, view, getZoomListItemView(view, note),
@@ -1332,22 +1334,19 @@ private void selectAllNotes() {
13321334
/**
13331335
* Batch note permanent deletion
13341336
*/
1335-
private void deleteNotes() {
1336-
new MaterialDialog.Builder(mainActivity)
1337-
.content(R.string.delete_note_confirmation)
1338-
.positiveText(R.string.ok)
1339-
.callback(new MaterialDialog.ButtonCallback() {
1340-
@Override
1341-
public void onPositive(MaterialDialog materialDialog) {
1342-
mainActivity.requestPassword(mainActivity, getSelectedNotes(),
1343-
passwordConfirmed -> {
1344-
if (passwordConfirmed) {
1345-
deleteNotesExecute();
1346-
}
1347-
});
1348-
}
1349-
}).build().show();
1350-
}
1337+
private void deleteNotes() {
1338+
new MaterialDialog.Builder(mainActivity)
1339+
.content(R.string.delete_note_confirmation)
1340+
.positiveText(R.string.ok)
1341+
.onPositive((dialog, which) -> mainActivity.requestPassword(mainActivity, getSelectedNotes(),
1342+
passwordConfirmed -> {
1343+
if (passwordConfirmed) {
1344+
deleteNotesExecute();
1345+
}
1346+
}))
1347+
.build()
1348+
.show();
1349+
}
13511350

13521351

13531352
/**

omniNotes/src/main/java/it/feio/android/omninotes/MainActivity.java

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
import de.keyboardsurfer.android.widget.crouton.Style;
4949
import edu.emory.mathcs.backport.java.util.Arrays;
5050
import it.feio.android.omninotes.async.UpdaterTask;
51+
import it.feio.android.omninotes.async.bus.PasswordRemovedEvent;
5152
import it.feio.android.omninotes.async.bus.SwitchFragmentEvent;
5253
import it.feio.android.omninotes.async.notes.NoteProcessorDelete;
5354
import it.feio.android.omninotes.db.DbHelper;
@@ -57,6 +58,8 @@
5758
import it.feio.android.omninotes.models.Note;
5859
import it.feio.android.omninotes.utils.Constants;
5960
import it.feio.android.omninotes.utils.SystemHelper;
61+
import it.feio.android.omninotes.utils.MiscUtils;
62+
import it.feio.android.omninotes.utils.PasswordHelper;
6063

6164

6265
public class MainActivity extends BaseActivity implements OnDateSetListener, OnTimeSetListener {
@@ -81,6 +84,7 @@ protected void onCreate(Bundle savedInstanceState) {
8184
setContentView(R.layout.activity_main);
8285

8386
ButterKnife.bind(this);
87+
EventBus.getDefault().register(this);
8488
toolbar = (Toolbar) outerToolbar.findViewById(R.id.toolbar);
8589

8690
// This method starts the bootstrap chain.
@@ -103,10 +107,10 @@ private void initUI() {
103107
}
104108

105109

106-
private void checkPassword() {
107-
if (prefs.getString(Constants.PREF_PASSWORD, null) != null
108-
&& prefs.getBoolean("settings_password_access", false)) {
109-
requestPassword(this, passwordConfirmed -> {
110+
private void checkPassword() {
111+
if (prefs.getString(Constants.PREF_PASSWORD, null) != null
112+
&& prefs.getBoolean("settings_password_access", false)) {
113+
PasswordHelper.requestPassword(this, passwordConfirmed -> {
110114
if (passwordConfirmed) {
111115
init();
112116
} else {
@@ -115,11 +119,16 @@ private void checkPassword() {
115119
});
116120
} else {
117121
init();
118-
}
119-
}
122+
}
123+
}
124+
125+
126+
public void onEvent(PasswordRemovedEvent passwordRemovedEvent) {
127+
init();
128+
}
120129

121130

122-
private void init() {
131+
private void init() {
123132
mFragmentManager = getSupportFragmentManager();
124133

125134
NavigationDrawerFragment mNavigationDrawerFragment = (NavigationDrawerFragment) mFragmentManager

0 commit comments

Comments
 (0)