From 896f9327d6b60fa7782b290c299d1b048078b647 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Thu, 20 Feb 2020 11:58:00 +0100 Subject: [PATCH] Fix error messages #431 --- .../keepass/activities/EntryActivity.kt | 6 +++- .../keepass/activities/EntryEditActivity.kt | 20 +++++------- .../keepass/activities/GroupActivity.kt | 11 ++----- .../keepass/settings/SettingsActivity.kt | 7 +++++ .../com/kunzisoft/keepass/view/ViewUtil.kt | 12 +++++++ app/src/main/res/layout/activity_toolbar.xml | 31 ++++++++++++------- 6 files changed, 52 insertions(+), 35 deletions(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/EntryActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/EntryActivity.kt index 1ef682c3c..c0478ee0e 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/EntryActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/EntryActivity.kt @@ -34,6 +34,7 @@ import android.widget.ProgressBar import android.widget.Toast import androidx.appcompat.app.AlertDialog import androidx.appcompat.widget.Toolbar +import androidx.coordinatorlayout.widget.CoordinatorLayout import com.google.android.material.appbar.CollapsingToolbarLayout import com.kunzisoft.keepass.R import com.kunzisoft.keepass.activities.helpers.ReadOnlyHelper @@ -60,11 +61,13 @@ import com.kunzisoft.keepass.utils.UriUtil import com.kunzisoft.keepass.utils.createDocument import com.kunzisoft.keepass.utils.onCreateDocumentResult import com.kunzisoft.keepass.view.EntryContentsView +import com.kunzisoft.keepass.view.showActionError import java.util.* import kotlin.collections.HashMap class EntryActivity : LockingActivity() { + private var coordinatorLayout: CoordinatorLayout? = null private var collapsingToolbarLayout: CollapsingToolbarLayout? = null private var titleIconView: ImageView? = null private var historyView: View? = null @@ -114,6 +117,7 @@ class EntryActivity : LockingActivity() { invalidateOptionsMenu() // Get views + coordinatorLayout = findViewById(R.id.toolbar_coordinator) collapsingToolbarLayout = findViewById(R.id.toolbar_layout) titleIconView = findViewById(R.id.entry_icon) historyView = findViewById(R.id.history_container) @@ -137,7 +141,7 @@ class EntryActivity : LockingActivity() { finish() } } - // TODO Visual error for entry history + coordinatorLayout?.showActionError(result) } } diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/EntryEditActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/EntryEditActivity.kt index 8b7f3c5c8..803948ccc 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/EntryEditActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/EntryEditActivity.kt @@ -29,13 +29,15 @@ import android.view.View import android.widget.ScrollView import androidx.appcompat.widget.Toolbar import androidx.coordinatorlayout.widget.CoordinatorLayout -import com.google.android.material.snackbar.Snackbar import com.kunzisoft.keepass.R -import com.kunzisoft.keepass.activities.dialogs.SetOTPDialogFragment import com.kunzisoft.keepass.activities.dialogs.GeneratePasswordDialogFragment import com.kunzisoft.keepass.activities.dialogs.IconPickerDialogFragment +import com.kunzisoft.keepass.activities.dialogs.SetOTPDialogFragment import com.kunzisoft.keepass.activities.lock.LockingActivity -import com.kunzisoft.keepass.database.element.* +import com.kunzisoft.keepass.database.element.Database +import com.kunzisoft.keepass.database.element.DateInstant +import com.kunzisoft.keepass.database.element.Entry +import com.kunzisoft.keepass.database.element.Group import com.kunzisoft.keepass.database.element.icon.IconImage import com.kunzisoft.keepass.database.element.node.NodeId import com.kunzisoft.keepass.education.EntryEditActivityEducation @@ -49,7 +51,7 @@ import com.kunzisoft.keepass.settings.PreferencesUtil import com.kunzisoft.keepass.timeout.TimeoutHelper import com.kunzisoft.keepass.utils.MenuUtil import com.kunzisoft.keepass.view.EntryEditContentsView -import com.kunzisoft.keepass.view.asError +import com.kunzisoft.keepass.view.showActionError import java.util.* class EntryEditActivity : LockingActivity(), @@ -188,15 +190,7 @@ class EntryEditActivity : LockingActivity(), finish() } } - - // Show error - if (!result.isSuccess) { - result.message?.let { resultMessage -> - Snackbar.make(coordinatorLayout!!, - resultMessage, - Snackbar.LENGTH_LONG).asError().show() - } - } + coordinatorLayout?.showActionError(result) } } diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/GroupActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/GroupActivity.kt index c60874e50..72c939bc0 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/GroupActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/GroupActivity.kt @@ -76,6 +76,7 @@ import com.kunzisoft.keepass.utils.MenuUtil import com.kunzisoft.keepass.view.AddNodeButtonView import com.kunzisoft.keepass.view.ToolbarAction import com.kunzisoft.keepass.view.asError +import com.kunzisoft.keepass.view.showActionError class GroupActivity : LockingActivity(), GroupEditDialogFragment.EditGroupListener, @@ -251,15 +252,7 @@ class GroupActivity : LockingActivity(), } } - if (!result.isSuccess) { - coordinatorLayout?.let { coordinatorLayout -> - result.exception?.errorId?.let { errorId -> - Snackbar.make(coordinatorLayout, errorId, Snackbar.LENGTH_LONG).asError().show() - } ?: result.message?.let { message -> - Snackbar.make(coordinatorLayout, message, Snackbar.LENGTH_LONG).asError().show() - } - } - } + coordinatorLayout?.showActionError(result) finishNodeAction() diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/SettingsActivity.kt b/app/src/main/java/com/kunzisoft/keepass/settings/SettingsActivity.kt index 81e8ad6c7..f2099c35a 100644 --- a/app/src/main/java/com/kunzisoft/keepass/settings/SettingsActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/settings/SettingsActivity.kt @@ -27,6 +27,7 @@ import android.net.Uri import android.os.Bundle import android.view.MenuItem import androidx.appcompat.widget.Toolbar +import androidx.coordinatorlayout.widget.CoordinatorLayout import androidx.fragment.app.Fragment import com.kunzisoft.keepass.R import com.kunzisoft.keepass.activities.dialogs.AssignMasterKeyDialogFragment @@ -35,6 +36,7 @@ import com.kunzisoft.keepass.activities.helpers.ReadOnlyHelper import com.kunzisoft.keepass.activities.lock.LockingActivity import com.kunzisoft.keepass.database.element.Database import com.kunzisoft.keepass.timeout.TimeoutHelper +import com.kunzisoft.keepass.view.showActionError open class SettingsActivity : LockingActivity(), @@ -43,6 +45,7 @@ open class SettingsActivity private var backupManager: BackupManager? = null + private var coordinatorLayout: CoordinatorLayout? = null private var toolbar: Toolbar? = null companion object { @@ -74,6 +77,8 @@ open class SettingsActivity super.onCreate(savedInstanceState) setContentView(R.layout.activity_toolbar) + + coordinatorLayout = findViewById(R.id.toolbar_coordinator) toolbar = findViewById(R.id.toolbar) toolbar?.setTitle(R.string.settings) setSupportActionBar(toolbar) @@ -92,6 +97,8 @@ open class SettingsActivity (supportFragmentManager .findFragmentByTag(TAG_NESTED) as NestedSettingsFragment?) ?.onProgressDialogThreadResult(actionTask, result) + + coordinatorLayout?.showActionError(result) } } diff --git a/app/src/main/java/com/kunzisoft/keepass/view/ViewUtil.kt b/app/src/main/java/com/kunzisoft/keepass/view/ViewUtil.kt index 1daec2536..17fe14f4a 100644 --- a/app/src/main/java/com/kunzisoft/keepass/view/ViewUtil.kt +++ b/app/src/main/java/com/kunzisoft/keepass/view/ViewUtil.kt @@ -29,8 +29,10 @@ import android.view.View import android.view.animation.AccelerateDecelerateInterpolator import android.widget.TextView import androidx.appcompat.widget.Toolbar +import androidx.coordinatorlayout.widget.CoordinatorLayout import com.google.android.material.snackbar.Snackbar import com.kunzisoft.keepass.R +import com.kunzisoft.keepass.tasks.ActionRunnable /** * Replace font by monospace, must be called after seText() @@ -99,4 +101,14 @@ fun Toolbar.expand(animate: Boolean = true) { play(slideAnimator) interpolator = AccelerateDecelerateInterpolator() }.start() +} + +fun CoordinatorLayout.showActionError(result: ActionRunnable.Result) { + if (!result.isSuccess) { + result.exception?.errorId?.let { errorId -> + Snackbar.make(this, errorId, Snackbar.LENGTH_LONG).asError().show() + } ?: result.message?.let { message -> + Snackbar.make(this, message, Snackbar.LENGTH_LONG).asError().show() + } + } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_toolbar.xml b/app/src/main/res/layout/activity_toolbar.xml index bede06a96..38a889f3e 100644 --- a/app/src/main/res/layout/activity_toolbar.xml +++ b/app/src/main/res/layout/activity_toolbar.xml @@ -17,18 +17,25 @@ You should have received a copy of the GNU General Public License along with KeePassDX. If not, see . --> - - - - - + + android:layout_height="match_parent"> - \ No newline at end of file + + + + + + \ No newline at end of file