Advance search expand animation

This commit is contained in:
J-Jamet
2022-01-30 23:26:47 +01:00
parent 547971545e
commit 32bfdca562
3 changed files with 91 additions and 63 deletions

View File

@@ -90,6 +90,8 @@ class GroupActivity : DatabaseLockActivity(),
private var databaseColorView: ImageView? = null
private var databaseNameView: TextView? = null
private var searchContainer: ViewGroup? = null
private var searchAdvanceFiltersContainer: ViewGroup? = null
private var searchExpandButton: ImageView? = null
private var searchNumbers: TextView? = null
private var searchView: SearchView? = null
private var toolbarBreadcrumb: Toolbar? = null
@@ -121,12 +123,16 @@ class GroupActivity : DatabaseLockActivity(),
private val mOnSearchActionExpandListener = object : MenuItem.OnActionExpandListener {
override fun onMenuItemActionExpand(p0: MenuItem?): Boolean {
toolbarBreadcrumb?.visibility = View.GONE
searchAdvanceFiltersContainer?.visibility = View.GONE
searchContainer?.visibility = View.VISIBLE
return true
}
override fun onMenuItemActionCollapse(p0: MenuItem?): Boolean {
searchContainer?.visibility = View.GONE
searchAdvanceFiltersContainer?.visibility = View.GONE
toolbarBreadcrumb?.visibility = View.VISIBLE
mSearchGroup = null
loadGroup(mDatabase)
return true
@@ -170,6 +176,8 @@ class GroupActivity : DatabaseLockActivity(),
databaseColorView = findViewById(R.id.database_color)
databaseNameView = findViewById(R.id.database_name)
searchContainer = findViewById(R.id.search_container)
searchAdvanceFiltersContainer = findViewById(R.id.search_advance_filters)
searchExpandButton = findViewById(R.id.search_expand)
searchNumbers = findViewById(R.id.search_numbers)
toolbarBreadcrumb = findViewById(R.id.toolbar_breadcrumb)
breadcrumbListView = findViewById(R.id.breadcrumb_list)
@@ -248,6 +256,20 @@ class GroupActivity : DatabaseLockActivity(),
savedInstanceState.remove(PREVIOUS_GROUPS_IDS_KEY)
}
// Expand menu with button
searchExpandButton?.setOnClickListener {
searchAdvanceFiltersContainer?.let { advanceSearch ->
val isVisible = advanceSearch.visibility == View.VISIBLE
if (isVisible)
advanceSearch.collapse()
else {
advanceSearch.expand(true,
resources.getDimension(R.dimen.advanced_search_height).toInt()
)
}
}
}
// Initialize the fragment with the list
mGroupFragment =
supportFragmentManager.findFragmentByTag(GROUP_FRAGMENT_TAG) as GroupFragment?
@@ -582,10 +604,8 @@ class GroupActivity : DatabaseLockActivity(),
// Assign title
if (group?.isVirtual == true) {
searchNumbers?.text = group.numberOfChildEntries.toString()
databaseNameContainer?.visibility = View.GONE
toolbarBreadcrumb?.navigationIcon = null
} else {
databaseNameContainer?.visibility = View.VISIBLE
// Add breadcrumb
setBreadcrumbNode(group)
invalidateOptionsMenu()

View File

@@ -102,7 +102,7 @@
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:orientation="vertical"
android:visibility="visible">
android:visibility="gone">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize">
@@ -146,76 +146,83 @@
android:layout_height="wrap_content"
android:text="@string/entry_expires" />
</com.google.android.material.chip.ChipGroup>
<ImageView
<ImageButton
android:id="@+id/search_expand"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_margin="12dp"
style="@style/KeepassDXStyle.ImageButton.Simple"
android:src="@drawable/ic_list_white_24dp"
app:tint="?attr/textColorInverse"/>
</androidx.constraintlayout.widget.ConstraintLayout>
<com.google.android.material.chip.ChipGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:chipSpacingVertical="16dp"
android:paddingTop="12dp"
android:paddingStart="@dimen/default_margin"
android:paddingLeft="@dimen/default_margin"
android:paddingEnd="@dimen/default_margin"
android:paddingRight="@dimen/default_margin"
android:paddingBottom="@dimen/default_margin">
<com.google.android.material.chip.Chip
android:id="@+id/search_chip_title"
android:layout_width="wrap_content"
<FrameLayout
android:id="@+id/search_advance_filters"
android:layout_width="match_parent"
android:layout_height="@dimen/advanced_search_height"
android:visibility="gone">
<com.google.android.material.chip.ChipGroup
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/KeepassDXStyle.Chip.Filter"
android:text="@string/entry_title"/>
<com.google.android.material.chip.Chip
android:id="@+id/search_chip_username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/KeepassDXStyle.Chip.Filter"
android:text="@string/entry_user_name"/>
<com.google.android.material.chip.Chip
android:id="@+id/search_chip_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/KeepassDXStyle.Chip.Filter"
android:text="@string/entry_password"/>
<com.google.android.material.chip.Chip
android:id="@+id/search_chip_url"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/KeepassDXStyle.Chip.Filter"
android:text="@string/entry_url"/>
<com.google.android.material.chip.Chip
android:id="@+id/search_chip_note"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/KeepassDXStyle.Chip.Filter"
android:text="@string/entry_notes"/>
<com.google.android.material.chip.Chip
android:id="@+id/search_chip_other"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/KeepassDXStyle.Chip.Filter"
android:text="@string/other"/>
<com.google.android.material.chip.Chip
android:id="@+id/search_chip_uuid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/KeepassDXStyle.Chip.Filter"
android:text="@string/entry_UUID"/>
<com.google.android.material.chip.Chip
android:id="@+id/search_chip_tag"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/KeepassDXStyle.Chip.Filter"
android:text="@string/tags"/>
</com.google.android.material.chip.ChipGroup>
android:layout_gravity="center"
app:chipSpacingVertical="16dp"
android:paddingTop="12dp"
android:paddingStart="@dimen/default_margin"
android:paddingLeft="@dimen/default_margin"
android:paddingEnd="@dimen/default_margin"
android:paddingRight="@dimen/default_margin"
android:paddingBottom="@dimen/default_margin">
<com.google.android.material.chip.Chip
android:id="@+id/search_chip_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/KeepassDXStyle.Chip.Filter"
android:text="@string/entry_title"/>
<com.google.android.material.chip.Chip
android:id="@+id/search_chip_username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/KeepassDXStyle.Chip.Filter"
android:text="@string/entry_user_name"/>
<com.google.android.material.chip.Chip
android:id="@+id/search_chip_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/KeepassDXStyle.Chip.Filter"
android:text="@string/entry_password"/>
<com.google.android.material.chip.Chip
android:id="@+id/search_chip_url"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/KeepassDXStyle.Chip.Filter"
android:text="@string/entry_url"/>
<com.google.android.material.chip.Chip
android:id="@+id/search_chip_note"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/KeepassDXStyle.Chip.Filter"
android:text="@string/entry_notes"/>
<com.google.android.material.chip.Chip
android:id="@+id/search_chip_other"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/KeepassDXStyle.Chip.Filter"
android:text="@string/other"/>
<com.google.android.material.chip.Chip
android:id="@+id/search_chip_uuid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/KeepassDXStyle.Chip.Filter"
android:text="@string/entry_UUID"/>
<com.google.android.material.chip.Chip
android:id="@+id/search_chip_tag"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/KeepassDXStyle.Chip.Filter"
android:text="@string/tags"/>
</com.google.android.material.chip.ChipGroup>
</FrameLayout>
</LinearLayout>
</FrameLayout>

View File

@@ -34,5 +34,6 @@
<dimen name="hidden_lock_button_size">0dp</dimen>
<dimen name="content_percent">1</dimen>
<dimen name="toolbar_parallax_height">160dp</dimen>
<dimen name="advanced_search_height">160dp</dimen>
<integer name="animation_duration">260</integer>
</resources>