mirror of
https://github.com/Kunzisoft/KeePassDX.git
synced 2025-12-04 15:49:33 +01:00
Add setting to disable education screens
This commit is contained in:
@@ -5,6 +5,7 @@ KeepassDX (2.5.0.0beta12)
|
||||
* New icons for the material pack / vectorization
|
||||
* New adaptive launcher icon
|
||||
* Added a setting to disable the open button when no password is identified
|
||||
* Added a setting to disable the education screens
|
||||
|
||||
KeepassDX (2.5.0.0beta11)
|
||||
* Fix crash in beta10 version
|
||||
|
||||
@@ -217,68 +217,70 @@ public class EntryActivity extends LockingHideActivity {
|
||||
* Displays the explanation for copying a field and editing an entry
|
||||
*/
|
||||
private void checkAndPerformedEducation(Menu menu) {
|
||||
if (PreferencesUtil.isEducationScreensEnabled(this)) {
|
||||
|
||||
if (entryContentsView != null && entryContentsView.isUserNamePresent()
|
||||
&& !PreferencesUtil.isEducationCopyUsernamePerformed(this)) {
|
||||
TapTargetView.showFor(this,
|
||||
TapTarget.forView(findViewById(R.id.entry_user_name_action_image),
|
||||
getString(R.string.education_field_copy_title),
|
||||
getString(R.string.education_field_copy_summary))
|
||||
.textColorInt(Color.WHITE)
|
||||
.tintTarget(false)
|
||||
.cancelable(true),
|
||||
new TapTargetView.Listener() {
|
||||
@Override
|
||||
public void onTargetClick(TapTargetView view) {
|
||||
super.onTargetClick(view);
|
||||
clipboardHelper.timeoutCopyToClipboard(mEntry.getUsername(),
|
||||
getString(R.string.copy_field, getString(R.string.entry_user_name)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onOuterCircleClick(TapTargetView view) {
|
||||
super.onOuterCircleClick(view);
|
||||
view.dismiss(false);
|
||||
// Launch autofill settings
|
||||
startActivity(new Intent(EntryActivity.this, SettingsAutofillActivity.class));
|
||||
}
|
||||
});
|
||||
PreferencesUtil.saveEducationPreference(this,
|
||||
R.string.education_copy_username_key);
|
||||
|
||||
} else if (!PreferencesUtil.isEducationEntryEditPerformed(this)) {
|
||||
|
||||
try {
|
||||
if (entryContentsView != null && entryContentsView.isUserNamePresent()
|
||||
&& !PreferencesUtil.isEducationCopyUsernamePerformed(this)) {
|
||||
TapTargetView.showFor(this,
|
||||
TapTarget.forToolbarMenuItem(toolbar, R.id.menu_edit,
|
||||
getString(R.string.education_entry_edit_title),
|
||||
getString(R.string.education_entry_edit_summary))
|
||||
TapTarget.forView(findViewById(R.id.entry_user_name_action_image),
|
||||
getString(R.string.education_field_copy_title),
|
||||
getString(R.string.education_field_copy_summary))
|
||||
.textColorInt(Color.WHITE)
|
||||
.tintTarget(true)
|
||||
.tintTarget(false)
|
||||
.cancelable(true),
|
||||
new TapTargetView.Listener() {
|
||||
@Override
|
||||
public void onTargetClick(TapTargetView view) {
|
||||
super.onTargetClick(view);
|
||||
MenuItem editItem = menu.findItem(R.id.menu_edit);
|
||||
onOptionsItemSelected(editItem);
|
||||
clipboardHelper.timeoutCopyToClipboard(mEntry.getUsername(),
|
||||
getString(R.string.copy_field, getString(R.string.entry_user_name)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onOuterCircleClick(TapTargetView view) {
|
||||
super.onOuterCircleClick(view);
|
||||
view.dismiss(false);
|
||||
// Open Keepass doc to create field references
|
||||
Intent browserIntent = new Intent(Intent.ACTION_VIEW,
|
||||
Uri.parse(getString(R.string.field_references_url)));
|
||||
startActivity(browserIntent);
|
||||
// Launch autofill settings
|
||||
startActivity(new Intent(EntryActivity.this, SettingsAutofillActivity.class));
|
||||
}
|
||||
});
|
||||
PreferencesUtil.saveEducationPreference(this,
|
||||
R.string.education_entry_edit_key);
|
||||
} catch (Exception e) {
|
||||
// If icon not visible
|
||||
Log.w(TAG, "Can't performed education for entry's edition");
|
||||
R.string.education_copy_username_key);
|
||||
|
||||
} else if (!PreferencesUtil.isEducationEntryEditPerformed(this)) {
|
||||
|
||||
try {
|
||||
TapTargetView.showFor(this,
|
||||
TapTarget.forToolbarMenuItem(toolbar, R.id.menu_edit,
|
||||
getString(R.string.education_entry_edit_title),
|
||||
getString(R.string.education_entry_edit_summary))
|
||||
.textColorInt(Color.WHITE)
|
||||
.tintTarget(true)
|
||||
.cancelable(true),
|
||||
new TapTargetView.Listener() {
|
||||
@Override
|
||||
public void onTargetClick(TapTargetView view) {
|
||||
super.onTargetClick(view);
|
||||
MenuItem editItem = menu.findItem(R.id.menu_edit);
|
||||
onOptionsItemSelected(editItem);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onOuterCircleClick(TapTargetView view) {
|
||||
super.onOuterCircleClick(view);
|
||||
view.dismiss(false);
|
||||
// Open Keepass doc to create field references
|
||||
Intent browserIntent = new Intent(Intent.ACTION_VIEW,
|
||||
Uri.parse(getString(R.string.field_references_url)));
|
||||
startActivity(browserIntent);
|
||||
}
|
||||
});
|
||||
PreferencesUtil.saveEducationPreference(this,
|
||||
R.string.education_entry_edit_key);
|
||||
} catch (Exception e) {
|
||||
// If icon not visible
|
||||
Log.w(TAG, "Can't performed education for entry's edition");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -276,59 +276,58 @@ public class EntryEditActivity extends LockingHideActivity
|
||||
* Displays the explanation for the icon selection, the password generator and for a new field
|
||||
*/
|
||||
private void checkAndPerformedEducation() {
|
||||
if (PreferencesUtil.isEducationScreensEnabled(this)) {
|
||||
// TODO Show icon
|
||||
|
||||
// TODO Show icon
|
||||
if (!PreferencesUtil.isEducationPasswordGeneratorPerformed(this)) {
|
||||
TapTargetView.showFor(this,
|
||||
TapTarget.forView(generatePasswordView,
|
||||
getString(R.string.education_generate_password_title),
|
||||
getString(R.string.education_generate_password_summary))
|
||||
.textColorInt(Color.WHITE)
|
||||
.tintTarget(false)
|
||||
.cancelable(true),
|
||||
new TapTargetView.Listener() {
|
||||
@Override
|
||||
public void onTargetClick(TapTargetView view) {
|
||||
super.onTargetClick(view);
|
||||
openPasswordGenerator();
|
||||
}
|
||||
|
||||
if (!PreferencesUtil.isEducationPasswordGeneratorPerformed(this)) {
|
||||
TapTargetView.showFor(this,
|
||||
TapTarget.forView(generatePasswordView,
|
||||
getString(R.string.education_generate_password_title),
|
||||
getString(R.string.education_generate_password_summary))
|
||||
.textColorInt(Color.WHITE)
|
||||
.tintTarget(false)
|
||||
.cancelable(true),
|
||||
new TapTargetView.Listener() {
|
||||
@Override
|
||||
public void onTargetClick(TapTargetView view) {
|
||||
super.onTargetClick(view);
|
||||
openPasswordGenerator();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onOuterCircleClick(TapTargetView view) {
|
||||
super.onOuterCircleClick(view);
|
||||
view.dismiss(false);
|
||||
}
|
||||
});
|
||||
PreferencesUtil.saveEducationPreference(this,
|
||||
R.string.education_password_generator_key);
|
||||
}
|
||||
|
||||
else if (mEntry.allowExtraFields()
|
||||
@Override
|
||||
public void onOuterCircleClick(TapTargetView view) {
|
||||
super.onOuterCircleClick(view);
|
||||
view.dismiss(false);
|
||||
}
|
||||
});
|
||||
PreferencesUtil.saveEducationPreference(this,
|
||||
R.string.education_password_generator_key);
|
||||
} else if (mEntry.allowExtraFields()
|
||||
&& !mEntry.containsCustomFields()
|
||||
&& !PreferencesUtil.isEducationEntryNewFieldPerformed(this)) {
|
||||
TapTargetView.showFor(this,
|
||||
TapTarget.forView(addNewFieldView,
|
||||
getString(R.string.education_entry_new_field_title),
|
||||
getString(R.string.education_entry_new_field_summary))
|
||||
.textColorInt(Color.WHITE)
|
||||
.tintTarget(false)
|
||||
.cancelable(true),
|
||||
new TapTargetView.Listener() {
|
||||
@Override
|
||||
public void onTargetClick(TapTargetView view) {
|
||||
super.onTargetClick(view);
|
||||
addNewCustomField();
|
||||
}
|
||||
TapTargetView.showFor(this,
|
||||
TapTarget.forView(addNewFieldView,
|
||||
getString(R.string.education_entry_new_field_title),
|
||||
getString(R.string.education_entry_new_field_summary))
|
||||
.textColorInt(Color.WHITE)
|
||||
.tintTarget(false)
|
||||
.cancelable(true),
|
||||
new TapTargetView.Listener() {
|
||||
@Override
|
||||
public void onTargetClick(TapTargetView view) {
|
||||
super.onTargetClick(view);
|
||||
addNewCustomField();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onOuterCircleClick(TapTargetView view) {
|
||||
super.onOuterCircleClick(view);
|
||||
view.dismiss(false);
|
||||
}
|
||||
});
|
||||
PreferencesUtil.saveEducationPreference(this,
|
||||
R.string.education_entry_new_field_key);
|
||||
@Override
|
||||
public void onOuterCircleClick(TapTargetView view) {
|
||||
super.onOuterCircleClick(view);
|
||||
view.dismiss(false);
|
||||
}
|
||||
});
|
||||
PreferencesUtil.saveEducationPreference(this,
|
||||
R.string.education_entry_new_field_key);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -491,129 +491,131 @@ public class GroupActivity extends ListNodesActivity
|
||||
* Displays the explanation for a add, search, sort a new node and lock the database
|
||||
*/
|
||||
private void checkAndPerformedEducation(Menu menu) {
|
||||
if (PreferencesUtil.isEducationScreensEnabled(this)) {
|
||||
|
||||
// If no node, show education to add new one
|
||||
if (listNodesFragment != null
|
||||
&& listNodesFragment.isEmpty()) {
|
||||
if (!PreferencesUtil.isEducationNewNodePerformed(this)) {
|
||||
// If no node, show education to add new one
|
||||
if (listNodesFragment != null
|
||||
&& listNodesFragment.isEmpty()) {
|
||||
if (!PreferencesUtil.isEducationNewNodePerformed(this)) {
|
||||
|
||||
TapTargetView.showFor(this,
|
||||
TapTarget.forView(findViewById(R.id.add_button),
|
||||
getString(R.string.education_new_node_title),
|
||||
getString(R.string.education_new_node_summary))
|
||||
.textColorInt(Color.WHITE)
|
||||
.tintTarget(false)
|
||||
.cancelable(true),
|
||||
new TapTargetView.Listener() {
|
||||
@Override
|
||||
public void onTargetClick(TapTargetView view) {
|
||||
super.onTargetClick(view);
|
||||
addNodeButtonView.openButtonIfClose();
|
||||
}
|
||||
TapTargetView.showFor(this,
|
||||
TapTarget.forView(findViewById(R.id.add_button),
|
||||
getString(R.string.education_new_node_title),
|
||||
getString(R.string.education_new_node_summary))
|
||||
.textColorInt(Color.WHITE)
|
||||
.tintTarget(false)
|
||||
.cancelable(true),
|
||||
new TapTargetView.Listener() {
|
||||
@Override
|
||||
public void onTargetClick(TapTargetView view) {
|
||||
super.onTargetClick(view);
|
||||
addNodeButtonView.openButtonIfClose();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onOuterCircleClick(TapTargetView view) {
|
||||
super.onOuterCircleClick(view);
|
||||
view.dismiss(false);
|
||||
}
|
||||
});
|
||||
PreferencesUtil.saveEducationPreference(this,
|
||||
R.string.education_new_node_key);
|
||||
@Override
|
||||
public void onOuterCircleClick(TapTargetView view) {
|
||||
super.onOuterCircleClick(view);
|
||||
view.dismiss(false);
|
||||
}
|
||||
});
|
||||
PreferencesUtil.saveEducationPreference(this,
|
||||
R.string.education_new_node_key);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
// Else show the search education
|
||||
else if (!PreferencesUtil.isEducationSearchPerformed(this)) {
|
||||
// Else show the search education
|
||||
else if (!PreferencesUtil.isEducationSearchPerformed(this)) {
|
||||
|
||||
try {
|
||||
TapTargetView.showFor(this,
|
||||
TapTarget.forToolbarMenuItem(toolbar, R.id.menu_search,
|
||||
getString(R.string.education_search_title),
|
||||
getString(R.string.education_search_summary))
|
||||
.textColorInt(Color.WHITE)
|
||||
.tintTarget(true)
|
||||
.cancelable(true),
|
||||
new TapTargetView.Listener() {
|
||||
@Override
|
||||
public void onTargetClick(TapTargetView view) {
|
||||
super.onTargetClick(view);
|
||||
MenuItem searchItem = menu.findItem(R.id.menu_search);
|
||||
searchItem.expandActionView();
|
||||
}
|
||||
try {
|
||||
TapTargetView.showFor(this,
|
||||
TapTarget.forToolbarMenuItem(toolbar, R.id.menu_search,
|
||||
getString(R.string.education_search_title),
|
||||
getString(R.string.education_search_summary))
|
||||
.textColorInt(Color.WHITE)
|
||||
.tintTarget(true)
|
||||
.cancelable(true),
|
||||
new TapTargetView.Listener() {
|
||||
@Override
|
||||
public void onTargetClick(TapTargetView view) {
|
||||
super.onTargetClick(view);
|
||||
MenuItem searchItem = menu.findItem(R.id.menu_search);
|
||||
searchItem.expandActionView();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onOuterCircleClick(TapTargetView view) {
|
||||
super.onOuterCircleClick(view);
|
||||
view.dismiss(false);
|
||||
}
|
||||
});
|
||||
PreferencesUtil.saveEducationPreference(this,
|
||||
R.string.education_search_key);
|
||||
} catch (Exception e) {
|
||||
// If icon not visible
|
||||
Log.w(TAG, "Can't performed education for search");
|
||||
@Override
|
||||
public void onOuterCircleClick(TapTargetView view) {
|
||||
super.onOuterCircleClick(view);
|
||||
view.dismiss(false);
|
||||
}
|
||||
});
|
||||
PreferencesUtil.saveEducationPreference(this,
|
||||
R.string.education_search_key);
|
||||
} catch (Exception e) {
|
||||
// If icon not visible
|
||||
Log.w(TAG, "Can't performed education for search");
|
||||
}
|
||||
}
|
||||
}
|
||||
// Else show the sort education
|
||||
else if (!PreferencesUtil.isEducationSortPerformed(this)) {
|
||||
// Else show the sort education
|
||||
else if (!PreferencesUtil.isEducationSortPerformed(this)) {
|
||||
|
||||
try {
|
||||
TapTargetView.showFor(this,
|
||||
TapTarget.forToolbarMenuItem(toolbar, R.id.menu_sort,
|
||||
getString(R.string.education_sort_title),
|
||||
getString(R.string.education_sort_summary))
|
||||
.textColorInt(Color.WHITE)
|
||||
.tintTarget(true)
|
||||
.cancelable(true),
|
||||
new TapTargetView.Listener() {
|
||||
@Override
|
||||
public void onTargetClick(TapTargetView view) {
|
||||
super.onTargetClick(view);
|
||||
MenuItem sortItem = menu.findItem(R.id.menu_sort);
|
||||
onOptionsItemSelected(sortItem);
|
||||
}
|
||||
try {
|
||||
TapTargetView.showFor(this,
|
||||
TapTarget.forToolbarMenuItem(toolbar, R.id.menu_sort,
|
||||
getString(R.string.education_sort_title),
|
||||
getString(R.string.education_sort_summary))
|
||||
.textColorInt(Color.WHITE)
|
||||
.tintTarget(true)
|
||||
.cancelable(true),
|
||||
new TapTargetView.Listener() {
|
||||
@Override
|
||||
public void onTargetClick(TapTargetView view) {
|
||||
super.onTargetClick(view);
|
||||
MenuItem sortItem = menu.findItem(R.id.menu_sort);
|
||||
onOptionsItemSelected(sortItem);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onOuterCircleClick(TapTargetView view) {
|
||||
super.onOuterCircleClick(view);
|
||||
view.dismiss(false);
|
||||
}
|
||||
});
|
||||
PreferencesUtil.saveEducationPreference(this,
|
||||
R.string.education_sort_key);
|
||||
} catch (Exception e) {
|
||||
Log.w(TAG, "Can't performed education for sort");
|
||||
@Override
|
||||
public void onOuterCircleClick(TapTargetView view) {
|
||||
super.onOuterCircleClick(view);
|
||||
view.dismiss(false);
|
||||
}
|
||||
});
|
||||
PreferencesUtil.saveEducationPreference(this,
|
||||
R.string.education_sort_key);
|
||||
} catch (Exception e) {
|
||||
Log.w(TAG, "Can't performed education for sort");
|
||||
}
|
||||
}
|
||||
}
|
||||
// Else show the lock education
|
||||
else if (!PreferencesUtil.isEducationLockPerformed(this)) {
|
||||
// Else show the lock education
|
||||
else if (!PreferencesUtil.isEducationLockPerformed(this)) {
|
||||
|
||||
try {
|
||||
TapTargetView.showFor(this,
|
||||
TapTarget.forToolbarMenuItem(toolbar, R.id.menu_lock,
|
||||
getString(R.string.education_lock_title),
|
||||
getString(R.string.education_lock_summary))
|
||||
.textColorInt(Color.WHITE)
|
||||
.tintTarget(true)
|
||||
.cancelable(true),
|
||||
new TapTargetView.Listener() {
|
||||
@Override
|
||||
public void onTargetClick(TapTargetView view) {
|
||||
super.onTargetClick(view);
|
||||
MenuItem lockItem = menu.findItem(R.id.menu_lock);
|
||||
onOptionsItemSelected(lockItem);
|
||||
}
|
||||
try {
|
||||
TapTargetView.showFor(this,
|
||||
TapTarget.forToolbarMenuItem(toolbar, R.id.menu_lock,
|
||||
getString(R.string.education_lock_title),
|
||||
getString(R.string.education_lock_summary))
|
||||
.textColorInt(Color.WHITE)
|
||||
.tintTarget(true)
|
||||
.cancelable(true),
|
||||
new TapTargetView.Listener() {
|
||||
@Override
|
||||
public void onTargetClick(TapTargetView view) {
|
||||
super.onTargetClick(view);
|
||||
MenuItem lockItem = menu.findItem(R.id.menu_lock);
|
||||
onOptionsItemSelected(lockItem);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onOuterCircleClick(TapTargetView view) {
|
||||
super.onOuterCircleClick(view);
|
||||
view.dismiss(false);
|
||||
}
|
||||
});
|
||||
PreferencesUtil.saveEducationPreference(this,
|
||||
R.string.education_lock_key);
|
||||
} catch (Exception e) {
|
||||
Log.w(TAG, "Can't performed education for lock");
|
||||
@Override
|
||||
public void onOuterCircleClick(TapTargetView view) {
|
||||
super.onOuterCircleClick(view);
|
||||
view.dismiss(false);
|
||||
}
|
||||
});
|
||||
PreferencesUtil.saveEducationPreference(this,
|
||||
R.string.education_lock_key);
|
||||
} catch (Exception e) {
|
||||
Log.w(TAG, "Can't performed education for lock");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -355,60 +355,62 @@ public class FileSelectActivity extends StylishActivity implements
|
||||
* Displays the explanation for a database selection
|
||||
*/
|
||||
private void checkAndPerformedEducationForSelection() {
|
||||
if (PreferencesUtil.isEducationScreensEnabled(this)) {
|
||||
|
||||
if (!PreferencesUtil.isEducationSelectDatabasePerformed(this)
|
||||
&& browseButtonView != null) {
|
||||
if (!PreferencesUtil.isEducationSelectDatabasePerformed(this)
|
||||
&& browseButtonView != null) {
|
||||
|
||||
TapTargetView.showFor(FileSelectActivity.this,
|
||||
TapTarget.forView(browseButtonView,
|
||||
getString(R.string.education_select_database_title),
|
||||
getString(R.string.education_select_database_summary))
|
||||
.icon(ContextCompat.getDrawable(this, R.drawable.ic_folder_white_24dp))
|
||||
.textColorInt(Color.WHITE)
|
||||
.tintTarget(true)
|
||||
.cancelable(true),
|
||||
new TapTargetView.Listener() {
|
||||
@Override
|
||||
public void onTargetClick(TapTargetView view) {
|
||||
super.onTargetClick(view);
|
||||
keyFileHelper.getOpenFileOnClickViewListener().onClick(view);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onOuterCircleClick(TapTargetView view) {
|
||||
super.onOuterCircleClick(view);
|
||||
view.dismiss(false);
|
||||
|
||||
if (!PreferencesUtil.isEducationOpenLinkDatabasePerformed(FileSelectActivity.this)) {
|
||||
|
||||
TapTargetView.showFor(FileSelectActivity.this,
|
||||
TapTarget.forView(fileSelectExpandableButton,
|
||||
getString(R.string.education_open_link_database_title),
|
||||
getString(R.string.education_open_link_database_summary))
|
||||
.icon(ContextCompat.getDrawable(FileSelectActivity.this, R.drawable.ic_link_white_24dp))
|
||||
.textColorInt(Color.WHITE)
|
||||
.tintTarget(true)
|
||||
.cancelable(true),
|
||||
new TapTargetView.Listener() {
|
||||
@Override
|
||||
public void onTargetClick(TapTargetView view) {
|
||||
super.onTargetClick(view);
|
||||
// Do nothing here
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onOuterCircleClick(TapTargetView view) {
|
||||
super.onOuterCircleClick(view);
|
||||
view.dismiss(false);
|
||||
}
|
||||
});
|
||||
PreferencesUtil.saveEducationPreference(FileSelectActivity.this,
|
||||
R.string.education_open_link_db_key);
|
||||
TapTargetView.showFor(FileSelectActivity.this,
|
||||
TapTarget.forView(browseButtonView,
|
||||
getString(R.string.education_select_database_title),
|
||||
getString(R.string.education_select_database_summary))
|
||||
.icon(ContextCompat.getDrawable(this, R.drawable.ic_folder_white_24dp))
|
||||
.textColorInt(Color.WHITE)
|
||||
.tintTarget(true)
|
||||
.cancelable(true),
|
||||
new TapTargetView.Listener() {
|
||||
@Override
|
||||
public void onTargetClick(TapTargetView view) {
|
||||
super.onTargetClick(view);
|
||||
keyFileHelper.getOpenFileOnClickViewListener().onClick(view);
|
||||
}
|
||||
}
|
||||
});
|
||||
PreferencesUtil.saveEducationPreference(FileSelectActivity.this,
|
||||
R.string.education_select_db_key);
|
||||
|
||||
@Override
|
||||
public void onOuterCircleClick(TapTargetView view) {
|
||||
super.onOuterCircleClick(view);
|
||||
view.dismiss(false);
|
||||
|
||||
if (!PreferencesUtil.isEducationOpenLinkDatabasePerformed(FileSelectActivity.this)) {
|
||||
|
||||
TapTargetView.showFor(FileSelectActivity.this,
|
||||
TapTarget.forView(fileSelectExpandableButton,
|
||||
getString(R.string.education_open_link_database_title),
|
||||
getString(R.string.education_open_link_database_summary))
|
||||
.icon(ContextCompat.getDrawable(FileSelectActivity.this, R.drawable.ic_link_white_24dp))
|
||||
.textColorInt(Color.WHITE)
|
||||
.tintTarget(true)
|
||||
.cancelable(true),
|
||||
new TapTargetView.Listener() {
|
||||
@Override
|
||||
public void onTargetClick(TapTargetView view) {
|
||||
super.onTargetClick(view);
|
||||
// Do nothing here
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onOuterCircleClick(TapTargetView view) {
|
||||
super.onOuterCircleClick(view);
|
||||
view.dismiss(false);
|
||||
}
|
||||
});
|
||||
PreferencesUtil.saveEducationPreference(FileSelectActivity.this,
|
||||
R.string.education_open_link_db_key);
|
||||
}
|
||||
}
|
||||
});
|
||||
PreferencesUtil.saveEducationPreference(FileSelectActivity.this,
|
||||
R.string.education_select_db_key);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -385,34 +385,37 @@ public class PasswordActivity extends StylishActivity
|
||||
* Displays the explanation for a database opening with fingerprints if available
|
||||
*/
|
||||
private void checkAndPerformedEducation() {
|
||||
if (!PreferencesUtil.isEducationUnlockPerformed(this)) {
|
||||
if (PreferencesUtil.isEducationScreensEnabled(this)) {
|
||||
|
||||
TapTargetView.showFor(this,
|
||||
TapTarget.forView(findViewById(R.id.password_input_container),
|
||||
getString(R.string.education_unlock_title),
|
||||
getString(R.string.education_unlock_summary))
|
||||
.dimColor(R.color.green)
|
||||
.icon(ContextCompat.getDrawable(this, R.mipmap.ic_launcher_round))
|
||||
.textColorInt(Color.WHITE)
|
||||
.tintTarget(false)
|
||||
.cancelable(true),
|
||||
new TapTargetView.Listener() {
|
||||
@Override
|
||||
public void onTargetClick(TapTargetView view) {
|
||||
super.onTargetClick(view);
|
||||
checkAndPerformedEducationForFingerprint();
|
||||
}
|
||||
if (!PreferencesUtil.isEducationUnlockPerformed(this)) {
|
||||
|
||||
@Override
|
||||
public void onOuterCircleClick(TapTargetView view) {
|
||||
super.onOuterCircleClick(view);
|
||||
view.dismiss(false);
|
||||
checkAndPerformedEducationForFingerprint();
|
||||
TapTargetView.showFor(this,
|
||||
TapTarget.forView(findViewById(R.id.password_input_container),
|
||||
getString(R.string.education_unlock_title),
|
||||
getString(R.string.education_unlock_summary))
|
||||
.dimColor(R.color.green)
|
||||
.icon(ContextCompat.getDrawable(this, R.mipmap.ic_launcher_round))
|
||||
.textColorInt(Color.WHITE)
|
||||
.tintTarget(false)
|
||||
.cancelable(true),
|
||||
new TapTargetView.Listener() {
|
||||
@Override
|
||||
public void onTargetClick(TapTargetView view) {
|
||||
super.onTargetClick(view);
|
||||
checkAndPerformedEducationForFingerprint();
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
// TODO make a period for donation
|
||||
PreferencesUtil.saveEducationPreference(PasswordActivity.this, R.string.education_unlock_key);
|
||||
@Override
|
||||
public void onOuterCircleClick(TapTargetView view) {
|
||||
super.onOuterCircleClick(view);
|
||||
view.dismiss(false);
|
||||
checkAndPerformedEducationForFingerprint();
|
||||
|
||||
}
|
||||
});
|
||||
// TODO make a period for donation
|
||||
PreferencesUtil.saveEducationPreference(PasswordActivity.this, R.string.education_unlock_key);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -421,14 +424,18 @@ public class PasswordActivity extends StylishActivity
|
||||
* Displays fingerprints if available
|
||||
*/
|
||||
private void checkAndPerformedEducationForFingerprint() {
|
||||
if (PreferencesUtil.isFingerprintEnable(getApplicationContext())) {
|
||||
TapTargetView.showFor(this,
|
||||
TapTarget.forView(fingerprintImageView,
|
||||
getString(R.string.education_fingerprint_title),
|
||||
getString(R.string.education_fingerprint_summary))
|
||||
.textColorInt(Color.WHITE)
|
||||
.tintTarget(false)
|
||||
.cancelable(true),
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
|
||||
if ( PreferencesUtil.isFingerprintEnable(getApplicationContext())
|
||||
&& FingerPrintHelper.isFingerprintSupported(FingerprintManagerCompat.from(this))) {
|
||||
|
||||
TapTargetView.showFor(this,
|
||||
TapTarget.forView(fingerprintImageView,
|
||||
getString(R.string.education_fingerprint_title),
|
||||
getString(R.string.education_fingerprint_summary))
|
||||
.textColorInt(Color.WHITE)
|
||||
.tintTarget(false)
|
||||
.cancelable(true),
|
||||
new TapTargetView.Listener() {
|
||||
@Override
|
||||
public void onOuterCircleClick(TapTargetView view) {
|
||||
@@ -436,6 +443,7 @@ public class PasswordActivity extends StylishActivity
|
||||
view.dismiss(false);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -176,6 +176,12 @@ public class PreferencesUtil {
|
||||
R.string.education_entry_new_field_key
|
||||
};
|
||||
|
||||
public static boolean isEducationScreensEnabled(Context context) {
|
||||
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
return sharedPreferences.getBoolean(context.getString(R.string.enable_education_screens_key),
|
||||
context.getResources().getBoolean(R.bool.enable_education_screens_default));
|
||||
}
|
||||
|
||||
/**
|
||||
* Register education preferences as true in EDUCATION_PREFERENCE SharedPreferences
|
||||
*
|
||||
|
||||
@@ -262,8 +262,10 @@
|
||||
<string name="magic_keyboard_title">Magikeyboard</string>
|
||||
<string name="magic_keyboard_summary">Activer un clavier customisé qui permet le renseignement de vos mots de passe et de tous vos champs d\'identité facilement.</string>
|
||||
|
||||
<string name="enable_education_screens_title">Ecrans d\'éducation</string>
|
||||
<string name="enable_education_screens_summary">Met en surbrillance les éléments pour apprendre le fonctionnement de l\'application</string>
|
||||
<string name="reset_education_screens_title">Réinitialiser les écrans d\'éducation</string>
|
||||
<string name="reset_education_screens_summary">Mettre en surbrillance les éléments pour apprendre le fonctionnement de l\'application</string>
|
||||
<string name="reset_education_screens_summary">Réinitialise l\'affichage des éléments d\'éducation</string>
|
||||
<string name="reset_education_screens_text">Ecrans d\'éducation réinitialisés</string>
|
||||
<string name="education_create_database_title">Créez votre fichier de base de données</string>
|
||||
<string name="education_create_database_summary">Vous ne connaissez pas encore KeePass DX, créez votre premier fichier de gestion de mots de passe.</string>
|
||||
|
||||
@@ -81,6 +81,8 @@
|
||||
<string name="database_name_key" translatable="false">database_name_key</string>
|
||||
<string name="database_description_key" translatable="false">database_description_key</string>
|
||||
<string name="database_version_key" translatable="false">database_version_key</string>
|
||||
|
||||
<string name="enable_education_screens_key" translatable="false">enable_education_screens_key</string>
|
||||
<string name="reset_education_screens_key" translatable="false">relaunch_education_screens_key</string>
|
||||
<string name="education_create_db_key" translatable="false">education_create_db_key</string>
|
||||
<string name="education_select_db_key" translatable="false">education_select_db_key</string>
|
||||
@@ -95,6 +97,7 @@
|
||||
<string name="education_password_generator_key" translatable="false">education_password_generator_key</string>
|
||||
<string name="education_entry_new_field_key" translatable="false">education_entry_new_field_key</string>
|
||||
<string name="education_screen_reclicked_key" translatable="false">education_screen_reclicked_key</string>
|
||||
|
||||
<string name="settings_appearance_key" translatable="false">settings_appearance_key</string>
|
||||
<string name="magic_keyboard_key" translatable="false">magic_keyboard_key</string>
|
||||
<string name="magic_keyboard_preference_key" translatable="false">magic_keyboard_preference_key</string>
|
||||
@@ -116,6 +119,7 @@
|
||||
<bool name="monospace_font_fields_enable_default" translatable="false">true</bool>
|
||||
<bool name="auto_open_file_uri_default" translatable="false">true</bool>
|
||||
<bool name="allow_copy_password_default" translatable="false">true</bool>
|
||||
<bool name="enable_education_screens_default" translatable="false">true</bool>
|
||||
<bool name="education_create_db_default" translatable="false">false</bool>
|
||||
<bool name="education_select_db_default" translatable="false">false</bool>
|
||||
<bool name="education_open_link_db_default" translatable="false">false</bool>
|
||||
|
||||
@@ -281,8 +281,10 @@
|
||||
<string name="allow_no_password_title">Allow no password</string>
|
||||
<string name="allow_no_password_summary">Enable the open button if no password identification is selected.</string>
|
||||
|
||||
<string name="enable_education_screens_title">Education screens</string>
|
||||
<string name="enable_education_screens_summary">Highlight the elements to learn how the application works</string>
|
||||
<string name="reset_education_screens_title">Reset education screens</string>
|
||||
<string name="reset_education_screens_summary">Highlight the elements to learn how the application works</string>
|
||||
<string name="reset_education_screens_summary">Reset the display of education items</string>
|
||||
<string name="reset_education_screens_text">Education screens reseted</string>
|
||||
<string name="education_create_database_title">Create your database file</string>
|
||||
<string name="education_create_database_summary">You don\'t know KeePass DX yet, create your first password management file.</string>
|
||||
|
||||
@@ -63,6 +63,11 @@
|
||||
<PreferenceCategory
|
||||
android:title="@string/other">
|
||||
|
||||
<SwitchPreference
|
||||
android:key="@string/enable_education_screens_key"
|
||||
android:title="@string/enable_education_screens_title"
|
||||
android:summary="@string/enable_education_screens_summary"
|
||||
android:defaultValue="@bool/enable_education_screens_default"/>
|
||||
<Preference
|
||||
android:key="@string/reset_education_screens_key"
|
||||
android:title="@string/reset_education_screens_title"
|
||||
|
||||
@@ -4,3 +4,4 @@
|
||||
* New icons for the material pack
|
||||
* New adaptive launcher icon
|
||||
* Added a setting to disable the open button when no password is identified
|
||||
* Added a setting to disable the education screens
|
||||
@@ -4,3 +4,4 @@
|
||||
* Nouveaux icones pour le pack material
|
||||
* Nouvel icone de lancement adaptatif
|
||||
* Ajout d'un paramètre pour désactiver le bouton d'ouverture quand aucun mot de passe n'est identifié
|
||||
* Ajout d'un paramètre pour désactiver les écrans d'éducation
|
||||
Reference in New Issue
Block a user