2022-03-04 07:46:39 +01:00
|
|
|
package org.thoughtcrime.securesms.messagerequests
|
|
|
|
|
|
|
|
import android.content.Context
|
2022-09-13 07:06:46 +02:00
|
|
|
import android.content.res.ColorStateList
|
2022-03-04 07:46:39 +01:00
|
|
|
import android.database.Cursor
|
|
|
|
import android.text.SpannableString
|
|
|
|
import android.text.style.ForegroundColorSpan
|
New app theming (#913)
* feat: start new app theming feature
* feat: add some theming colours
* refactor: start refactoring themes and colours to use dynamic attributes
* feat: adding more colours and switching over default colours to be theme based instead of hard-coded or day/night specific
* refactor: take a look at ocean light and logo colour
* feat: global search colours for light and dark ocean
* feat: more styling
* feat: adding themes to conversation activity and refactoring the base theme to apply over the top of the activity's theme so it retains noActionBar etc
* feat: add dynamic accent color
* docs: add todo for changing how accent colour is applied
* feat: update new theming to use override primary style so that the regular colorAccent attribute can be used in existing layouts
* feat: coordinating styles across layouts, fixing up pinned icons and naming for conversation list items
* refactor: re-styling layouts to match new themes and attributes. Need to figure out action mode close button
* refactor: remove @color/text and replace with ?android:textColorPrimary to override in themes
* refactor: add context theme wrapper to bottom sheet dialog that references accent color
* fix: input bar bug fix and preference activity themes
* refactor: new settings menu options
* fix: crash for PNModeActivity.kt
refactor: move ordering in seed dialog to match designs, copy changes to match new settings menu
* feat: add new appearance settings activity
* refactor: title and VM changes
* fix: correct override
* feat: add theme appearance screen UI features and start VM implementation. re-add legacy theme utils to get default for migration
* fix: compile errors and missing themes from emoji features
* refactor: remove background shape alteration and old bottom sheet styles, re-add the theme mode attr
* feat: appearance screen wired up, just need to refresh theme
* feat: add theme state recreation and fix match system settings option
* refactor: add bottom margin
* feat: explore custom preference category
* feat: add the customized session theme for CorrectedPreferenceFragment
* feat: replace AppProtectionPreferenceFragment to extend ListSummaryPreferenceFragment
* refactor: change drawable style and remove explicit dividers
* refactor: remove divider in CorrectedPreferenceFragment
* feat: add theme state check on resume, might be jarring currently
* feat: add preference divider elements for settings menu
* refactor: settings menu redesigns
* refactor: change led preference to integer and refactor TextSecurePreferences.kt
* feat: add scroll parcel to save/restore hierarchy on restart with appearance changes
* feat: add the conversations blocked contacts and refactor preference order and copy
* feat: add blocked contacts activity, basic layout and vm
* feat: add unblock DB functions and storage protocol, start working on the DB query state flow, might have to just implement recipient on modified listener
* feat: add blocked contacts and notif recipient listeners
* feat: add recipient db reader
* feat: add blocked contact interactions and fix a theming crash for notifications
* feat: introduce better equals and hashcode implementations to recipient, replace home diff util content check with hashcode-based comparison
* feat: add settings menu vectors
* fix: preview compile error
* refactor: migrating settings menu to new designs
* feat: help menu
* refactor: simplify link opening
* refactor: remove space
* feat: refactor preferences and start theming for light mode options
* refactor: fixing dark and light modes with dialogs
* refactor: popup dialogs use proper themes now
* refactor: alert dialogs and media edit fragments use attribute references
* refactor: use input bar button attribute instead color control normal in vector tint
* refactor: transparency, dialog fixes, notification fix
* refactor: attrs and styles for buttons
* fix: use prominent button color on the outline button's border
* fix: fix the trash
* refactor: remove the appearance
* refactor: avatar placeholder generation, chips and element border styles
* refactor: use colors instead of style references
* refactor: theming changes to match designs and feedback
* refactor: the titles are bold and the categories are tertiary coloured now
* fix: appearance settings match preferences, search bottom bar uses themed attributes
* refactor: increase setting button height
* Update clear all data dialog
* Update seed dialog
* refactor: more qa feedback changes
* feat: add new TLs and fa-rIR TLs
* Update notification content dialog
* Fix message requests clear all button text color
* feat: re-add screenshot observer
* refactor: make send tint accent color
* feat: add unread background differences
* fix: change unread count indicator
* build: upgrade build numbers
* Fix message requests popupmenu background color
* fix: crash from attr reference in color attribute
* build: upgrade build number
* fix: message bubbles, thumbnail backgrounds, search bar visibility with input bar, attachment buttons
* fix: tertiary text for keyboard page search view
* fix: emoji overflow colour differences
* fix: reaction pill dialog background is now correct colour
* Add style to reactions tab layout
* fix: appearance activity reverting primary color at correct time
* fix: show call privacy warning every time instead of just once
* fix: gradient background(?) and audio autoplay disable
* fix: crash in all media containing documents
* fix: reaction dialog heading fixes
* Add style to reactions tab layout
* fix: remove gradient backgrounds
* fix: adding new reaction normal text attribute to try correct the tab layout
* fix: ocean dark unread/read colours
* build; update build number
* build: update build number
Co-authored-by: charles <charles@oxen.io>
2022-10-12 08:05:55 +02:00
|
|
|
import android.view.ContextThemeWrapper
|
2022-03-04 07:46:39 +01:00
|
|
|
import android.view.ViewGroup
|
|
|
|
import android.widget.PopupMenu
|
|
|
|
import androidx.recyclerview.widget.RecyclerView
|
|
|
|
import network.loki.messenger.R
|
|
|
|
import org.thoughtcrime.securesms.database.CursorRecyclerViewAdapter
|
|
|
|
import org.thoughtcrime.securesms.database.model.ThreadRecord
|
|
|
|
import org.thoughtcrime.securesms.dependencies.DatabaseComponent
|
|
|
|
import org.thoughtcrime.securesms.mms.GlideRequests
|
|
|
|
|
|
|
|
class MessageRequestsAdapter(
|
|
|
|
context: Context,
|
|
|
|
cursor: Cursor?,
|
|
|
|
val listener: ConversationClickListener
|
|
|
|
) : CursorRecyclerViewAdapter<MessageRequestsAdapter.ViewHolder>(context, cursor) {
|
|
|
|
private val threadDatabase = DatabaseComponent.get(context).threadDatabase()
|
|
|
|
lateinit var glide: GlideRequests
|
|
|
|
|
|
|
|
class ViewHolder(val view: MessageRequestView) : RecyclerView.ViewHolder(view)
|
|
|
|
|
|
|
|
override fun onCreateItemViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
|
|
|
val view = MessageRequestView(context)
|
|
|
|
view.setOnClickListener { view.thread?.let { listener.onConversationClick(it) } }
|
|
|
|
view.setOnLongClickListener {
|
|
|
|
view.thread?.let { showPopupMenu(view) }
|
|
|
|
true
|
|
|
|
}
|
|
|
|
return ViewHolder(view)
|
|
|
|
}
|
|
|
|
|
|
|
|
override fun onBindItemViewHolder(viewHolder: ViewHolder, cursor: Cursor) {
|
|
|
|
val thread = getThread(cursor)!!
|
|
|
|
viewHolder.view.bind(thread, glide)
|
|
|
|
}
|
|
|
|
|
|
|
|
override fun onItemViewRecycled(holder: ViewHolder?) {
|
|
|
|
super.onItemViewRecycled(holder)
|
|
|
|
holder?.view?.recycle()
|
|
|
|
}
|
|
|
|
|
|
|
|
private fun showPopupMenu(view: MessageRequestView) {
|
New app theming (#913)
* feat: start new app theming feature
* feat: add some theming colours
* refactor: start refactoring themes and colours to use dynamic attributes
* feat: adding more colours and switching over default colours to be theme based instead of hard-coded or day/night specific
* refactor: take a look at ocean light and logo colour
* feat: global search colours for light and dark ocean
* feat: more styling
* feat: adding themes to conversation activity and refactoring the base theme to apply over the top of the activity's theme so it retains noActionBar etc
* feat: add dynamic accent color
* docs: add todo for changing how accent colour is applied
* feat: update new theming to use override primary style so that the regular colorAccent attribute can be used in existing layouts
* feat: coordinating styles across layouts, fixing up pinned icons and naming for conversation list items
* refactor: re-styling layouts to match new themes and attributes. Need to figure out action mode close button
* refactor: remove @color/text and replace with ?android:textColorPrimary to override in themes
* refactor: add context theme wrapper to bottom sheet dialog that references accent color
* fix: input bar bug fix and preference activity themes
* refactor: new settings menu options
* fix: crash for PNModeActivity.kt
refactor: move ordering in seed dialog to match designs, copy changes to match new settings menu
* feat: add new appearance settings activity
* refactor: title and VM changes
* fix: correct override
* feat: add theme appearance screen UI features and start VM implementation. re-add legacy theme utils to get default for migration
* fix: compile errors and missing themes from emoji features
* refactor: remove background shape alteration and old bottom sheet styles, re-add the theme mode attr
* feat: appearance screen wired up, just need to refresh theme
* feat: add theme state recreation and fix match system settings option
* refactor: add bottom margin
* feat: explore custom preference category
* feat: add the customized session theme for CorrectedPreferenceFragment
* feat: replace AppProtectionPreferenceFragment to extend ListSummaryPreferenceFragment
* refactor: change drawable style and remove explicit dividers
* refactor: remove divider in CorrectedPreferenceFragment
* feat: add theme state check on resume, might be jarring currently
* feat: add preference divider elements for settings menu
* refactor: settings menu redesigns
* refactor: change led preference to integer and refactor TextSecurePreferences.kt
* feat: add scroll parcel to save/restore hierarchy on restart with appearance changes
* feat: add the conversations blocked contacts and refactor preference order and copy
* feat: add blocked contacts activity, basic layout and vm
* feat: add unblock DB functions and storage protocol, start working on the DB query state flow, might have to just implement recipient on modified listener
* feat: add blocked contacts and notif recipient listeners
* feat: add recipient db reader
* feat: add blocked contact interactions and fix a theming crash for notifications
* feat: introduce better equals and hashcode implementations to recipient, replace home diff util content check with hashcode-based comparison
* feat: add settings menu vectors
* fix: preview compile error
* refactor: migrating settings menu to new designs
* feat: help menu
* refactor: simplify link opening
* refactor: remove space
* feat: refactor preferences and start theming for light mode options
* refactor: fixing dark and light modes with dialogs
* refactor: popup dialogs use proper themes now
* refactor: alert dialogs and media edit fragments use attribute references
* refactor: use input bar button attribute instead color control normal in vector tint
* refactor: transparency, dialog fixes, notification fix
* refactor: attrs and styles for buttons
* fix: use prominent button color on the outline button's border
* fix: fix the trash
* refactor: remove the appearance
* refactor: avatar placeholder generation, chips and element border styles
* refactor: use colors instead of style references
* refactor: theming changes to match designs and feedback
* refactor: the titles are bold and the categories are tertiary coloured now
* fix: appearance settings match preferences, search bottom bar uses themed attributes
* refactor: increase setting button height
* Update clear all data dialog
* Update seed dialog
* refactor: more qa feedback changes
* feat: add new TLs and fa-rIR TLs
* Update notification content dialog
* Fix message requests clear all button text color
* feat: re-add screenshot observer
* refactor: make send tint accent color
* feat: add unread background differences
* fix: change unread count indicator
* build: upgrade build numbers
* Fix message requests popupmenu background color
* fix: crash from attr reference in color attribute
* build: upgrade build number
* fix: message bubbles, thumbnail backgrounds, search bar visibility with input bar, attachment buttons
* fix: tertiary text for keyboard page search view
* fix: emoji overflow colour differences
* fix: reaction pill dialog background is now correct colour
* Add style to reactions tab layout
* fix: appearance activity reverting primary color at correct time
* fix: show call privacy warning every time instead of just once
* fix: gradient background(?) and audio autoplay disable
* fix: crash in all media containing documents
* fix: reaction dialog heading fixes
* Add style to reactions tab layout
* fix: remove gradient backgrounds
* fix: adding new reaction normal text attribute to try correct the tab layout
* fix: ocean dark unread/read colours
* build; update build number
* build: update build number
Co-authored-by: charles <charles@oxen.io>
2022-10-12 08:05:55 +02:00
|
|
|
val popupMenu = PopupMenu(ContextThemeWrapper(context, R.style.PopupMenu_MessageRequests), view)
|
2022-03-04 07:46:39 +01:00
|
|
|
popupMenu.menuInflater.inflate(R.menu.menu_message_request, popupMenu.menu)
|
|
|
|
popupMenu.setOnMenuItemClickListener { menuItem ->
|
|
|
|
if (menuItem.itemId == R.id.menu_delete_message_request) {
|
2022-09-13 07:06:46 +02:00
|
|
|
listener.onDeleteConversationClick(view.thread!!)
|
|
|
|
} else if (menuItem.itemId == R.id.menu_block_message_request) {
|
|
|
|
listener.onBlockConversationClick(view.thread!!)
|
2022-03-04 07:46:39 +01:00
|
|
|
}
|
|
|
|
true
|
|
|
|
}
|
|
|
|
for (i in 0 until popupMenu.menu.size()) {
|
|
|
|
val item = popupMenu.menu.getItem(i)
|
|
|
|
val s = SpannableString(item.title)
|
|
|
|
s.setSpan(ForegroundColorSpan(context.getColor(R.color.destructive)), 0, s.length, 0)
|
2022-09-13 07:06:46 +02:00
|
|
|
item.iconTintList = ColorStateList.valueOf(context.getColor(R.color.destructive))
|
2022-03-04 07:46:39 +01:00
|
|
|
item.title = s
|
|
|
|
}
|
2022-12-19 01:29:05 +01:00
|
|
|
popupMenu.setForceShowIcon(true)
|
2022-03-04 07:46:39 +01:00
|
|
|
popupMenu.show()
|
|
|
|
}
|
|
|
|
|
|
|
|
private fun getThread(cursor: Cursor): ThreadRecord? {
|
|
|
|
return threadDatabase.readerFor(cursor).current
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
interface ConversationClickListener {
|
|
|
|
fun onConversationClick(thread: ThreadRecord)
|
2022-09-13 07:06:46 +02:00
|
|
|
fun onBlockConversationClick(thread: ThreadRecord)
|
|
|
|
fun onDeleteConversationClick(thread: ThreadRecord)
|
2022-03-04 07:46:39 +01:00
|
|
|
}
|