mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-19 11:39:42 +01:00
Refactor and extract ViewThemeUtils to common library
Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
This commit is contained in:
parent
009634da53
commit
704df25a6d
@ -66,9 +66,6 @@
|
|||||||
<MarkdownNavigatorCodeStyleSettings>
|
<MarkdownNavigatorCodeStyleSettings>
|
||||||
<option name="RIGHT_MARGIN" value="120" />
|
<option name="RIGHT_MARGIN" value="120" />
|
||||||
</MarkdownNavigatorCodeStyleSettings>
|
</MarkdownNavigatorCodeStyleSettings>
|
||||||
<XML>
|
|
||||||
<option name="XML_LEGACY_SETTINGS_IMPORTED" value="true" />
|
|
||||||
</XML>
|
|
||||||
<codeStyleSettings language="JAVA">
|
<codeStyleSettings language="JAVA">
|
||||||
<option name="ALIGN_MULTILINE_PARAMETERS_IN_CALLS" value="true" />
|
<option name="ALIGN_MULTILINE_PARAMETERS_IN_CALLS" value="true" />
|
||||||
<option name="ALIGN_MULTILINE_METHOD_BRACKETS" value="true" />
|
<option name="ALIGN_MULTILINE_METHOD_BRACKETS" value="true" />
|
||||||
|
@ -332,8 +332,8 @@ dependencies {
|
|||||||
|
|
||||||
// implementation 'androidx.activity:activity-ktx:1.4.0'
|
// implementation 'androidx.activity:activity-ktx:1.4.0'
|
||||||
|
|
||||||
//
|
// TODO substitute for tag after first common release
|
||||||
implementation 'com.github.nextcloud.android-common:ui:4da3363e61ed646e091754147558ee3be346abc5'
|
implementation 'com.github.nextcloud.android-common:ui:82f6da3e9638e7578a8df8f6e52884e2923b2760'
|
||||||
}
|
}
|
||||||
|
|
||||||
task installGitHooks(type: Copy, group: "development") {
|
task installGitHooks(type: Copy, group: "development") {
|
||||||
|
@ -117,7 +117,7 @@ open class BaseActivity : AppCompatActivity() {
|
|||||||
)
|
)
|
||||||
|
|
||||||
val dialogBuilder = MaterialAlertDialogBuilder(this)
|
val dialogBuilder = MaterialAlertDialogBuilder(this)
|
||||||
.setIcon(viewThemeUtils.colorMaterialAlertDialogIcon(context, R.drawable.ic_security_white_24dp))
|
.setIcon(viewThemeUtils.dialog.colorMaterialAlertDialogIcon(context, R.drawable.ic_security_white_24dp))
|
||||||
.setTitle(R.string.nc_certificate_dialog_title)
|
.setTitle(R.string.nc_certificate_dialog_title)
|
||||||
.setMessage(dialogText)
|
.setMessage(dialogText)
|
||||||
.setPositiveButton(R.string.nc_yes) { _, _ ->
|
.setPositiveButton(R.string.nc_yes) { _, _ ->
|
||||||
@ -128,11 +128,11 @@ open class BaseActivity : AppCompatActivity() {
|
|||||||
sslErrorHandler?.cancel()
|
sslErrorHandler?.cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
viewThemeUtils.colorMaterialAlertDialogBackground(context, dialogBuilder)
|
viewThemeUtils.dialog.colorMaterialAlertDialogBackground(context, dialogBuilder)
|
||||||
|
|
||||||
val dialog = dialogBuilder.show()
|
val dialog = dialogBuilder.show()
|
||||||
|
|
||||||
viewThemeUtils.colorTextButtons(
|
viewThemeUtils.platform.colorTextButtons(
|
||||||
dialog.getButton(AlertDialog.BUTTON_POSITIVE),
|
dialog.getButton(AlertDialog.BUTTON_POSITIVE),
|
||||||
dialog.getButton(AlertDialog.BUTTON_NEGATIVE)
|
dialog.getButton(AlertDialog.BUTTON_NEGATIVE)
|
||||||
)
|
)
|
||||||
|
@ -104,7 +104,7 @@ class FullScreenTextViewerActivity : AppCompatActivity() {
|
|||||||
supportActionBar?.title = fileName
|
supportActionBar?.title = fileName
|
||||||
supportActionBar?.setDisplayHomeAsUpEnabled(true)
|
supportActionBar?.setDisplayHomeAsUpEnabled(true)
|
||||||
|
|
||||||
viewThemeUtils.themeStatusBar(this, binding.textviewToolbar)
|
viewThemeUtils.platform.themeStatusBar(this, binding.textviewToolbar)
|
||||||
|
|
||||||
if (resources != null) {
|
if (resources != null) {
|
||||||
DisplayUtils.applyColorToNavigationBar(
|
DisplayUtils.applyColorToNavigationBar(
|
||||||
|
@ -105,8 +105,8 @@ public class TakePhotoActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
setContentView(binding.getRoot());
|
setContentView(binding.getRoot());
|
||||||
|
|
||||||
viewThemeUtils.themeFAB(binding.takePhoto);
|
viewThemeUtils.material.themeFAB(binding.takePhoto);
|
||||||
viewThemeUtils.colorMaterialButtonPrimaryFilled(binding.send);
|
viewThemeUtils.material.colorMaterialButtonPrimaryFilled(binding.send);
|
||||||
|
|
||||||
cameraProviderFuture = ProcessCameraProvider.getInstance(this);
|
cameraProviderFuture = ProcessCameraProvider.getInstance(this);
|
||||||
cameraProviderFuture.addListener(() -> {
|
cameraProviderFuture.addListener(() -> {
|
||||||
|
@ -113,7 +113,7 @@ public class ContactItem extends AbstractFlexibleItem<ContactItem.ContactItemVie
|
|||||||
holder.binding.avatarDraweeView.setController(null);
|
holder.binding.avatarDraweeView.setController(null);
|
||||||
|
|
||||||
if (participant.getSelected()) {
|
if (participant.getSelected()) {
|
||||||
viewThemeUtils.colorImageView(holder.binding.checkedImageView);
|
viewThemeUtils.platform.colorImageView(holder.binding.checkedImageView);
|
||||||
holder.binding.checkedImageView.setVisibility(View.VISIBLE);
|
holder.binding.checkedImageView.setVisibility(View.VISIBLE);
|
||||||
} else {
|
} else {
|
||||||
holder.binding.checkedImageView.setVisibility(View.GONE);
|
holder.binding.checkedImageView.setVisibility(View.GONE);
|
||||||
@ -206,7 +206,7 @@ public class ContactItem extends AbstractFlexibleItem<ContactItem.ContactItemVie
|
|||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
holder.binding.avatarDraweeView.getHierarchy().setPlaceholderImage(
|
holder.binding.avatarDraweeView.getHierarchy().setPlaceholderImage(
|
||||||
DisplayUtils.getRoundedDrawable(
|
DisplayUtils.getRoundedDrawable(
|
||||||
viewThemeUtils.themePlaceholderAvatar(holder.binding.avatarDraweeView,
|
viewThemeUtils.talk.themePlaceholderAvatar(holder.binding.avatarDraweeView,
|
||||||
roundPlaceholderDrawable)));
|
roundPlaceholderDrawable)));
|
||||||
} else {
|
} else {
|
||||||
holder.binding.avatarDraweeView.setImageResource(fallbackImageResource);
|
holder.binding.avatarDraweeView.setImageResource(fallbackImageResource);
|
||||||
|
@ -143,7 +143,7 @@ public class ConversationItem extends AbstractFlexibleItem<ConversationItem.Conv
|
|||||||
null));
|
null));
|
||||||
|
|
||||||
if (adapter.hasFilter()) {
|
if (adapter.hasFilter()) {
|
||||||
viewThemeUtils.highlightText(holder.binding.dialogName,
|
viewThemeUtils.platform.highlightText(holder.binding.dialogName,
|
||||||
conversation.getDisplayName(),
|
conversation.getDisplayName(),
|
||||||
String.valueOf(adapter.getFilter(String.class)));
|
String.valueOf(adapter.getFilter(String.class)));
|
||||||
} else {
|
} else {
|
||||||
@ -168,16 +168,16 @@ public class ConversationItem extends AbstractFlexibleItem<ConversationItem.Conv
|
|||||||
R.color.conversation_unread_bubble_text);
|
R.color.conversation_unread_bubble_text);
|
||||||
|
|
||||||
if (conversation.getType() == Conversation.ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL) {
|
if (conversation.getType() == Conversation.ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL) {
|
||||||
viewThemeUtils.colorChipBackground(holder.binding.dialogUnreadBubble);
|
viewThemeUtils.material.colorChipBackground(holder.binding.dialogUnreadBubble);
|
||||||
} else if (conversation.getUnreadMention()) {
|
} else if (conversation.getUnreadMention()) {
|
||||||
if (CapabilitiesUtilNew.hasSpreedFeatureCapability(user, "direct-mention-flag")) {
|
if (CapabilitiesUtilNew.hasSpreedFeatureCapability(user, "direct-mention-flag")) {
|
||||||
if (conversation.getUnreadMentionDirect()) {
|
if (conversation.getUnreadMentionDirect()) {
|
||||||
viewThemeUtils.colorChipBackground(holder.binding.dialogUnreadBubble);
|
viewThemeUtils.material.colorChipBackground(holder.binding.dialogUnreadBubble);
|
||||||
} else {
|
} else {
|
||||||
viewThemeUtils.colorChipOutlined(holder.binding.dialogUnreadBubble, 6.0f);
|
viewThemeUtils.material.colorChipOutlined(holder.binding.dialogUnreadBubble, 6.0f);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
viewThemeUtils.colorChipBackground(holder.binding.dialogUnreadBubble);
|
viewThemeUtils.material.colorChipBackground(holder.binding.dialogUnreadBubble);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
holder.binding.dialogUnreadBubble.setChipBackgroundColor(lightBubbleFillColor);
|
holder.binding.dialogUnreadBubble.setChipBackgroundColor(lightBubbleFillColor);
|
||||||
@ -266,7 +266,7 @@ public class ConversationItem extends AbstractFlexibleItem<ConversationItem.Conv
|
|||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
holder.binding.dialogAvatar.setImageDrawable(
|
holder.binding.dialogAvatar.setImageDrawable(
|
||||||
DisplayUtils.getRoundedDrawable(
|
DisplayUtils.getRoundedDrawable(
|
||||||
viewThemeUtils.themePlaceholderAvatar(holder.binding.dialogAvatar,
|
viewThemeUtils.talk.themePlaceholderAvatar(holder.binding.dialogAvatar,
|
||||||
R.drawable.ic_avatar_document)));
|
R.drawable.ic_avatar_document)));
|
||||||
} else {
|
} else {
|
||||||
holder.binding.dialogAvatar.setImageDrawable(
|
holder.binding.dialogAvatar.setImageDrawable(
|
||||||
@ -316,7 +316,7 @@ public class ConversationItem extends AbstractFlexibleItem<ConversationItem.Conv
|
|||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
holder.binding.dialogAvatar.setImageDrawable(
|
holder.binding.dialogAvatar.setImageDrawable(
|
||||||
DisplayUtils.getRoundedDrawable(
|
DisplayUtils.getRoundedDrawable(
|
||||||
viewThemeUtils.themePlaceholderAvatar(holder.binding.dialogAvatar,
|
viewThemeUtils.talk.themePlaceholderAvatar(holder.binding.dialogAvatar,
|
||||||
R.drawable.ic_avatar_group)));
|
R.drawable.ic_avatar_group)));
|
||||||
} else {
|
} else {
|
||||||
holder.binding.dialogAvatar.setImageDrawable(
|
holder.binding.dialogAvatar.setImageDrawable(
|
||||||
@ -327,7 +327,7 @@ public class ConversationItem extends AbstractFlexibleItem<ConversationItem.Conv
|
|||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
holder.binding.dialogAvatar.setImageDrawable(
|
holder.binding.dialogAvatar.setImageDrawable(
|
||||||
DisplayUtils.getRoundedDrawable(
|
DisplayUtils.getRoundedDrawable(
|
||||||
viewThemeUtils.themePlaceholderAvatar(holder.binding.dialogAvatar,
|
viewThemeUtils.talk.themePlaceholderAvatar(holder.binding.dialogAvatar,
|
||||||
R.drawable.ic_avatar_link)));
|
R.drawable.ic_avatar_link)));
|
||||||
} else {
|
} else {
|
||||||
holder.binding.dialogAvatar.setImageDrawable(
|
holder.binding.dialogAvatar.setImageDrawable(
|
||||||
|
@ -74,7 +74,7 @@ public class GenericTextHeaderItem extends AbstractHeaderItem<GenericTextHeaderI
|
|||||||
Log.d(TAG, "We have payloads, so ignoring!");
|
Log.d(TAG, "We have payloads, so ignoring!");
|
||||||
} else {
|
} else {
|
||||||
holder.binding.titleTextView.setText(title);
|
holder.binding.titleTextView.setText(title);
|
||||||
viewThemeUtils.colorPrimaryTextViewElement(holder.binding.titleTextView);
|
viewThemeUtils.platform.colorPrimaryTextViewElement(holder.binding.titleTextView);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -153,7 +153,7 @@ public class MentionAutocompleteItem extends AbstractFlexibleItem<ParticipantIte
|
|||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
holder.binding.avatarDraweeView.getHierarchy().setPlaceholderImage(
|
holder.binding.avatarDraweeView.getHierarchy().setPlaceholderImage(
|
||||||
DisplayUtils.getRoundedDrawable(
|
DisplayUtils.getRoundedDrawable(
|
||||||
viewThemeUtils.themePlaceholderAvatar(holder.binding.avatarDraweeView,
|
viewThemeUtils.talk.themePlaceholderAvatar(holder.binding.avatarDraweeView,
|
||||||
R.drawable.ic_avatar_group)));
|
R.drawable.ic_avatar_group)));
|
||||||
} else {
|
} else {
|
||||||
holder.binding.avatarDraweeView.setImageResource(R.drawable.ic_circular_group);
|
holder.binding.avatarDraweeView.setImageResource(R.drawable.ic_circular_group);
|
||||||
|
@ -22,7 +22,6 @@
|
|||||||
package com.nextcloud.talk.adapters.items
|
package com.nextcloud.talk.adapters.items
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.text.SpannableString
|
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.nextcloud.talk.R
|
import com.nextcloud.talk.R
|
||||||
@ -77,12 +76,11 @@ data class MessageResultItem constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun bindMessageExcerpt(holder: ViewHolder) {
|
private fun bindMessageExcerpt(holder: ViewHolder) {
|
||||||
val highlightedSpan = viewThemeUtils.createHighlightedSpan(
|
viewThemeUtils.platform.highlightText(
|
||||||
holder.binding.messageExcerpt.context,
|
holder.binding.messageExcerpt,
|
||||||
SpannableString(messageEntry.messageExcerpt),
|
messageEntry.messageExcerpt,
|
||||||
messageEntry.searchTerm
|
messageEntry.searchTerm
|
||||||
)
|
)
|
||||||
holder.binding.messageExcerpt.text = highlightedSpan
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun loadImage(holder: ViewHolder) {
|
private fun loadImage(holder: ViewHolder) {
|
||||||
|
@ -155,7 +155,7 @@ public class ParticipantItem extends AbstractFlexibleItem<ParticipantItem.Partic
|
|||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
holder.binding.avatarDraweeView.getHierarchy().setPlaceholderImage(
|
holder.binding.avatarDraweeView.getHierarchy().setPlaceholderImage(
|
||||||
DisplayUtils.getRoundedDrawable(
|
DisplayUtils.getRoundedDrawable(
|
||||||
viewThemeUtils.themePlaceholderAvatar(holder.binding.avatarDraweeView,
|
viewThemeUtils.talk.themePlaceholderAvatar(holder.binding.avatarDraweeView,
|
||||||
R.drawable.ic_avatar_group)));
|
R.drawable.ic_avatar_group)));
|
||||||
} else {
|
} else {
|
||||||
holder.binding.avatarDraweeView.setImageResource(R.drawable.ic_circular_group);
|
holder.binding.avatarDraweeView.setImageResource(R.drawable.ic_circular_group);
|
||||||
@ -164,7 +164,7 @@ public class ParticipantItem extends AbstractFlexibleItem<ParticipantItem.Partic
|
|||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
holder.binding.avatarDraweeView.getHierarchy().setPlaceholderImage(
|
holder.binding.avatarDraweeView.getHierarchy().setPlaceholderImage(
|
||||||
DisplayUtils.getRoundedDrawable(
|
DisplayUtils.getRoundedDrawable(
|
||||||
viewThemeUtils.themePlaceholderAvatar(holder.binding.avatarDraweeView,
|
viewThemeUtils.talk.themePlaceholderAvatar(holder.binding.avatarDraweeView,
|
||||||
R.drawable.ic_avatar_mail)));
|
R.drawable.ic_avatar_mail)));
|
||||||
} else {
|
} else {
|
||||||
holder.binding.avatarDraweeView.setImageResource(R.drawable.ic_circular_mail);
|
holder.binding.avatarDraweeView.setImageResource(R.drawable.ic_circular_mail);
|
||||||
|
@ -161,7 +161,7 @@ class IncomingLocationMessageViewHolder(incomingView: View, payload: Any) : Mess
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun colorizeMessageBubble(message: ChatMessage) {
|
private fun colorizeMessageBubble(message: ChatMessage) {
|
||||||
viewThemeUtils.themeIncomingMessageBubble(bubble, message.isGrouped, message.isDeleted)
|
viewThemeUtils.talk.themeIncomingMessageBubble(bubble, message.isGrouped, message.isDeleted)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setParentMessageDataOnMessageItem(message: ChatMessage) {
|
private fun setParentMessageDataOnMessageItem(message: ChatMessage) {
|
||||||
@ -187,7 +187,7 @@ class IncomingLocationMessageViewHolder(incomingView: View, payload: Any) : Mess
|
|||||||
.setTextColor(context!!.resources.getColor(R.color.textColorMaxContrast))
|
.setTextColor(context!!.resources.getColor(R.color.textColorMaxContrast))
|
||||||
|
|
||||||
if (parentChatMessage.actorId?.equals(message.activeUser!!.userId) == true) {
|
if (parentChatMessage.actorId?.equals(message.activeUser!!.userId) == true) {
|
||||||
viewThemeUtils.colorPrimaryView(binding.messageQuote.quoteColoredView)
|
viewThemeUtils.platform.colorPrimaryView(binding.messageQuote.quoteColoredView)
|
||||||
} else {
|
} else {
|
||||||
binding.messageQuote.quoteColoredView.setBackgroundResource(R.color.textColorMaxContrast)
|
binding.messageQuote.quoteColoredView.setBackgroundResource(R.color.textColorMaxContrast)
|
||||||
}
|
}
|
||||||
|
@ -191,7 +191,7 @@ class IncomingPollMessageViewHolder(incomingView: View, payload: Any) : MessageH
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun colorizeMessageBubble(message: ChatMessage) {
|
private fun colorizeMessageBubble(message: ChatMessage) {
|
||||||
viewThemeUtils.themeIncomingMessageBubble(bubble, message.isGrouped, message.isDeleted)
|
viewThemeUtils.talk.themeIncomingMessageBubble(bubble, message.isGrouped, message.isDeleted)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setParentMessageDataOnMessageItem(message: ChatMessage) {
|
private fun setParentMessageDataOnMessageItem(message: ChatMessage) {
|
||||||
@ -217,7 +217,7 @@ class IncomingPollMessageViewHolder(incomingView: View, payload: Any) : MessageH
|
|||||||
.setTextColor(ContextCompat.getColor(context, R.color.textColorMaxContrast))
|
.setTextColor(ContextCompat.getColor(context, R.color.textColorMaxContrast))
|
||||||
|
|
||||||
if (parentChatMessage.actorId?.equals(message.activeUser!!.userId) == true) {
|
if (parentChatMessage.actorId?.equals(message.activeUser!!.userId) == true) {
|
||||||
viewThemeUtils.colorPrimaryView(binding.messageQuote.quoteColoredView)
|
viewThemeUtils.platform.colorPrimaryView(binding.messageQuote.quoteColoredView)
|
||||||
} else {
|
} else {
|
||||||
binding.messageQuote.quoteColoredView.setBackgroundResource(R.color.textColorMaxContrast)
|
binding.messageQuote.quoteColoredView.setBackgroundResource(R.color.textColorMaxContrast)
|
||||||
}
|
}
|
||||||
|
@ -95,8 +95,8 @@ class IncomingVoiceMessageViewHolder(incomingView: View, payload: Any) : Message
|
|||||||
|
|
||||||
updateDownloadState(message)
|
updateDownloadState(message)
|
||||||
binding.seekbar.max = message.voiceMessageDuration
|
binding.seekbar.max = message.voiceMessageDuration
|
||||||
viewThemeUtils.themeHorizontalSeekBar(binding.seekbar)
|
viewThemeUtils.platform.themeHorizontalSeekBar(binding.seekbar)
|
||||||
viewThemeUtils.colorCircularProgressBarOnSurfaceVariant(binding.progressBar)
|
viewThemeUtils.platform.colorCircularProgressBarOnSurfaceVariant(binding.progressBar)
|
||||||
|
|
||||||
if (message.isPlayingVoiceMessage) {
|
if (message.isPlayingVoiceMessage) {
|
||||||
showPlayButton()
|
showPlayButton()
|
||||||
@ -266,7 +266,7 @@ class IncomingVoiceMessageViewHolder(incomingView: View, payload: Any) : Message
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun colorizeMessageBubble(message: ChatMessage) {
|
private fun colorizeMessageBubble(message: ChatMessage) {
|
||||||
viewThemeUtils.themeIncomingMessageBubble(bubble, message.isGrouped, message.isDeleted)
|
viewThemeUtils.talk.themeIncomingMessageBubble(bubble, message.isGrouped, message.isDeleted)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setParentMessageDataOnMessageItem(message: ChatMessage) {
|
private fun setParentMessageDataOnMessageItem(message: ChatMessage) {
|
||||||
@ -292,7 +292,7 @@ class IncomingVoiceMessageViewHolder(incomingView: View, payload: Any) : Message
|
|||||||
.setTextColor(ContextCompat.getColor(context!!, R.color.textColorMaxContrast))
|
.setTextColor(ContextCompat.getColor(context!!, R.color.textColorMaxContrast))
|
||||||
|
|
||||||
if (parentChatMessage.actorId?.equals(message.activeUser!!.userId) == true) {
|
if (parentChatMessage.actorId?.equals(message.activeUser!!.userId) == true) {
|
||||||
viewThemeUtils.colorPrimaryView(binding.messageQuote.quoteColoredView)
|
viewThemeUtils.platform.colorPrimaryView(binding.messageQuote.quoteColoredView)
|
||||||
} else {
|
} else {
|
||||||
binding.messageQuote.quoteColoredView.setBackgroundResource(R.color.textColorMaxContrast)
|
binding.messageQuote.quoteColoredView.setBackgroundResource(R.color.textColorMaxContrast)
|
||||||
}
|
}
|
||||||
|
@ -87,7 +87,7 @@ class MagicIncomingTextMessageViewHolder(itemView: View, payload: Any) : Message
|
|||||||
binding.messageAuthor.visibility = View.GONE
|
binding.messageAuthor.visibility = View.GONE
|
||||||
}
|
}
|
||||||
|
|
||||||
viewThemeUtils.themeIncomingMessageBubble(bubble, message.isGrouped, message.isDeleted)
|
viewThemeUtils.talk.themeIncomingMessageBubble(bubble, message.isGrouped, message.isDeleted)
|
||||||
|
|
||||||
itemView.isSelected = false
|
itemView.isSelected = false
|
||||||
|
|
||||||
@ -163,7 +163,7 @@ class MagicIncomingTextMessageViewHolder(itemView: View, payload: Any) : Message
|
|||||||
binding.messageQuote.quotedMessage.text = parentChatMessage.text
|
binding.messageQuote.quotedMessage.text = parentChatMessage.text
|
||||||
|
|
||||||
if (parentChatMessage.actorId?.equals(message.activeUser!!.userId) == true) {
|
if (parentChatMessage.actorId?.equals(message.activeUser!!.userId) == true) {
|
||||||
viewThemeUtils.colorPrimaryView(binding.messageQuote.quoteColoredView)
|
viewThemeUtils.platform.colorPrimaryView(binding.messageQuote.quoteColoredView)
|
||||||
} else {
|
} else {
|
||||||
binding.messageQuote.quoteColoredView.setBackgroundColor(
|
binding.messageQuote.quoteColoredView.setBackgroundColor(
|
||||||
ContextCompat.getColor(binding.messageQuote.quoteColoredView.context, R.color.high_emphasis_text)
|
ContextCompat.getColor(binding.messageQuote.quoteColoredView.context, R.color.high_emphasis_text)
|
||||||
|
@ -156,7 +156,7 @@ class MagicOutcomingTextMessageViewHolder(itemView: View) : OutcomingTextMessage
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun setBubbleOnChatMessage(message: ChatMessage) {
|
private fun setBubbleOnChatMessage(message: ChatMessage) {
|
||||||
viewThemeUtils.themeOutgoingMessageBubble(bubble, message.isGrouped, message.isDeleted)
|
viewThemeUtils.talk.themeOutgoingMessageBubble(bubble, message.isGrouped, message.isDeleted)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun processMessageParameters(
|
private fun processMessageParameters(
|
||||||
|
@ -150,7 +150,7 @@ public abstract class MagicPreviewMessageViewHolder extends MessageHolders.Incom
|
|||||||
}
|
}
|
||||||
|
|
||||||
progressBar = getProgressBar();
|
progressBar = getProgressBar();
|
||||||
viewThemeUtils.colorCircularProgressBar(getProgressBar());
|
viewThemeUtils.platform.colorCircularProgressBar(getProgressBar());
|
||||||
image = getImage();
|
image = getImage();
|
||||||
clickView = getImage();
|
clickView = getImage();
|
||||||
getMessageText().setVisibility(View.VISIBLE);
|
getMessageText().setVisibility(View.VISIBLE);
|
||||||
@ -167,9 +167,9 @@ public abstract class MagicPreviewMessageViewHolder extends MessageHolders.Incom
|
|||||||
progressBar = getPreviewContactProgressBar();
|
progressBar = getPreviewContactProgressBar();
|
||||||
getMessageText().setVisibility(View.INVISIBLE);
|
getMessageText().setVisibility(View.INVISIBLE);
|
||||||
clickView = getPreviewContactContainer();
|
clickView = getPreviewContactContainer();
|
||||||
viewThemeUtils.colorContactChatItemBackground(getPreviewContactContainer());
|
viewThemeUtils.talk.colorContactChatItemBackground(getPreviewContactContainer());
|
||||||
viewThemeUtils.colorContactChatItemName(getPreviewContactName());
|
viewThemeUtils.talk.colorContactChatItemName(getPreviewContactName());
|
||||||
viewThemeUtils.colorCircularProgressBarOnPrimaryContainer(getPreviewContactProgressBar());
|
viewThemeUtils.platform.colorCircularProgressBarOnPrimaryContainer(getPreviewContactProgressBar());
|
||||||
} else {
|
} else {
|
||||||
getPreviewContainer().setVisibility(View.VISIBLE);
|
getPreviewContainer().setVisibility(View.VISIBLE);
|
||||||
getPreviewContactContainer().setVisibility(View.GONE);
|
getPreviewContactContainer().setVisibility(View.GONE);
|
||||||
|
@ -212,9 +212,9 @@ class OutcomingLocationMessageViewHolder(incomingView: View) : MessageHolders
|
|||||||
binding.messageQuote.quotedMessageAuthor.text = parentChatMessage.actorDisplayName
|
binding.messageQuote.quotedMessageAuthor.text = parentChatMessage.actorDisplayName
|
||||||
?: context!!.getText(R.string.nc_nick_guest)
|
?: context!!.getText(R.string.nc_nick_guest)
|
||||||
binding.messageQuote.quotedMessage.text = parentChatMessage.text
|
binding.messageQuote.quotedMessage.text = parentChatMessage.text
|
||||||
viewThemeUtils.colorOutgoingQuoteText(binding.messageQuote.quotedMessage)
|
viewThemeUtils.talk.colorOutgoingQuoteText(binding.messageQuote.quotedMessage)
|
||||||
viewThemeUtils.colorOutgoingQuoteAuthorText(binding.messageQuote.quotedMessageAuthor)
|
viewThemeUtils.talk.colorOutgoingQuoteAuthorText(binding.messageQuote.quotedMessageAuthor)
|
||||||
viewThemeUtils.colorOutgoingQuoteBackground(binding.messageQuote.quoteColoredView)
|
viewThemeUtils.talk.colorOutgoingQuoteBackground(binding.messageQuote.quoteColoredView)
|
||||||
|
|
||||||
binding.messageQuote.quotedChatMessageView.visibility = View.VISIBLE
|
binding.messageQuote.quotedChatMessageView.visibility = View.VISIBLE
|
||||||
} else {
|
} else {
|
||||||
@ -223,7 +223,7 @@ class OutcomingLocationMessageViewHolder(incomingView: View) : MessageHolders
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun colorizeMessageBubble(message: ChatMessage) {
|
private fun colorizeMessageBubble(message: ChatMessage) {
|
||||||
viewThemeUtils.themeOutgoingMessageBubble(bubble, message.isGrouped, message.isDeleted)
|
viewThemeUtils.talk.themeOutgoingMessageBubble(bubble, message.isGrouped, message.isDeleted)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun openGeoLink() {
|
private fun openGeoLink() {
|
||||||
|
@ -176,9 +176,9 @@ class OutcomingPollMessageViewHolder(outcomingView: View, payload: Any) : Messag
|
|||||||
binding.messageQuote.quotedMessageAuthor.text = parentChatMessage.actorDisplayName
|
binding.messageQuote.quotedMessageAuthor.text = parentChatMessage.actorDisplayName
|
||||||
?: context.getText(R.string.nc_nick_guest)
|
?: context.getText(R.string.nc_nick_guest)
|
||||||
binding.messageQuote.quotedMessage.text = parentChatMessage.text
|
binding.messageQuote.quotedMessage.text = parentChatMessage.text
|
||||||
viewThemeUtils.colorOutgoingQuoteText(binding.messageQuote.quotedMessage)
|
viewThemeUtils.talk.colorOutgoingQuoteText(binding.messageQuote.quotedMessage)
|
||||||
viewThemeUtils.colorOutgoingQuoteAuthorText(binding.messageQuote.quotedMessageAuthor)
|
viewThemeUtils.talk.colorOutgoingQuoteAuthorText(binding.messageQuote.quotedMessageAuthor)
|
||||||
viewThemeUtils.colorOutgoingQuoteBackground(binding.messageQuote.quoteColoredView)
|
viewThemeUtils.talk.colorOutgoingQuoteBackground(binding.messageQuote.quoteColoredView)
|
||||||
|
|
||||||
binding.messageQuote.quotedChatMessageView.visibility = View.VISIBLE
|
binding.messageQuote.quotedChatMessageView.visibility = View.VISIBLE
|
||||||
} else {
|
} else {
|
||||||
@ -187,7 +187,7 @@ class OutcomingPollMessageViewHolder(outcomingView: View, payload: Any) : Messag
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun colorizeMessageBubble(message: ChatMessage) {
|
private fun colorizeMessageBubble(message: ChatMessage) {
|
||||||
viewThemeUtils.themeOutgoingMessageBubble(bubble, message.isGrouped, message.isDeleted)
|
viewThemeUtils.talk.themeOutgoingMessageBubble(bubble, message.isGrouped, message.isDeleted)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun assignReactionInterface(reactionsInterface: ReactionsInterface) {
|
fun assignReactionInterface(reactionsInterface: ReactionsInterface) {
|
||||||
|
@ -90,8 +90,8 @@ class OutcomingVoiceMessageViewHolder(outcomingView: View) : MessageHolders
|
|||||||
|
|
||||||
updateDownloadState(message)
|
updateDownloadState(message)
|
||||||
binding.seekbar.max = message.voiceMessageDuration
|
binding.seekbar.max = message.voiceMessageDuration
|
||||||
viewThemeUtils.themeHorizontalSeekBar(binding.seekbar)
|
viewThemeUtils.platform.themeHorizontalSeekBar(binding.seekbar)
|
||||||
viewThemeUtils.colorCircularProgressBarOnSurfaceVariant(binding.progressBar)
|
viewThemeUtils.platform.colorCircularProgressBarOnSurfaceVariant(binding.progressBar)
|
||||||
|
|
||||||
handleIsPlayingVoiceMessageState(message)
|
handleIsPlayingVoiceMessageState(message)
|
||||||
|
|
||||||
@ -263,9 +263,9 @@ class OutcomingVoiceMessageViewHolder(outcomingView: View) : MessageHolders
|
|||||||
binding.messageQuote.quotedMessageAuthor.text = parentChatMessage.actorDisplayName
|
binding.messageQuote.quotedMessageAuthor.text = parentChatMessage.actorDisplayName
|
||||||
?: context!!.getText(R.string.nc_nick_guest)
|
?: context!!.getText(R.string.nc_nick_guest)
|
||||||
binding.messageQuote.quotedMessage.text = parentChatMessage.text
|
binding.messageQuote.quotedMessage.text = parentChatMessage.text
|
||||||
viewThemeUtils.colorOutgoingQuoteText(binding.messageQuote.quotedMessage)
|
viewThemeUtils.talk.colorOutgoingQuoteText(binding.messageQuote.quotedMessage)
|
||||||
viewThemeUtils.colorOutgoingQuoteAuthorText(binding.messageQuote.quotedMessageAuthor)
|
viewThemeUtils.talk.colorOutgoingQuoteAuthorText(binding.messageQuote.quotedMessageAuthor)
|
||||||
viewThemeUtils.colorOutgoingQuoteBackground(binding.messageQuote.quoteColoredView)
|
viewThemeUtils.talk.colorOutgoingQuoteBackground(binding.messageQuote.quoteColoredView)
|
||||||
|
|
||||||
binding.messageQuote.quotedChatMessageView.visibility = View.VISIBLE
|
binding.messageQuote.quotedChatMessageView.visibility = View.VISIBLE
|
||||||
} else {
|
} else {
|
||||||
@ -274,7 +274,7 @@ class OutcomingVoiceMessageViewHolder(outcomingView: View) : MessageHolders
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun colorizeMessageBubble(message: ChatMessage) {
|
private fun colorizeMessageBubble(message: ChatMessage) {
|
||||||
viewThemeUtils.themeOutgoingMessageBubble(bubble, message.isGrouped, message.isDeleted)
|
viewThemeUtils.talk.themeOutgoingMessageBubble(bubble, message.isGrouped, message.isDeleted)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun assignVoiceMessageInterface(voiceMessageInterface: VoiceMessageInterface) {
|
fun assignVoiceMessageInterface(voiceMessageInterface: VoiceMessageInterface) {
|
||||||
|
@ -112,7 +112,7 @@ class Reaction {
|
|||||||
} else {
|
} else {
|
||||||
layoutInfo.viewThemeUtils.getScheme(emojiWithAmountWrapper.context).primaryContainer
|
layoutInfo.viewThemeUtils.getScheme(emojiWithAmountWrapper.context).primaryContainer
|
||||||
}
|
}
|
||||||
layoutInfo.viewThemeUtils.setCheckedBackground(emojiWithAmountWrapper, color)
|
layoutInfo.viewThemeUtils.talk.setCheckedBackground(emojiWithAmountWrapper, color)
|
||||||
|
|
||||||
emojiWithAmountWrapper.setPaddingRelative(
|
emojiWithAmountWrapper.setPaddingRelative(
|
||||||
layoutInfo.paddingSide,
|
layoutInfo.paddingSide,
|
||||||
|
@ -653,7 +653,7 @@ class ChatController(args: Bundle) :
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
viewThemeUtils.colorMaterialButtonPrimaryFilled(binding.popupBubbleView)
|
viewThemeUtils.material.colorMaterialButtonPrimaryFilled(binding.popupBubbleView)
|
||||||
|
|
||||||
binding.messageInputView.setPadding(0, 0, 0, 0)
|
binding.messageInputView.setPadding(0, 0, 0, 0)
|
||||||
|
|
||||||
@ -877,7 +877,7 @@ class ChatController(args: Bundle) :
|
|||||||
.nc_description_send_message_button
|
.nc_description_send_message_button
|
||||||
)
|
)
|
||||||
|
|
||||||
viewThemeUtils.colorImageView(binding.messageInputView.button)
|
viewThemeUtils.platform.colorImageView(binding.messageInputView.button)
|
||||||
|
|
||||||
if (currentConversation != null && currentConversation?.roomId != null) {
|
if (currentConversation != null && currentConversation?.roomId != null) {
|
||||||
loadAvatarForStatusBar()
|
loadAvatarForStatusBar()
|
||||||
@ -1433,14 +1433,14 @@ class ChatController(args: Bundle) :
|
|||||||
// unused atm
|
// unused atm
|
||||||
}
|
}
|
||||||
|
|
||||||
viewThemeUtils.colorMaterialAlertDialogBackground(
|
viewThemeUtils.dialog.colorMaterialAlertDialogBackground(
|
||||||
binding.messageInputView.context,
|
binding.messageInputView.context,
|
||||||
materialAlertDialogBuilder
|
materialAlertDialogBuilder
|
||||||
)
|
)
|
||||||
|
|
||||||
val dialog = materialAlertDialogBuilder.show()
|
val dialog = materialAlertDialogBuilder.show()
|
||||||
|
|
||||||
viewThemeUtils.colorTextButtons(
|
viewThemeUtils.platform.colorTextButtons(
|
||||||
dialog.getButton(AlertDialog.BUTTON_POSITIVE),
|
dialog.getButton(AlertDialog.BUTTON_POSITIVE),
|
||||||
dialog.getButton(AlertDialog.BUTTON_NEGATIVE)
|
dialog.getButton(AlertDialog.BUTTON_NEGATIVE)
|
||||||
)
|
)
|
||||||
@ -1772,7 +1772,8 @@ class ChatController(args: Bundle) :
|
|||||||
cancelReply()
|
cancelReply()
|
||||||
}
|
}
|
||||||
|
|
||||||
viewThemeUtils.themeImageButton(binding.messageInputView.findViewById<ImageButton>(R.id.cancelReplyButton))
|
viewThemeUtils.platform
|
||||||
|
.themeImageButton(binding.messageInputView.findViewById<ImageButton>(R.id.cancelReplyButton))
|
||||||
|
|
||||||
cancelNotificationsForCurrentConversation()
|
cancelNotificationsForCurrentConversation()
|
||||||
|
|
||||||
@ -2523,12 +2524,12 @@ class ChatController(args: Bundle) :
|
|||||||
super.onCreateOptionsMenu(menu, inflater)
|
super.onCreateOptionsMenu(menu, inflater)
|
||||||
inflater.inflate(R.menu.menu_conversation, menu)
|
inflater.inflate(R.menu.menu_conversation, menu)
|
||||||
|
|
||||||
viewThemeUtils.colorToolbarMenuIcon(
|
viewThemeUtils.platform.colorToolbarMenuIcon(
|
||||||
binding.messageInputView.context,
|
binding.messageInputView.context,
|
||||||
menu.findItem(R.id.conversation_voice_call)
|
menu.findItem(R.id.conversation_voice_call)
|
||||||
)
|
)
|
||||||
|
|
||||||
viewThemeUtils.colorToolbarMenuIcon(
|
viewThemeUtils.platform.colorToolbarMenuIcon(
|
||||||
binding.messageInputView.context,
|
binding.messageInputView.context,
|
||||||
menu.findItem(R.id.conversation_video_call)
|
menu.findItem(R.id.conversation_video_call)
|
||||||
)
|
)
|
||||||
|
@ -334,7 +334,7 @@ class ContactsController(args: Bundle) :
|
|||||||
val searchManager: SearchManager? = activity?.getSystemService(Context.SEARCH_SERVICE) as SearchManager?
|
val searchManager: SearchManager? = activity?.getSystemService(Context.SEARCH_SERVICE) as SearchManager?
|
||||||
if (searchItem != null) {
|
if (searchItem != null) {
|
||||||
searchView = MenuItemCompat.getActionView(searchItem) as SearchView
|
searchView = MenuItemCompat.getActionView(searchItem) as SearchView
|
||||||
viewThemeUtils.themeSearchView(searchView!!)
|
viewThemeUtils.talk.themeSearchView(searchView!!)
|
||||||
searchView!!.maxWidth = Int.MAX_VALUE
|
searchView!!.maxWidth = Int.MAX_VALUE
|
||||||
searchView!!.inputType = InputType.TYPE_TEXT_VARIATION_FILTER
|
searchView!!.inputType = InputType.TYPE_TEXT_VARIATION_FILTER
|
||||||
var imeOptions: Int = EditorInfo.IME_ACTION_DONE or EditorInfo.IME_FLAG_NO_FULLSCREEN
|
var imeOptions: Int = EditorInfo.IME_ACTION_DONE or EditorInfo.IME_FLAG_NO_FULLSCREEN
|
||||||
@ -380,7 +380,7 @@ class ContactsController(args: Bundle) :
|
|||||||
super.onPrepareOptionsMenu(menu)
|
super.onPrepareOptionsMenu(menu)
|
||||||
|
|
||||||
if (searchItem != null) {
|
if (searchItem != null) {
|
||||||
viewThemeUtils.colorToolbarMenuIcon(
|
viewThemeUtils.platform.colorToolbarMenuIcon(
|
||||||
binding.titleTextView.context,
|
binding.titleTextView.context,
|
||||||
searchItem!!
|
searchItem!!
|
||||||
)
|
)
|
||||||
@ -629,7 +629,7 @@ class ContactsController(args: Bundle) :
|
|||||||
binding.controllerGenericRv.recyclerView.adapter = adapter
|
binding.controllerGenericRv.recyclerView.adapter = adapter
|
||||||
binding.controllerGenericRv.swipeRefreshLayout.setOnRefreshListener { fetchData() }
|
binding.controllerGenericRv.swipeRefreshLayout.setOnRefreshListener { fetchData() }
|
||||||
|
|
||||||
viewThemeUtils.themeSwipeRefreshLayout(binding.controllerGenericRv.swipeRefreshLayout)
|
viewThemeUtils.androidx.themeSwipeRefreshLayout(binding.controllerGenericRv.swipeRefreshLayout)
|
||||||
|
|
||||||
binding.joinConversationViaLink.joinConversationViaLinkImageView
|
binding.joinConversationViaLink.joinConversationViaLinkImageView
|
||||||
.background
|
.background
|
||||||
@ -638,7 +638,7 @@ class ContactsController(args: Bundle) :
|
|||||||
PorterDuff.Mode.SRC_IN
|
PorterDuff.Mode.SRC_IN
|
||||||
)
|
)
|
||||||
|
|
||||||
viewThemeUtils.colorImageViewButton(binding.conversationPrivacyToggle.publicCallLink)
|
viewThemeUtils.platform.colorImageViewButton(binding.conversationPrivacyToggle.publicCallLink)
|
||||||
disengageProgressBar()
|
disengageProgressBar()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -201,7 +201,7 @@ class ConversationInfoController(args: Bundle) :
|
|||||||
binding.notificationSettingsView.conversationInfoPriorityConversation,
|
binding.notificationSettingsView.conversationInfoPriorityConversation,
|
||||||
binding.guestAccessView.guestAccessAllowSwitch,
|
binding.guestAccessView.guestAccessAllowSwitch,
|
||||||
binding.guestAccessView.guestAccessPasswordSwitch
|
binding.guestAccessView.guestAccessPasswordSwitch
|
||||||
).forEach(viewThemeUtils::colorSwitchPreference)
|
).forEach(viewThemeUtils.talk::colorSwitchPreference)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -218,7 +218,7 @@ class ConversationInfoController(args: Bundle) :
|
|||||||
binding.guestAccessView.guestAccessCategory,
|
binding.guestAccessView.guestAccessCategory,
|
||||||
binding.webinarInfoView.conversationInfoWebinar,
|
binding.webinarInfoView.conversationInfoWebinar,
|
||||||
binding.notificationSettingsView.notificationSettingsCategory
|
binding.notificationSettingsView.notificationSettingsCategory
|
||||||
).forEach(viewThemeUtils::colorPreferenceCategory)
|
).forEach(viewThemeUtils.talk::colorPreferenceCategory)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -238,7 +238,7 @@ class ConversationInfoController(args: Bundle) :
|
|||||||
|
|
||||||
binding.addParticipantsAction.visibility = GONE
|
binding.addParticipantsAction.visibility = GONE
|
||||||
|
|
||||||
viewThemeUtils.colorCircularProgressBar(binding.progressBar)
|
viewThemeUtils.platform.colorCircularProgressBar(binding.progressBar)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setupWebinaryView() {
|
private fun setupWebinaryView() {
|
||||||
@ -376,7 +376,7 @@ class ConversationInfoController(args: Bundle) :
|
|||||||
private fun showDeleteConversationDialog() {
|
private fun showDeleteConversationDialog() {
|
||||||
if (activity != null) {
|
if (activity != null) {
|
||||||
val dialogBuilder = MaterialAlertDialogBuilder(binding.conversationInfoName.context)
|
val dialogBuilder = MaterialAlertDialogBuilder(binding.conversationInfoName.context)
|
||||||
.setIcon(viewThemeUtils.colorMaterialAlertDialogIcon(context, R.drawable.ic_delete_black_24dp))
|
.setIcon(viewThemeUtils.dialog.colorMaterialAlertDialogIcon(context, R.drawable.ic_delete_black_24dp))
|
||||||
.setTitle(R.string.nc_delete_call)
|
.setTitle(R.string.nc_delete_call)
|
||||||
.setMessage(R.string.nc_delete_conversation_more)
|
.setMessage(R.string.nc_delete_conversation_more)
|
||||||
.setPositiveButton(R.string.nc_delete) { _, _ ->
|
.setPositiveButton(R.string.nc_delete) { _, _ ->
|
||||||
@ -385,9 +385,10 @@ class ConversationInfoController(args: Bundle) :
|
|||||||
.setNegativeButton(R.string.nc_cancel) { _, _ ->
|
.setNegativeButton(R.string.nc_cancel) { _, _ ->
|
||||||
// unused atm
|
// unused atm
|
||||||
}
|
}
|
||||||
viewThemeUtils.colorMaterialAlertDialogBackground(binding.conversationInfoName.context, dialogBuilder)
|
viewThemeUtils.dialog
|
||||||
|
.colorMaterialAlertDialogBackground(binding.conversationInfoName.context, dialogBuilder)
|
||||||
val dialog = dialogBuilder.show()
|
val dialog = dialogBuilder.show()
|
||||||
viewThemeUtils.colorTextButtons(
|
viewThemeUtils.platform.colorTextButtons(
|
||||||
dialog.getButton(AlertDialog.BUTTON_POSITIVE),
|
dialog.getButton(AlertDialog.BUTTON_POSITIVE),
|
||||||
dialog.getButton(AlertDialog.BUTTON_NEGATIVE)
|
dialog.getButton(AlertDialog.BUTTON_NEGATIVE)
|
||||||
)
|
)
|
||||||
@ -547,7 +548,7 @@ class ConversationInfoController(args: Bundle) :
|
|||||||
private fun showClearHistoryDialog() {
|
private fun showClearHistoryDialog() {
|
||||||
if (activity != null) {
|
if (activity != null) {
|
||||||
val dialogBuilder = MaterialAlertDialogBuilder(binding.conversationInfoName.context)
|
val dialogBuilder = MaterialAlertDialogBuilder(binding.conversationInfoName.context)
|
||||||
.setIcon(viewThemeUtils.colorMaterialAlertDialogIcon(context, R.drawable.ic_delete_black_24dp))
|
.setIcon(viewThemeUtils.dialog.colorMaterialAlertDialogIcon(context, R.drawable.ic_delete_black_24dp))
|
||||||
.setTitle(R.string.nc_clear_history)
|
.setTitle(R.string.nc_clear_history)
|
||||||
.setMessage(R.string.nc_clear_history_warning)
|
.setMessage(R.string.nc_clear_history_warning)
|
||||||
.setPositiveButton(R.string.nc_delete_all) { _, _ ->
|
.setPositiveButton(R.string.nc_delete_all) { _, _ ->
|
||||||
@ -556,9 +557,10 @@ class ConversationInfoController(args: Bundle) :
|
|||||||
.setNegativeButton(R.string.nc_cancel) { _, _ ->
|
.setNegativeButton(R.string.nc_cancel) { _, _ ->
|
||||||
// unused atm
|
// unused atm
|
||||||
}
|
}
|
||||||
viewThemeUtils.colorMaterialAlertDialogBackground(binding.conversationInfoName.context, dialogBuilder)
|
viewThemeUtils.dialog
|
||||||
|
.colorMaterialAlertDialogBackground(binding.conversationInfoName.context, dialogBuilder)
|
||||||
val dialog = dialogBuilder.show()
|
val dialog = dialogBuilder.show()
|
||||||
viewThemeUtils.colorTextButtons(
|
viewThemeUtils.platform.colorTextButtons(
|
||||||
dialog.getButton(AlertDialog.BUTTON_POSITIVE),
|
dialog.getButton(AlertDialog.BUTTON_POSITIVE),
|
||||||
dialog.getButton(AlertDialog.BUTTON_NEGATIVE)
|
dialog.getButton(AlertDialog.BUTTON_NEGATIVE)
|
||||||
)
|
)
|
||||||
@ -783,7 +785,8 @@ class ConversationInfoController(args: Bundle) :
|
|||||||
DisplayUtils.getImageRequestForUrl(
|
DisplayUtils.getImageRequestForUrl(
|
||||||
ApiUtils.getUrlForAvatar(
|
ApiUtils.getUrlForAvatar(
|
||||||
conversationUser!!.baseUrl,
|
conversationUser!!.baseUrl,
|
||||||
conversation!!.name, true
|
conversation!!.name,
|
||||||
|
true
|
||||||
),
|
),
|
||||||
conversationUser
|
conversationUser
|
||||||
)
|
)
|
||||||
@ -795,7 +798,7 @@ class ConversationInfoController(args: Bundle) :
|
|||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
binding.avatarImage.hierarchy.setPlaceholderImage(
|
binding.avatarImage.hierarchy.setPlaceholderImage(
|
||||||
DisplayUtils.getRoundedDrawable(
|
DisplayUtils.getRoundedDrawable(
|
||||||
viewThemeUtils.themePlaceholderAvatar(binding.avatarImage, R.drawable.ic_avatar_group)
|
viewThemeUtils.talk.themePlaceholderAvatar(binding.avatarImage, R.drawable.ic_avatar_group)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
@ -808,7 +811,7 @@ class ConversationInfoController(args: Bundle) :
|
|||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
binding.avatarImage.hierarchy.setPlaceholderImage(
|
binding.avatarImage.hierarchy.setPlaceholderImage(
|
||||||
DisplayUtils.getRoundedDrawable(
|
DisplayUtils.getRoundedDrawable(
|
||||||
viewThemeUtils.themePlaceholderAvatar(binding.avatarImage, R.drawable.ic_avatar_link)
|
viewThemeUtils.talk.themePlaceholderAvatar(binding.avatarImage, R.drawable.ic_avatar_link)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
|
@ -274,7 +274,8 @@ class ConversationsListController(bundle: Bundle) :
|
|||||||
credentials = ApiUtils.getCredentials(currentUser!!.username, currentUser!!.token)
|
credentials = ApiUtils.getCredentials(currentUser!!.username, currentUser!!.token)
|
||||||
if (activity != null && activity is MainActivity) {
|
if (activity != null && activity is MainActivity) {
|
||||||
loadUserAvatar((activity as MainActivity?)!!.binding.switchAccountButton)
|
loadUserAvatar((activity as MainActivity?)!!.binding.switchAccountButton)
|
||||||
viewThemeUtils.colorMaterialTextButton((activity as MainActivity?)!!.binding.switchAccountButton)
|
viewThemeUtils.material
|
||||||
|
.colorMaterialTextButton((activity as MainActivity?)!!.binding.switchAccountButton)
|
||||||
}
|
}
|
||||||
fetchData()
|
fetchData()
|
||||||
}
|
}
|
||||||
@ -295,7 +296,7 @@ class ConversationsListController(bundle: Bundle) :
|
|||||||
val searchManager = activity!!.getSystemService(Context.SEARCH_SERVICE) as SearchManager?
|
val searchManager = activity!!.getSystemService(Context.SEARCH_SERVICE) as SearchManager?
|
||||||
if (searchItem != null) {
|
if (searchItem != null) {
|
||||||
searchView = MenuItemCompat.getActionView(searchItem) as SearchView
|
searchView = MenuItemCompat.getActionView(searchItem) as SearchView
|
||||||
viewThemeUtils.themeSearchView(searchView!!)
|
viewThemeUtils.talk.themeSearchView(searchView!!)
|
||||||
searchView!!.maxWidth = Int.MAX_VALUE
|
searchView!!.maxWidth = Int.MAX_VALUE
|
||||||
searchView!!.inputType = InputType.TYPE_TEXT_VARIATION_FILTER
|
searchView!!.inputType = InputType.TYPE_TEXT_VARIATION_FILTER
|
||||||
var imeOptions = EditorInfo.IME_ACTION_DONE or EditorInfo.IME_FLAG_NO_FULLSCREEN
|
var imeOptions = EditorInfo.IME_ACTION_DONE or EditorInfo.IME_FLAG_NO_FULLSCREEN
|
||||||
@ -353,14 +354,14 @@ class ConversationsListController(bundle: Bundle) :
|
|||||||
}
|
}
|
||||||
activity.binding.searchText.setOnClickListener {
|
activity.binding.searchText.setOnClickListener {
|
||||||
showSearchView(activity, searchView, searchItem)
|
showSearchView(activity, searchView, searchItem)
|
||||||
viewThemeUtils.themeStatusBar(activity, searchView!!)
|
viewThemeUtils.platform.themeStatusBar(activity, searchView!!)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
searchView!!.setOnCloseListener {
|
searchView!!.setOnCloseListener {
|
||||||
if (TextUtils.isEmpty(searchView!!.query.toString())) {
|
if (TextUtils.isEmpty(searchView!!.query.toString())) {
|
||||||
searchView!!.onActionViewCollapsed()
|
searchView!!.onActionViewCollapsed()
|
||||||
if (activity != null) {
|
if (activity != null) {
|
||||||
viewThemeUtils.resetStatusBar(activity, searchView!!)
|
viewThemeUtils.platform.resetStatusBar(activity)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
searchView!!.post { searchView!!.setQuery(TAG, true) }
|
searchView!!.post { searchView!!.setQuery(TAG, true) }
|
||||||
@ -400,7 +401,8 @@ class ConversationsListController(bundle: Bundle) :
|
|||||||
mainActivity.binding.toolbar.visibility = View.GONE
|
mainActivity.binding.toolbar.visibility = View.GONE
|
||||||
mainActivity.binding.searchToolbar.visibility = View.VISIBLE
|
mainActivity.binding.searchToolbar.visibility = View.VISIBLE
|
||||||
if (resources != null) {
|
if (resources != null) {
|
||||||
viewThemeUtils.resetStatusBar(mainActivity, mainActivity.binding.searchToolbar)
|
viewThemeUtils.platform
|
||||||
|
.resetStatusBar(mainActivity)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
val layoutManager = binding.recyclerView.layoutManager as SmoothScrollLinearLayoutManager?
|
val layoutManager = binding.recyclerView.layoutManager as SmoothScrollLinearLayoutManager?
|
||||||
@ -664,13 +666,13 @@ class ConversationsListController(bundle: Bundle) :
|
|||||||
false
|
false
|
||||||
}
|
}
|
||||||
binding.swipeRefreshLayoutView.setOnRefreshListener { fetchData() }
|
binding.swipeRefreshLayoutView.setOnRefreshListener { fetchData() }
|
||||||
viewThemeUtils.themeSwipeRefreshLayout(binding.swipeRefreshLayoutView)
|
viewThemeUtils.androidx.themeSwipeRefreshLayout(binding.swipeRefreshLayoutView)
|
||||||
binding.emptyLayout.setOnClickListener { showNewConversationsScreen() }
|
binding.emptyLayout.setOnClickListener { showNewConversationsScreen() }
|
||||||
binding.floatingActionButton.setOnClickListener {
|
binding.floatingActionButton.setOnClickListener {
|
||||||
run(context)
|
run(context)
|
||||||
showNewConversationsScreen()
|
showNewConversationsScreen()
|
||||||
}
|
}
|
||||||
viewThemeUtils.themeFAB(binding.floatingActionButton)
|
viewThemeUtils.material.themeFAB(binding.floatingActionButton)
|
||||||
if (activity != null && activity is MainActivity) {
|
if (activity != null && activity is MainActivity) {
|
||||||
val activity = activity as MainActivity?
|
val activity = activity as MainActivity?
|
||||||
activity!!.binding.switchAccountButton.setOnClickListener {
|
activity!!.binding.switchAccountButton.setOnClickListener {
|
||||||
@ -695,7 +697,7 @@ class ConversationsListController(bundle: Bundle) :
|
|||||||
nextUnreadConversationScrollPosition
|
nextUnreadConversationScrollPosition
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
viewThemeUtils.colorMaterialButtonPrimaryFilled(binding.newMentionPopupBubble)
|
viewThemeUtils.material.colorMaterialButtonPrimaryFilled(binding.newMentionPopupBubble)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Suppress("Detekt.TooGenericExceptionCaught")
|
@Suppress("Detekt.TooGenericExceptionCaught")
|
||||||
@ -937,7 +939,7 @@ class ConversationsListController(bundle: Bundle) :
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
val dialogBuilder = MaterialAlertDialogBuilder(binding.floatingActionButton.context)
|
val dialogBuilder = MaterialAlertDialogBuilder(binding.floatingActionButton.context)
|
||||||
.setIcon(viewThemeUtils.colorMaterialAlertDialogIcon(context, R.drawable.upload))
|
.setIcon(viewThemeUtils.dialog.colorMaterialAlertDialogIcon(context, R.drawable.upload))
|
||||||
.setTitle(confirmationQuestion)
|
.setTitle(confirmationQuestion)
|
||||||
.setMessage(fileNamesWithLineBreaks.toString())
|
.setMessage(fileNamesWithLineBreaks.toString())
|
||||||
.setPositiveButton(R.string.nc_yes) { _, _ ->
|
.setPositiveButton(R.string.nc_yes) { _, _ ->
|
||||||
@ -948,9 +950,10 @@ class ConversationsListController(bundle: Bundle) :
|
|||||||
Log.d(TAG, "sharing files aborted, going back to share-to screen")
|
Log.d(TAG, "sharing files aborted, going back to share-to screen")
|
||||||
showShareToScreen = true
|
showShareToScreen = true
|
||||||
}
|
}
|
||||||
viewThemeUtils.colorMaterialAlertDialogBackground(binding.floatingActionButton.context, dialogBuilder)
|
viewThemeUtils.dialog
|
||||||
|
.colorMaterialAlertDialogBackground(binding.floatingActionButton.context, dialogBuilder)
|
||||||
val dialog = dialogBuilder.show()
|
val dialog = dialogBuilder.show()
|
||||||
viewThemeUtils.colorTextButtons(
|
viewThemeUtils.platform.colorTextButtons(
|
||||||
dialog.getButton(AlertDialog.BUTTON_POSITIVE),
|
dialog.getButton(AlertDialog.BUTTON_POSITIVE),
|
||||||
dialog.getButton(AlertDialog.BUTTON_NEGATIVE)
|
dialog.getButton(AlertDialog.BUTTON_NEGATIVE)
|
||||||
)
|
)
|
||||||
@ -1128,7 +1131,10 @@ class ConversationsListController(bundle: Bundle) :
|
|||||||
val conversation = Parcels.unwrap<Conversation>(conversationMenuBundle!!.getParcelable(KEY_ROOM))
|
val conversation = Parcels.unwrap<Conversation>(conversationMenuBundle!!.getParcelable(KEY_ROOM))
|
||||||
if (conversation != null) {
|
if (conversation != null) {
|
||||||
val dialogBuilder = MaterialAlertDialogBuilder(binding.floatingActionButton.context)
|
val dialogBuilder = MaterialAlertDialogBuilder(binding.floatingActionButton.context)
|
||||||
.setIcon(viewThemeUtils.colorMaterialAlertDialogIcon(context, R.drawable.ic_delete_black_24dp))
|
.setIcon(
|
||||||
|
viewThemeUtils.dialog
|
||||||
|
.colorMaterialAlertDialogIcon(context, R.drawable.ic_delete_black_24dp)
|
||||||
|
)
|
||||||
.setTitle(R.string.nc_delete_call)
|
.setTitle(R.string.nc_delete_call)
|
||||||
.setMessage(R.string.nc_delete_conversation_more)
|
.setMessage(R.string.nc_delete_conversation_more)
|
||||||
.setPositiveButton(R.string.nc_delete) { _, _ ->
|
.setPositiveButton(R.string.nc_delete) { _, _ ->
|
||||||
@ -1144,9 +1150,10 @@ class ConversationsListController(bundle: Bundle) :
|
|||||||
.setNegativeButton(R.string.nc_cancel) { _, _ ->
|
.setNegativeButton(R.string.nc_cancel) { _, _ ->
|
||||||
conversationMenuBundle = null
|
conversationMenuBundle = null
|
||||||
}
|
}
|
||||||
viewThemeUtils.colorMaterialAlertDialogBackground(binding.floatingActionButton.context, dialogBuilder)
|
viewThemeUtils.dialog
|
||||||
|
.colorMaterialAlertDialogBackground(binding.floatingActionButton.context, dialogBuilder)
|
||||||
val dialog = dialogBuilder.show()
|
val dialog = dialogBuilder.show()
|
||||||
viewThemeUtils.colorTextButtons(
|
viewThemeUtils.platform.colorTextButtons(
|
||||||
dialog.getButton(AlertDialog.BUTTON_POSITIVE),
|
dialog.getButton(AlertDialog.BUTTON_POSITIVE),
|
||||||
dialog.getButton(AlertDialog.BUTTON_NEGATIVE)
|
dialog.getButton(AlertDialog.BUTTON_NEGATIVE)
|
||||||
)
|
)
|
||||||
@ -1157,7 +1164,7 @@ class ConversationsListController(bundle: Bundle) :
|
|||||||
private fun showUnauthorizedDialog() {
|
private fun showUnauthorizedDialog() {
|
||||||
if (activity != null) {
|
if (activity != null) {
|
||||||
val dialogBuilder = MaterialAlertDialogBuilder(binding.floatingActionButton.context)
|
val dialogBuilder = MaterialAlertDialogBuilder(binding.floatingActionButton.context)
|
||||||
.setIcon(viewThemeUtils.colorMaterialAlertDialogIcon(context, R.drawable.ic_delete_black_24dp))
|
.setIcon(viewThemeUtils.dialog.colorMaterialAlertDialogIcon(context, R.drawable.ic_delete_black_24dp))
|
||||||
.setTitle(R.string.nc_dialog_invalid_password)
|
.setTitle(R.string.nc_dialog_invalid_password)
|
||||||
.setMessage(R.string.nc_dialog_reauth_or_delete)
|
.setMessage(R.string.nc_dialog_reauth_or_delete)
|
||||||
.setCancelable(false)
|
.setCancelable(false)
|
||||||
@ -1187,9 +1194,10 @@ class ConversationsListController(bundle: Bundle) :
|
|||||||
.popChangeHandler(VerticalChangeHandler())
|
.popChangeHandler(VerticalChangeHandler())
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
viewThemeUtils.colorMaterialAlertDialogBackground(binding.floatingActionButton.context, dialogBuilder)
|
viewThemeUtils.dialog
|
||||||
|
.colorMaterialAlertDialogBackground(binding.floatingActionButton.context, dialogBuilder)
|
||||||
val dialog = dialogBuilder.show()
|
val dialog = dialogBuilder.show()
|
||||||
viewThemeUtils.colorTextButtons(
|
viewThemeUtils.platform.colorTextButtons(
|
||||||
dialog.getButton(AlertDialog.BUTTON_POSITIVE),
|
dialog.getButton(AlertDialog.BUTTON_POSITIVE),
|
||||||
dialog.getButton(AlertDialog.BUTTON_NEGATIVE)
|
dialog.getButton(AlertDialog.BUTTON_NEGATIVE)
|
||||||
)
|
)
|
||||||
@ -1198,7 +1206,7 @@ class ConversationsListController(bundle: Bundle) :
|
|||||||
|
|
||||||
private fun showServerEOLDialog() {
|
private fun showServerEOLDialog() {
|
||||||
val dialogBuilder = MaterialAlertDialogBuilder(binding.floatingActionButton.context)
|
val dialogBuilder = MaterialAlertDialogBuilder(binding.floatingActionButton.context)
|
||||||
.setIcon(viewThemeUtils.colorMaterialAlertDialogIcon(context, R.drawable.ic_warning_white))
|
.setIcon(viewThemeUtils.dialog.colorMaterialAlertDialogIcon(context, R.drawable.ic_warning_white))
|
||||||
.setTitle(R.string.nc_settings_server_eol_title)
|
.setTitle(R.string.nc_settings_server_eol_title)
|
||||||
.setMessage(R.string.nc_settings_server_eol)
|
.setMessage(R.string.nc_settings_server_eol)
|
||||||
.setCancelable(false)
|
.setCancelable(false)
|
||||||
@ -1229,9 +1237,9 @@ class ConversationsListController(bundle: Bundle) :
|
|||||||
activity!!.finish()
|
activity!!.finish()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
viewThemeUtils.colorMaterialAlertDialogBackground(binding.floatingActionButton.context, dialogBuilder)
|
viewThemeUtils.dialog.colorMaterialAlertDialogBackground(binding.floatingActionButton.context, dialogBuilder)
|
||||||
val dialog = dialogBuilder.show()
|
val dialog = dialogBuilder.show()
|
||||||
viewThemeUtils.colorTextButtons(
|
viewThemeUtils.platform.colorTextButtons(
|
||||||
dialog.getButton(AlertDialog.BUTTON_POSITIVE),
|
dialog.getButton(AlertDialog.BUTTON_POSITIVE),
|
||||||
dialog.getButton(AlertDialog.BUTTON_NEGATIVE)
|
dialog.getButton(AlertDialog.BUTTON_NEGATIVE)
|
||||||
)
|
)
|
||||||
|
@ -261,10 +261,10 @@ class ProfileController : BaseController(R.layout.controller_profile) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun colorIcons() {
|
private fun colorIcons() {
|
||||||
viewThemeUtils.themeFAB(binding.avatarChoose)
|
viewThemeUtils.material.themeFAB(binding.avatarChoose)
|
||||||
viewThemeUtils.themeFAB(binding.avatarCamera)
|
viewThemeUtils.material.themeFAB(binding.avatarCamera)
|
||||||
viewThemeUtils.themeFAB(binding.avatarUpload)
|
viewThemeUtils.material.themeFAB(binding.avatarUpload)
|
||||||
viewThemeUtils.themeFAB(binding.avatarDelete)
|
viewThemeUtils.material.themeFAB(binding.avatarDelete)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun isAllEmpty(items: Array<String?>): Boolean {
|
private fun isAllEmpty(items: Array<String?>): Boolean {
|
||||||
@ -755,10 +755,10 @@ class ProfileController : BaseController(R.layout.controller_profile) {
|
|||||||
initUserInfoEditText(holder, item)
|
initUserInfoEditText(holder, item)
|
||||||
|
|
||||||
holder.binding.icon.contentDescription = item.hint
|
holder.binding.icon.contentDescription = item.hint
|
||||||
viewThemeUtils.colorImageView(holder.binding.icon)
|
viewThemeUtils.platform.colorImageView(holder.binding.icon)
|
||||||
if (!TextUtils.isEmpty(item.text) || controller.edit) {
|
if (!TextUtils.isEmpty(item.text) || controller.edit) {
|
||||||
holder.binding.userInfoDetailContainer.visibility = View.VISIBLE
|
holder.binding.userInfoDetailContainer.visibility = View.VISIBLE
|
||||||
controller.viewThemeUtils.colorTextInputLayout(holder.binding.userInfoInputLayout)
|
controller.viewThemeUtils.material.colorTextInputLayout(holder.binding.userInfoInputLayout)
|
||||||
if (controller.edit &&
|
if (controller.edit &&
|
||||||
controller.editableFields.contains(item.field.toString().lowercase())
|
controller.editableFields.contains(item.field.toString().lowercase())
|
||||||
) {
|
) {
|
||||||
|
@ -385,14 +385,14 @@ class SettingsController : BaseController(R.layout.controller_settings) {
|
|||||||
// unused atm
|
// unused atm
|
||||||
}
|
}
|
||||||
|
|
||||||
viewThemeUtils.colorMaterialAlertDialogBackground(
|
viewThemeUtils.dialog.colorMaterialAlertDialogBackground(
|
||||||
binding.messageText.context,
|
binding.messageText.context,
|
||||||
materialAlertDialogBuilder
|
materialAlertDialogBuilder
|
||||||
)
|
)
|
||||||
|
|
||||||
val dialog = materialAlertDialogBuilder.show()
|
val dialog = materialAlertDialogBuilder.show()
|
||||||
|
|
||||||
viewThemeUtils.colorTextButtons(
|
viewThemeUtils.platform.colorTextButtons(
|
||||||
dialog.getButton(AlertDialog.BUTTON_POSITIVE),
|
dialog.getButton(AlertDialog.BUTTON_POSITIVE),
|
||||||
dialog.getButton(AlertDialog.BUTTON_NEGATIVE)
|
dialog.getButton(AlertDialog.BUTTON_NEGATIVE)
|
||||||
)
|
)
|
||||||
@ -508,7 +508,7 @@ class SettingsController : BaseController(R.layout.controller_settings) {
|
|||||||
settingsPhoneBookIntegration,
|
settingsPhoneBookIntegration,
|
||||||
settingsReadPrivacy,
|
settingsReadPrivacy,
|
||||||
settingsProxyUseCredentials
|
settingsProxyUseCredentials
|
||||||
).forEach(viewThemeUtils::colorSwitchPreference)
|
).forEach(viewThemeUtils.talk::colorSwitchPreference)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -520,7 +520,7 @@ class SettingsController : BaseController(R.layout.controller_settings) {
|
|||||||
settingsAdvancedCategory,
|
settingsAdvancedCategory,
|
||||||
settingsAppearanceCategory,
|
settingsAppearanceCategory,
|
||||||
settingsPrivacyCategory
|
settingsPrivacyCategory
|
||||||
).forEach(viewThemeUtils::colorPreferenceCategory)
|
).forEach(viewThemeUtils.talk::colorPreferenceCategory)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -952,7 +952,7 @@ class SettingsController : BaseController(R.layout.controller_settings) {
|
|||||||
.setPositiveButton(context!!.resources.getString(R.string.nc_common_set), null)
|
.setPositiveButton(context!!.resources.getString(R.string.nc_common_set), null)
|
||||||
.setNegativeButton(context!!.resources.getString(R.string.nc_common_skip), null)
|
.setNegativeButton(context!!.resources.getString(R.string.nc_common_skip), null)
|
||||||
|
|
||||||
viewThemeUtils.colorMaterialAlertDialogBackground(phoneNumberInputLayout.context, dialogBuilder)
|
viewThemeUtils.dialog.colorMaterialAlertDialogBackground(phoneNumberInputLayout.context, dialogBuilder)
|
||||||
|
|
||||||
val dialog = dialogBuilder.create()
|
val dialog = dialogBuilder.create()
|
||||||
dialog.setOnShowListener(object : OnShowListener {
|
dialog.setOnShowListener(object : OnShowListener {
|
||||||
@ -968,7 +968,7 @@ class SettingsController : BaseController(R.layout.controller_settings) {
|
|||||||
|
|
||||||
dialog.show()
|
dialog.show()
|
||||||
|
|
||||||
viewThemeUtils.colorTextButtons(
|
viewThemeUtils.platform.colorTextButtons(
|
||||||
dialog.getButton(AlertDialog.BUTTON_POSITIVE),
|
dialog.getButton(AlertDialog.BUTTON_POSITIVE),
|
||||||
dialog.getButton(AlertDialog.BUTTON_NEGATIVE)
|
dialog.getButton(AlertDialog.BUTTON_NEGATIVE)
|
||||||
)
|
)
|
||||||
|
@ -123,9 +123,9 @@ abstract class BaseController(@LayoutRes var layoutRes: Int, args: Bundle? = nul
|
|||||||
|
|
||||||
if (getActivity() != null && getActivity() is MainActivity) {
|
if (getActivity() != null && getActivity() is MainActivity) {
|
||||||
activity = getActivity() as MainActivity?
|
activity = getActivity() as MainActivity?
|
||||||
viewThemeUtils.themeCardView(activity!!.binding.searchToolbar)
|
viewThemeUtils.material.themeCardView(activity!!.binding.searchToolbar)
|
||||||
viewThemeUtils.themeToolbar(activity.binding.toolbar)
|
viewThemeUtils.material.themeToolbar(activity.binding.toolbar)
|
||||||
viewThemeUtils.themeSearchBarText(activity.binding.searchText)
|
viewThemeUtils.material.themeSearchBarText(activity.binding.searchText)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && appPreferences.isKeyboardIncognito) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && appPreferences.isKeyboardIncognito) {
|
||||||
@ -188,7 +188,7 @@ abstract class BaseController(@LayoutRes var layoutRes: Int, args: Bundle? = nul
|
|||||||
val layoutParams = binding.searchToolbar.layoutParams as AppBarLayout.LayoutParams
|
val layoutParams = binding.searchToolbar.layoutParams as AppBarLayout.LayoutParams
|
||||||
binding.searchToolbar.visibility = View.GONE
|
binding.searchToolbar.visibility = View.GONE
|
||||||
binding.toolbar.visibility = View.VISIBLE
|
binding.toolbar.visibility = View.VISIBLE
|
||||||
viewThemeUtils.colorToolbarOverflowIcon(binding.toolbar)
|
viewThemeUtils.material.colorToolbarOverflowIcon(binding.toolbar)
|
||||||
layoutParams.scrollFlags = 0
|
layoutParams.scrollFlags = 0
|
||||||
binding.appBar.stateListAnimator = AnimatorInflater.loadStateListAnimator(
|
binding.appBar.stateListAnimator = AnimatorInflater.loadStateListAnimator(
|
||||||
binding.appBar.context,
|
binding.appBar.context,
|
||||||
@ -217,9 +217,9 @@ abstract class BaseController(@LayoutRes var layoutRes: Int, args: Bundle? = nul
|
|||||||
private fun colorizeStatusBar(showSearchBar: Boolean, activity: Activity?, resources: Resources?) {
|
private fun colorizeStatusBar(showSearchBar: Boolean, activity: Activity?, resources: Resources?) {
|
||||||
if (activity != null && resources != null) {
|
if (activity != null && resources != null) {
|
||||||
if (showSearchBar) {
|
if (showSearchBar) {
|
||||||
view?.let { viewThemeUtils.resetStatusBar(activity, it) }
|
view?.let { viewThemeUtils.platform.resetStatusBar(activity) }
|
||||||
} else {
|
} else {
|
||||||
view?.let { viewThemeUtils.themeStatusBar(activity, it) }
|
view?.let { viewThemeUtils.platform.themeStatusBar(activity, it) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -124,7 +124,7 @@ class EntryMenuController(args: Bundle) :
|
|||||||
rootView = view,
|
rootView = view,
|
||||||
editText = binding.textEdit,
|
editText = binding.textEdit,
|
||||||
onEmojiPopupShownListener = {
|
onEmojiPopupShownListener = {
|
||||||
viewThemeUtils.colorImageView(binding.smileyButton)
|
viewThemeUtils.platform.colorImageView(binding.smileyButton)
|
||||||
},
|
},
|
||||||
onEmojiPopupDismissListener = {
|
onEmojiPopupDismissListener = {
|
||||||
binding.smileyButton.imageTintList = ColorStateList.valueOf(
|
binding.smileyButton.imageTintList = ColorStateList.valueOf(
|
||||||
@ -157,8 +157,8 @@ class EntryMenuController(args: Bundle) :
|
|||||||
binding.textInputLayout.endIconMode = TextInputLayout.END_ICON_NONE
|
binding.textInputLayout.endIconMode = TextInputLayout.END_ICON_NONE
|
||||||
}
|
}
|
||||||
|
|
||||||
viewThemeUtils.colorTextInputLayout(binding.textInputLayout)
|
viewThemeUtils.material.colorTextInputLayout(binding.textInputLayout)
|
||||||
viewThemeUtils.colorMaterialButtonText(binding.okButton)
|
viewThemeUtils.material.colorMaterialButtonText(binding.okButton)
|
||||||
|
|
||||||
binding.textInputLayout.hint = labelText
|
binding.textInputLayout.hint = labelText
|
||||||
binding.textInputLayout.requestFocus()
|
binding.textInputLayout.requestFocus()
|
||||||
|
@ -117,7 +117,7 @@ class OperationsMenuController(args: Bundle) : BaseController(
|
|||||||
sharedApplication!!.componentApplication.inject(this)
|
sharedApplication!!.componentApplication.inject(this)
|
||||||
currentUser = userManager.currentUser.blockingGet()
|
currentUser = userManager.currentUser.blockingGet()
|
||||||
|
|
||||||
viewThemeUtils.colorCircularProgressBar(binding.progressBar)
|
viewThemeUtils.platform.colorCircularProgressBar(binding.progressBar)
|
||||||
|
|
||||||
if (!TextUtils.isEmpty(callUrl) && callUrl.contains("/call")) {
|
if (!TextUtils.isEmpty(callUrl) && callUrl.contains("/call")) {
|
||||||
conversationToken = callUrl.substring(callUrl.lastIndexOf("/") + 1)
|
conversationToken = callUrl.substring(callUrl.lastIndexOf("/") + 1)
|
||||||
|
@ -50,7 +50,7 @@ class PollCreateOptionViewHolder(
|
|||||||
}
|
}
|
||||||
|
|
||||||
binding.pollOptionTextEdit.setText(pollCreateOptionItem.pollOption)
|
binding.pollOptionTextEdit.setText(pollCreateOptionItem.pollOption)
|
||||||
viewThemeUtils.colorTextInputLayout(binding.pollOptionTextInputLayout)
|
viewThemeUtils.material.colorTextInputLayout(binding.pollOptionTextInputLayout)
|
||||||
|
|
||||||
if (focus) {
|
if (focus) {
|
||||||
itemsListener.requestFocus(binding.pollOptionTextEdit)
|
itemsListener.requestFocus(binding.pollOptionTextEdit)
|
||||||
|
@ -34,15 +34,15 @@ class PollResultHeaderViewHolder(
|
|||||||
override fun bind(pollResultItem: PollResultItem, clickListener: PollResultItemClickListener) {
|
override fun bind(pollResultItem: PollResultItem, clickListener: PollResultItemClickListener) {
|
||||||
val item = pollResultItem as PollResultHeaderItem
|
val item = pollResultItem as PollResultHeaderItem
|
||||||
|
|
||||||
viewThemeUtils.colorProgressBar(binding.pollOptionBar)
|
viewThemeUtils.material.colorProgressBar(binding.pollOptionBar)
|
||||||
|
|
||||||
binding.root.setOnClickListener { clickListener.onClick() }
|
binding.root.setOnClickListener { clickListener.onClick() }
|
||||||
|
|
||||||
binding.pollOptionText.text = item.name
|
binding.pollOptionText.text = item.name
|
||||||
binding.pollOptionPercentText.text = "${item.percent}%"
|
binding.pollOptionPercentText.text = "${item.percent}%"
|
||||||
|
|
||||||
viewThemeUtils.colorDialogSupportingText(binding.pollOptionText)
|
viewThemeUtils.dialog.colorDialogSupportingText(binding.pollOptionText)
|
||||||
viewThemeUtils.colorDialogSupportingText(binding.pollOptionPercentText)
|
viewThemeUtils.dialog.colorDialogSupportingText(binding.pollOptionPercentText)
|
||||||
|
|
||||||
if (item.selfVoted) {
|
if (item.selfVoted) {
|
||||||
binding.pollOptionText.setTypeface(null, Typeface.BOLD)
|
binding.pollOptionText.setTypeface(null, Typeface.BOLD)
|
||||||
|
@ -47,7 +47,7 @@ class PollResultVoterViewHolder(
|
|||||||
|
|
||||||
binding.pollVoterName.text = item.details.actorDisplayName
|
binding.pollVoterName.text = item.details.actorDisplayName
|
||||||
binding.pollVoterAvatar.controller = getAvatarDraweeController(item.details)
|
binding.pollVoterAvatar.controller = getAvatarDraweeController(item.details)
|
||||||
viewThemeUtils.colorDialogSupportingText(binding.pollVoterName)
|
viewThemeUtils.dialog.colorDialogSupportingText(binding.pollVoterName)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getAvatarDraweeController(pollDetail: PollDetails): DraweeController? {
|
private fun getAvatarDraweeController(pollDetail: PollDetails): DraweeController? {
|
||||||
|
@ -75,7 +75,7 @@ class PollCreateDialogFragment : DialogFragment(), PollCreateOptionsItemListener
|
|||||||
|
|
||||||
val dialogBuilder = MaterialAlertDialogBuilder(binding.root.context)
|
val dialogBuilder = MaterialAlertDialogBuilder(binding.root.context)
|
||||||
.setView(binding.root)
|
.setView(binding.root)
|
||||||
viewThemeUtils.colorMaterialAlertDialogBackground(binding.root.context, dialogBuilder)
|
viewThemeUtils.dialog.colorMaterialAlertDialogBackground(binding.root.context, dialogBuilder)
|
||||||
|
|
||||||
return dialogBuilder.create()
|
return dialogBuilder.create()
|
||||||
}
|
}
|
||||||
@ -101,18 +101,18 @@ class PollCreateDialogFragment : DialogFragment(), PollCreateOptionsItemListener
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun themeDialog() {
|
private fun themeDialog() {
|
||||||
viewThemeUtils.colorPrimaryTextViewElement(binding.pollQuestion)
|
viewThemeUtils.platform.colorPrimaryTextViewElement(binding.pollQuestion)
|
||||||
viewThemeUtils.colorPrimaryTextViewElement(binding.pollOptions)
|
viewThemeUtils.platform.colorPrimaryTextViewElement(binding.pollOptions)
|
||||||
viewThemeUtils.colorPrimaryTextViewElement(binding.pollSettings)
|
viewThemeUtils.platform.colorPrimaryTextViewElement(binding.pollSettings)
|
||||||
|
|
||||||
viewThemeUtils.colorTextInputLayout(binding.pollCreateQuestionTextInputLayout)
|
viewThemeUtils.material.colorTextInputLayout(binding.pollCreateQuestionTextInputLayout)
|
||||||
|
|
||||||
viewThemeUtils.colorMaterialButtonText(binding.pollAddOptionsItem)
|
viewThemeUtils.material.colorMaterialButtonText(binding.pollAddOptionsItem)
|
||||||
viewThemeUtils.colorMaterialButtonText(binding.pollDismiss)
|
viewThemeUtils.material.colorMaterialButtonText(binding.pollDismiss)
|
||||||
viewThemeUtils.colorMaterialButtonPrimaryFilled(binding.pollCreateButton)
|
viewThemeUtils.material.colorMaterialButtonPrimaryFilled(binding.pollCreateButton)
|
||||||
|
|
||||||
viewThemeUtils.themeCheckbox(binding.pollPrivatePollCheckbox)
|
viewThemeUtils.platform.themeCheckbox(binding.pollPrivatePollCheckbox)
|
||||||
viewThemeUtils.themeCheckbox(binding.pollMultipleAnswersCheckbox)
|
viewThemeUtils.platform.themeCheckbox(binding.pollMultipleAnswersCheckbox)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setupListeners() {
|
private fun setupListeners() {
|
||||||
|
@ -55,7 +55,7 @@ class PollLoadingFragment : Fragment() {
|
|||||||
): View {
|
): View {
|
||||||
binding = DialogPollLoadingBinding.inflate(inflater, container, false)
|
binding = DialogPollLoadingBinding.inflate(inflater, container, false)
|
||||||
binding.root.layoutParams.height = fragmentHeight
|
binding.root.layoutParams.height = fragmentHeight
|
||||||
viewThemeUtils.colorCircularProgressBar(binding.pollLoadingProgressbar)
|
viewThemeUtils.platform.colorCircularProgressBar(binding.pollLoadingProgressbar)
|
||||||
return binding.root
|
return binding.root
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,13 +72,13 @@ class PollMainDialogFragment : DialogFragment() {
|
|||||||
|
|
||||||
val dialogBuilder = MaterialAlertDialogBuilder(binding.root.context).setView(binding.root)
|
val dialogBuilder = MaterialAlertDialogBuilder(binding.root.context).setView(binding.root)
|
||||||
|
|
||||||
viewThemeUtils.colorMaterialAlertDialogBackground(binding.root.context, dialogBuilder)
|
viewThemeUtils.dialog.colorMaterialAlertDialogBackground(binding.root.context, dialogBuilder)
|
||||||
|
|
||||||
val dialog = dialogBuilder.create()
|
val dialog = dialogBuilder.create()
|
||||||
|
|
||||||
binding.messagePollTitle.text = viewModel.pollTitle
|
binding.messagePollTitle.text = viewModel.pollTitle
|
||||||
viewThemeUtils.colorDialogHeadline(binding.messagePollTitle)
|
viewThemeUtils.dialog.colorDialogHeadline(binding.messagePollTitle)
|
||||||
viewThemeUtils.colorDialogIcon(binding.messagePollIcon)
|
viewThemeUtils.dialog.colorDialogIcon(binding.messagePollIcon)
|
||||||
|
|
||||||
return dialog
|
return dialog
|
||||||
}
|
}
|
||||||
@ -143,7 +143,7 @@ class PollMainDialogFragment : DialogFragment() {
|
|||||||
|
|
||||||
private fun initVotersAmount(showVotersAmount: Boolean, numVoters: Int, showResultSubtitle: Boolean) {
|
private fun initVotersAmount(showVotersAmount: Boolean, numVoters: Int, showResultSubtitle: Boolean) {
|
||||||
if (showVotersAmount) {
|
if (showVotersAmount) {
|
||||||
viewThemeUtils.colorDialogSupportingText(binding.pollVotesAmount)
|
viewThemeUtils.dialog.colorDialogSupportingText(binding.pollVotesAmount)
|
||||||
binding.pollVotesAmount.visibility = View.VISIBLE
|
binding.pollVotesAmount.visibility = View.VISIBLE
|
||||||
binding.pollVotesAmount.text = resources.getQuantityString(
|
binding.pollVotesAmount.text = resources.getQuantityString(
|
||||||
R.plurals.polls_amount_voters,
|
R.plurals.polls_amount_voters,
|
||||||
@ -155,7 +155,7 @@ class PollMainDialogFragment : DialogFragment() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (showResultSubtitle) {
|
if (showResultSubtitle) {
|
||||||
viewThemeUtils.colorDialogSupportingText(binding.pollResultsSubtitle)
|
viewThemeUtils.dialog.colorDialogSupportingText(binding.pollResultsSubtitle)
|
||||||
binding.pollResultsSubtitle.visibility = View.VISIBLE
|
binding.pollResultsSubtitle.visibility = View.VISIBLE
|
||||||
binding.pollResultsSubtitleSeperator.visibility = View.VISIBLE
|
binding.pollResultsSubtitleSeperator.visibility = View.VISIBLE
|
||||||
} else {
|
} else {
|
||||||
|
@ -99,8 +99,8 @@ class PollResultsFragment : Fragment(), PollResultItemClickListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun themeDialog() {
|
private fun themeDialog() {
|
||||||
viewThemeUtils.colorMaterialButtonPrimaryFilled(binding.editVoteButton)
|
viewThemeUtils.material.colorMaterialButtonPrimaryFilled(binding.editVoteButton)
|
||||||
viewThemeUtils.colorMaterialButtonPrimaryBorderless(binding.pollResultsEndPollButton)
|
viewThemeUtils.material.colorMaterialButtonPrimaryBorderless(binding.pollResultsEndPollButton)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun initAdapter() {
|
private fun initAdapter() {
|
||||||
@ -132,14 +132,14 @@ class PollResultsFragment : Fragment(), PollResultItemClickListener {
|
|||||||
}
|
}
|
||||||
.setNegativeButton(R.string.nc_cancel, null)
|
.setNegativeButton(R.string.nc_cancel, null)
|
||||||
|
|
||||||
viewThemeUtils.colorMaterialAlertDialogBackground(
|
viewThemeUtils.dialog.colorMaterialAlertDialogBackground(
|
||||||
binding.pollResultsEndPollButton.context,
|
binding.pollResultsEndPollButton.context,
|
||||||
dialogBuilder
|
dialogBuilder
|
||||||
)
|
)
|
||||||
|
|
||||||
val dialog = dialogBuilder.show()
|
val dialog = dialogBuilder.show()
|
||||||
|
|
||||||
viewThemeUtils.colorTextButtons(
|
viewThemeUtils.platform.colorTextButtons(
|
||||||
dialog.getButton(AlertDialog.BUTTON_POSITIVE),
|
dialog.getButton(AlertDialog.BUTTON_POSITIVE),
|
||||||
dialog.getButton(AlertDialog.BUTTON_NEGATIVE)
|
dialog.getButton(AlertDialog.BUTTON_NEGATIVE)
|
||||||
)
|
)
|
||||||
|
@ -127,9 +127,9 @@ class PollVoteFragment : Fragment() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun themeDialog() {
|
private fun themeDialog() {
|
||||||
viewThemeUtils.colorMaterialButtonPrimaryFilled(binding.pollVoteSubmitButton)
|
viewThemeUtils.material.colorMaterialButtonPrimaryFilled(binding.pollVoteSubmitButton)
|
||||||
viewThemeUtils.colorMaterialButtonText(binding.pollVoteEndPollButton)
|
viewThemeUtils.material.colorMaterialButtonText(binding.pollVoteEndPollButton)
|
||||||
viewThemeUtils.colorMaterialButtonPrimaryOutlined(binding.pollVoteEditDismiss)
|
viewThemeUtils.material.colorMaterialButtonPrimaryOutlined(binding.pollVoteEditDismiss)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun updateDismissEditButton(showDismissEditButton: Boolean) {
|
private fun updateDismissEditButton(showDismissEditButton: Boolean) {
|
||||||
@ -149,7 +149,7 @@ class PollVoteFragment : Fragment() {
|
|||||||
RadioButton(context).apply { text = option }
|
RadioButton(context).apply { text = option }
|
||||||
}?.forEachIndexed { index, radioButton ->
|
}?.forEachIndexed { index, radioButton ->
|
||||||
radioButton.id = index
|
radioButton.id = index
|
||||||
viewThemeUtils.themeRadioButton(radioButton)
|
viewThemeUtils.platform.themeRadioButton(radioButton)
|
||||||
makeOptionBoldIfSelfVoted(radioButton, poll, index)
|
makeOptionBoldIfSelfVoted(radioButton, poll, index)
|
||||||
binding.pollVoteRadioGroup.addView(radioButton)
|
binding.pollVoteRadioGroup.addView(radioButton)
|
||||||
|
|
||||||
@ -170,7 +170,7 @@ class PollVoteFragment : Fragment() {
|
|||||||
setLayoutParams(layoutParams)
|
setLayoutParams(layoutParams)
|
||||||
}
|
}
|
||||||
}?.forEachIndexed { index, checkBox ->
|
}?.forEachIndexed { index, checkBox ->
|
||||||
viewThemeUtils.themeCheckbox(checkBox)
|
viewThemeUtils.platform.themeCheckbox(checkBox)
|
||||||
checkBox.id = index
|
checkBox.id = index
|
||||||
makeOptionBoldIfSelfVoted(checkBox, poll, index)
|
makeOptionBoldIfSelfVoted(checkBox, poll, index)
|
||||||
binding.voteOptionsCheckboxesWrapper.addView(checkBox)
|
binding.voteOptionsCheckboxesWrapper.addView(checkBox)
|
||||||
@ -215,14 +215,14 @@ class PollVoteFragment : Fragment() {
|
|||||||
}
|
}
|
||||||
.setNegativeButton(R.string.nc_cancel, null)
|
.setNegativeButton(R.string.nc_cancel, null)
|
||||||
|
|
||||||
viewThemeUtils.colorMaterialAlertDialogBackground(
|
viewThemeUtils.dialog.colorMaterialAlertDialogBackground(
|
||||||
binding.pollVoteEndPollButton.context,
|
binding.pollVoteEndPollButton.context,
|
||||||
dialogBuilder
|
dialogBuilder
|
||||||
)
|
)
|
||||||
|
|
||||||
val dialog = dialogBuilder.show()
|
val dialog = dialogBuilder.show()
|
||||||
|
|
||||||
viewThemeUtils.colorTextButtons(
|
viewThemeUtils.platform.colorTextButtons(
|
||||||
dialog.getButton(AlertDialog.BUTTON_POSITIVE),
|
dialog.getButton(AlertDialog.BUTTON_POSITIVE),
|
||||||
dialog.getButton(AlertDialog.BUTTON_NEGATIVE)
|
dialog.getButton(AlertDialog.BUTTON_NEGATIVE)
|
||||||
)
|
)
|
||||||
|
@ -75,16 +75,16 @@ class RemoteFileBrowserActivity : AppCompatActivity(), SelectionInterface, Swipe
|
|||||||
|
|
||||||
binding = ActivityRemoteFileBrowserBinding.inflate(layoutInflater)
|
binding = ActivityRemoteFileBrowserBinding.inflate(layoutInflater)
|
||||||
setSupportActionBar(binding.remoteFileBrowserItemsToolbar)
|
setSupportActionBar(binding.remoteFileBrowserItemsToolbar)
|
||||||
viewThemeUtils.themeToolbar(binding.remoteFileBrowserItemsToolbar)
|
viewThemeUtils.material.themeToolbar(binding.remoteFileBrowserItemsToolbar)
|
||||||
val scheme = viewThemeUtils.getScheme(binding.sortListButtonGroup.context)
|
val scheme = viewThemeUtils.getScheme(binding.sortListButtonGroup.context)
|
||||||
binding.sortListButtonGroup.setBackgroundColor(scheme.surface)
|
binding.sortListButtonGroup.setBackgroundColor(scheme.surface)
|
||||||
binding.sortButton.iconTint = ColorStateList.valueOf(scheme.onSurface)
|
binding.sortButton.iconTint = ColorStateList.valueOf(scheme.onSurface)
|
||||||
binding.sortButton.setTextColor(scheme.onSurface)
|
binding.sortButton.setTextColor(scheme.onSurface)
|
||||||
viewThemeUtils.colorMaterialTextButton(binding.sortButton)
|
viewThemeUtils.material.colorMaterialTextButton(binding.sortButton)
|
||||||
binding.pathNavigationBackButton.iconTint = ColorStateList.valueOf(scheme.onSurface)
|
binding.pathNavigationBackButton.iconTint = ColorStateList.valueOf(scheme.onSurface)
|
||||||
binding.pathNavigationBackButton.setTextColor(scheme.onSurface)
|
binding.pathNavigationBackButton.setTextColor(scheme.onSurface)
|
||||||
viewThemeUtils.colorMaterialTextButton(binding.pathNavigationBackButton)
|
viewThemeUtils.material.colorMaterialTextButton(binding.pathNavigationBackButton)
|
||||||
viewThemeUtils.themeStatusBar(this, binding.remoteFileBrowserItemsToolbar)
|
viewThemeUtils.platform.themeStatusBar(this, binding.remoteFileBrowserItemsToolbar)
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
|
|
||||||
DisplayUtils.applyColorToNavigationBar(
|
DisplayUtils.applyColorToNavigationBar(
|
||||||
@ -100,7 +100,7 @@ class RemoteFileBrowserActivity : AppCompatActivity(), SelectionInterface, Swipe
|
|||||||
initViewModel(mimeTypeSelectionFilter)
|
initViewModel(mimeTypeSelectionFilter)
|
||||||
|
|
||||||
binding.swipeRefreshList.setOnRefreshListener(this)
|
binding.swipeRefreshList.setOnRefreshListener(this)
|
||||||
viewThemeUtils.themeSwipeRefreshLayout(binding.swipeRefreshList)
|
viewThemeUtils.androidx.themeSwipeRefreshLayout(binding.swipeRefreshList)
|
||||||
|
|
||||||
binding.pathNavigationBackButton.setOnClickListener { viewModel.navigateUp() }
|
binding.pathNavigationBackButton.setOnClickListener { viewModel.navigateUp() }
|
||||||
binding.sortButton.setOnClickListener { changeSorting() }
|
binding.sortButton.setOnClickListener { changeSorting() }
|
||||||
|
@ -98,7 +98,7 @@ class RemoteFileBrowserItemsListViewHolder(
|
|||||||
binding.fileIcon
|
binding.fileIcon
|
||||||
.hierarchy
|
.hierarchy
|
||||||
.setPlaceholderImage(
|
.setPlaceholderImage(
|
||||||
viewThemeUtils.getPlaceholderImage(binding.root.context, item.mimeType)
|
viewThemeUtils.talk.getPlaceholderImage(binding.root.context, item.mimeType)
|
||||||
)
|
)
|
||||||
|
|
||||||
if (item.hasPreview) {
|
if (item.hasPreview) {
|
||||||
@ -129,7 +129,7 @@ class RemoteFileBrowserItemsListViewHolder(
|
|||||||
private fun setSelectability() {
|
private fun setSelectability() {
|
||||||
if (selectable) {
|
if (selectable) {
|
||||||
binding.selectFileCheckbox.visibility = View.VISIBLE
|
binding.selectFileCheckbox.visibility = View.VISIBLE
|
||||||
viewThemeUtils.themeCheckbox(binding.selectFileCheckbox)
|
viewThemeUtils.platform.themeCheckbox(binding.selectFileCheckbox)
|
||||||
} else {
|
} else {
|
||||||
binding.selectFileCheckbox.visibility = View.GONE
|
binding.selectFileCheckbox.visibility = View.GONE
|
||||||
}
|
}
|
||||||
|
@ -73,9 +73,9 @@ class SharedItemsActivity : AppCompatActivity() {
|
|||||||
setSupportActionBar(binding.sharedItemsToolbar)
|
setSupportActionBar(binding.sharedItemsToolbar)
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
|
|
||||||
viewThemeUtils.themeStatusBar(this, binding.sharedItemsToolbar)
|
viewThemeUtils.platform.themeStatusBar(this, binding.sharedItemsToolbar)
|
||||||
viewThemeUtils.themeToolbar(binding.sharedItemsToolbar)
|
viewThemeUtils.material.themeToolbar(binding.sharedItemsToolbar)
|
||||||
viewThemeUtils.themeTabLayoutOnSurface(binding.sharedItemsTabs)
|
viewThemeUtils.material.themeTabLayoutOnSurface(binding.sharedItemsTabs)
|
||||||
|
|
||||||
DisplayUtils.applyColorToNavigationBar(
|
DisplayUtils.applyColorToNavigationBar(
|
||||||
this.window,
|
this.window,
|
||||||
@ -146,7 +146,7 @@ class SharedItemsActivity : AppCompatActivity() {
|
|||||||
else -> {}
|
else -> {}
|
||||||
}
|
}
|
||||||
|
|
||||||
viewThemeUtils.themeTabLayoutOnSurface(binding.sharedItemsTabs)
|
viewThemeUtils.material.themeTabLayoutOnSurface(binding.sharedItemsTabs)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun clearEmptyLoading() {
|
private fun clearEmptyLoading() {
|
||||||
|
@ -70,7 +70,7 @@ abstract class SharedItemsViewHolder(
|
|||||||
)
|
)
|
||||||
|
|
||||||
open fun onBind(item: SharedFileItem) {
|
open fun onBind(item: SharedFileItem) {
|
||||||
image.hierarchy.setPlaceholderImage(viewThemeUtils.getPlaceholderImage(image.context, item.mimeType))
|
image.hierarchy.setPlaceholderImage(viewThemeUtils.talk.getPlaceholderImage(image.context, item.mimeType))
|
||||||
if (item.previewAvailable) {
|
if (item.previewAvailable) {
|
||||||
image.controller = configurePreview(item)
|
image.controller = configurePreview(item)
|
||||||
}
|
}
|
||||||
|
@ -53,7 +53,7 @@ class AttachmentDialog(val activity: Activity, var chatController: ChatControlle
|
|||||||
setContentView(dialogAttachmentBinding.root)
|
setContentView(dialogAttachmentBinding.root)
|
||||||
window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
|
window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
|
||||||
|
|
||||||
viewThemeUtils.themeDialog(dialogAttachmentBinding.root)
|
viewThemeUtils.platform.themeDialog(dialogAttachmentBinding.root)
|
||||||
initItemsStrings()
|
initItemsStrings()
|
||||||
initItemsVisibility()
|
initItemsVisibility()
|
||||||
initItemsClickListeners()
|
initItemsClickListeners()
|
||||||
|
@ -51,7 +51,7 @@ class AudioOutputDialog(val callActivity: CallActivity) : BottomSheetDialog(call
|
|||||||
setContentView(dialogAudioOutputBinding.root)
|
setContentView(dialogAudioOutputBinding.root)
|
||||||
window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
|
window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
|
||||||
|
|
||||||
viewThemeUtils.themeDialogDark(dialogAudioOutputBinding.root)
|
viewThemeUtils.platform.themeDialogDark(dialogAudioOutputBinding.root)
|
||||||
updateOutputDeviceList()
|
updateOutputDeviceList()
|
||||||
initClickListeners()
|
initClickListeners()
|
||||||
}
|
}
|
||||||
@ -92,23 +92,28 @@ class AudioOutputDialog(val callActivity: CallActivity) : BottomSheetDialog(call
|
|||||||
private fun highlightActiveOutputChannel() {
|
private fun highlightActiveOutputChannel() {
|
||||||
when (callActivity.audioManager?.currentAudioDevice) {
|
when (callActivity.audioManager?.currentAudioDevice) {
|
||||||
WebRtcAudioManager.AudioDevice.BLUETOOTH -> {
|
WebRtcAudioManager.AudioDevice.BLUETOOTH -> {
|
||||||
viewThemeUtils.colorImageView(dialogAudioOutputBinding.audioOutputBluetoothIcon)
|
viewThemeUtils.platform.colorImageView(dialogAudioOutputBinding.audioOutputBluetoothIcon)
|
||||||
viewThemeUtils.colorPrimaryTextViewElementDarkMode(dialogAudioOutputBinding.audioOutputBluetoothText)
|
viewThemeUtils.platform
|
||||||
|
.colorPrimaryTextViewElementDarkMode(dialogAudioOutputBinding.audioOutputBluetoothText)
|
||||||
}
|
}
|
||||||
|
|
||||||
WebRtcAudioManager.AudioDevice.SPEAKER_PHONE -> {
|
WebRtcAudioManager.AudioDevice.SPEAKER_PHONE -> {
|
||||||
viewThemeUtils.colorImageView(dialogAudioOutputBinding.audioOutputSpeakerIcon)
|
viewThemeUtils.platform.colorImageView(dialogAudioOutputBinding.audioOutputSpeakerIcon)
|
||||||
viewThemeUtils.colorPrimaryTextViewElementDarkMode(dialogAudioOutputBinding.audioOutputSpeakerText)
|
viewThemeUtils.platform
|
||||||
|
.colorPrimaryTextViewElementDarkMode(dialogAudioOutputBinding.audioOutputSpeakerText)
|
||||||
}
|
}
|
||||||
|
|
||||||
WebRtcAudioManager.AudioDevice.EARPIECE -> {
|
WebRtcAudioManager.AudioDevice.EARPIECE -> {
|
||||||
viewThemeUtils.colorImageView(dialogAudioOutputBinding.audioOutputEarspeakerIcon)
|
viewThemeUtils.platform.colorImageView(dialogAudioOutputBinding.audioOutputEarspeakerIcon)
|
||||||
viewThemeUtils.colorPrimaryTextViewElementDarkMode(dialogAudioOutputBinding.audioOutputEarspeakerText)
|
viewThemeUtils.platform
|
||||||
|
.colorPrimaryTextViewElementDarkMode(dialogAudioOutputBinding.audioOutputEarspeakerText)
|
||||||
}
|
}
|
||||||
|
|
||||||
WebRtcAudioManager.AudioDevice.WIRED_HEADSET -> {
|
WebRtcAudioManager.AudioDevice.WIRED_HEADSET -> {
|
||||||
viewThemeUtils.colorImageView(dialogAudioOutputBinding.audioOutputWiredHeadsetIcon)
|
viewThemeUtils.platform
|
||||||
viewThemeUtils.colorPrimaryTextViewElementDarkMode(dialogAudioOutputBinding.audioOutputWiredHeadsetText)
|
.colorImageView(dialogAudioOutputBinding.audioOutputWiredHeadsetIcon)
|
||||||
|
viewThemeUtils.platform
|
||||||
|
.colorPrimaryTextViewElementDarkMode(dialogAudioOutputBinding.audioOutputWiredHeadsetText)
|
||||||
}
|
}
|
||||||
|
|
||||||
else -> Log.d(TAG, "AudioOutputDialog doesn't know this AudioDevice")
|
else -> Log.d(TAG, "AudioOutputDialog doesn't know this AudioDevice")
|
||||||
|
@ -129,7 +129,7 @@ public class ChooseAccountDialogFragment extends DialogFragment {
|
|||||||
binding.currentAccount.ticker.setVisibility(View.GONE);
|
binding.currentAccount.ticker.setVisibility(View.GONE);
|
||||||
binding.currentAccount.account.setText((Uri.parse(user.getBaseUrl()).getHost()));
|
binding.currentAccount.account.setText((Uri.parse(user.getBaseUrl()).getHost()));
|
||||||
|
|
||||||
viewThemeUtils.colorImageView(binding.currentAccount.accountMenu);
|
viewThemeUtils.platform.colorImageView(binding.currentAccount.accountMenu);
|
||||||
|
|
||||||
|
|
||||||
if (user.getBaseUrl() != null &&
|
if (user.getBaseUrl() != null &&
|
||||||
@ -213,15 +213,15 @@ public class ChooseAccountDialogFragment extends DialogFragment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void themeViews() {
|
private void themeViews() {
|
||||||
viewThemeUtils.themeDialog(binding.getRoot());
|
viewThemeUtils.platform.themeDialog(binding.getRoot());
|
||||||
viewThemeUtils.themeDialogDivider(binding.divider);
|
viewThemeUtils.platform.themeDialogDivider(binding.divider);
|
||||||
|
|
||||||
viewThemeUtils.colorMaterialTextButton(binding.setStatus);
|
viewThemeUtils.material.colorMaterialTextButton(binding.setStatus);
|
||||||
viewThemeUtils.colorDialogMenuText(binding.setStatus);
|
viewThemeUtils.dialog.colorDialogMenuText(binding.setStatus);
|
||||||
viewThemeUtils.colorMaterialTextButton(binding.addAccount);
|
viewThemeUtils.material.colorMaterialTextButton(binding.addAccount);
|
||||||
viewThemeUtils.colorDialogMenuText(binding.addAccount);
|
viewThemeUtils.dialog.colorDialogMenuText(binding.addAccount);
|
||||||
viewThemeUtils.colorMaterialTextButton(binding.manageSettings);
|
viewThemeUtils.material.colorMaterialTextButton(binding.manageSettings);
|
||||||
viewThemeUtils.colorDialogMenuText(binding.manageSettings);
|
viewThemeUtils.dialog.colorDialogMenuText(binding.manageSettings);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loadCurrentStatus(User user) {
|
private void loadCurrentStatus(User user) {
|
||||||
|
@ -59,7 +59,7 @@ class ContactsBottomDialog(
|
|||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
|
window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
|
||||||
|
|
||||||
viewThemeUtils.themeDialog(binding.root)
|
viewThemeUtils.platform.themeDialog(binding.root)
|
||||||
executeEntryMenuController(bundle)
|
executeEntryMenuController(bundle)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -89,7 +89,7 @@ class ConversationsListBottomDialog(
|
|||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
|
window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
|
||||||
|
|
||||||
viewThemeUtils.themeDialog(binding.root)
|
viewThemeUtils.platform.themeDialog(binding.root)
|
||||||
initHeaderDescription()
|
initHeaderDescription()
|
||||||
initItemsVisibility()
|
initItemsVisibility()
|
||||||
initClickListeners()
|
initClickListeners()
|
||||||
|
@ -83,7 +83,7 @@ class MessageActionsDialog(
|
|||||||
setContentView(dialogMessageActionsBinding.root)
|
setContentView(dialogMessageActionsBinding.root)
|
||||||
window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
|
window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
|
||||||
|
|
||||||
viewThemeUtils.themeDialog(dialogMessageActionsBinding.root)
|
viewThemeUtils.platform.themeDialog(dialogMessageActionsBinding.root)
|
||||||
initEmojiBar(hasChatPermission)
|
initEmojiBar(hasChatPermission)
|
||||||
initMenuItemCopy(!message.isDeleted)
|
initMenuItemCopy(!message.isDeleted)
|
||||||
initMenuReplyToMessage(message.replyable && hasChatPermission)
|
initMenuReplyToMessage(message.replyable && hasChatPermission)
|
||||||
@ -225,7 +225,7 @@ class MessageActionsDialog(
|
|||||||
|
|
||||||
private fun checkAndSetEmojiSelfReaction(emoji: EmojiTextView) {
|
private fun checkAndSetEmojiSelfReaction(emoji: EmojiTextView) {
|
||||||
if (emoji.text?.toString() != null && message.reactionsSelf?.contains(emoji.text?.toString()) == true) {
|
if (emoji.text?.toString() != null && message.reactionsSelf?.contains(emoji.text?.toString()) == true) {
|
||||||
viewThemeUtils.setCheckedBackground(emoji)
|
viewThemeUtils.talk.setCheckedBackground(emoji)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,7 +59,7 @@ class ScopeDialog(
|
|||||||
|
|
||||||
window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
|
window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
|
||||||
|
|
||||||
viewThemeUtils.themeDialog(dialogScopeBinding.root)
|
viewThemeUtils.platform.themeDialog(dialogScopeBinding.root)
|
||||||
|
|
||||||
if (field == ProfileController.Field.DISPLAYNAME || field == ProfileController.Field.EMAIL) {
|
if (field == ProfileController.Field.DISPLAYNAME || field == ProfileController.Field.EMAIL) {
|
||||||
dialogScopeBinding.scopePrivate.visibility = View.GONE
|
dialogScopeBinding.scopePrivate.visibility = View.GONE
|
||||||
|
@ -167,7 +167,7 @@ class SetStatusDialogFragment :
|
|||||||
binding = DialogSetStatusBinding.inflate(LayoutInflater.from(context))
|
binding = DialogSetStatusBinding.inflate(LayoutInflater.from(context))
|
||||||
|
|
||||||
val dialogBuilder = MaterialAlertDialogBuilder(binding.root.context).setView(binding.root)
|
val dialogBuilder = MaterialAlertDialogBuilder(binding.root.context).setView(binding.root)
|
||||||
viewThemeUtils.colorMaterialAlertDialogBackground(binding.root.context, dialogBuilder)
|
viewThemeUtils.dialog.colorMaterialAlertDialogBackground(binding.root.context, dialogBuilder)
|
||||||
|
|
||||||
return dialogBuilder.create()
|
return dialogBuilder.create()
|
||||||
}
|
}
|
||||||
@ -242,12 +242,12 @@ class SetStatusDialogFragment :
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
viewThemeUtils.themeDialog(binding.root)
|
viewThemeUtils.platform.themeDialog(binding.root)
|
||||||
|
|
||||||
viewThemeUtils.colorMaterialButtonText(binding.clearStatus)
|
viewThemeUtils.material.colorMaterialButtonText(binding.clearStatus)
|
||||||
viewThemeUtils.colorMaterialButtonPrimaryFilled(binding.setStatus)
|
viewThemeUtils.material.colorMaterialButtonPrimaryFilled(binding.setStatus)
|
||||||
|
|
||||||
viewThemeUtils.colorTextInputLayout(binding.customStatusInputContainer)
|
viewThemeUtils.material.colorTextInputLayout(binding.customStatusInputContainer)
|
||||||
|
|
||||||
binding.customStatusInput.doAfterTextChanged { text ->
|
binding.customStatusInput.doAfterTextChanged { text ->
|
||||||
binding.setStatus.isEnabled = !text.isNullOrEmpty()
|
binding.setStatus.isEnabled = !text.isNullOrEmpty()
|
||||||
@ -418,8 +418,8 @@ class SetStatusDialogFragment :
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
viewThemeUtils.colorCardViewBackground(views.first)
|
viewThemeUtils.material.colorCardViewBackground(views.first)
|
||||||
viewThemeUtils.colorPrimaryTextViewElement(views.second)
|
viewThemeUtils.platform.colorPrimaryTextViewElement(views.second)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun clearTopStatus() {
|
private fun clearTopStatus() {
|
||||||
|
@ -86,7 +86,7 @@ class ShowReactionsDialog(
|
|||||||
binding = DialogMessageReactionsBinding.inflate(layoutInflater)
|
binding = DialogMessageReactionsBinding.inflate(layoutInflater)
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
|
window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
|
||||||
viewThemeUtils.themeDialog(binding.root)
|
viewThemeUtils.platform.themeDialog(binding.root)
|
||||||
adapter = ReactionsAdapter(this, user)
|
adapter = ReactionsAdapter(this, user)
|
||||||
binding.reactionsList.adapter = adapter
|
binding.reactionsList.adapter = adapter
|
||||||
binding.reactionsList.layoutManager = LinearLayoutManager(context)
|
binding.reactionsList.layoutManager = LinearLayoutManager(context)
|
||||||
@ -144,7 +144,7 @@ class ShowReactionsDialog(
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
viewThemeUtils.themeTabLayoutOnSurface(binding.emojiReactionsTabs)
|
viewThemeUtils.material.themeTabLayoutOnSurface(binding.emojiReactionsTabs)
|
||||||
|
|
||||||
updateParticipantsForEmoji(chatMessage, tagAll)
|
updateParticipantsForEmoji(chatMessage, tagAll)
|
||||||
}
|
}
|
||||||
|
@ -120,8 +120,8 @@ public class SortingOrderDialogFragment extends DialogFragment implements View.O
|
|||||||
* find all relevant UI elements and set their values.
|
* find all relevant UI elements and set their values.
|
||||||
*/
|
*/
|
||||||
private void setupDialogElements() {
|
private void setupDialogElements() {
|
||||||
viewThemeUtils.themeDialog(binding.root);
|
viewThemeUtils.platform.themeDialog(binding.root);
|
||||||
viewThemeUtils.colorMaterialButtonPrimaryBorderless(binding.cancel);
|
viewThemeUtils.material.colorMaterialButtonPrimaryBorderless(binding.cancel);
|
||||||
|
|
||||||
taggedViews = new View[12];
|
taggedViews = new View[12];
|
||||||
taggedViews[0] = binding.sortByNameAscending;
|
taggedViews[0] = binding.sortByNameAscending;
|
||||||
@ -163,10 +163,10 @@ public class SortingOrderDialogFragment extends DialogFragment implements View.O
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (view instanceof MaterialButton) {
|
if (view instanceof MaterialButton) {
|
||||||
viewThemeUtils.colorMaterialButtonText((MaterialButton) view);
|
viewThemeUtils.material.colorMaterialButtonText((MaterialButton) view);
|
||||||
}
|
}
|
||||||
if (view instanceof TextView) {
|
if (view instanceof TextView) {
|
||||||
viewThemeUtils.colorPrimaryTextViewElement((TextView) view);
|
viewThemeUtils.platform.colorPrimaryTextViewElement((TextView) view);
|
||||||
((TextView) view).setTypeface(Typeface.DEFAULT_BOLD);
|
((TextView) view).setTypeface(Typeface.DEFAULT_BOLD);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,240 @@
|
|||||||
|
/*
|
||||||
|
* Nextcloud Talk application
|
||||||
|
*
|
||||||
|
* @author Álvaro Brey
|
||||||
|
* Copyright (C) 2022 Álvaro Brey
|
||||||
|
* Copyright (C) 2022 Nextcloud GmbH
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.nextcloud.talk.ui.theme
|
||||||
|
|
||||||
|
import android.annotation.TargetApi
|
||||||
|
import android.content.Context
|
||||||
|
import android.content.res.ColorStateList
|
||||||
|
import android.graphics.drawable.Drawable
|
||||||
|
import android.graphics.drawable.LayerDrawable
|
||||||
|
import android.os.Build
|
||||||
|
import android.view.View
|
||||||
|
import android.view.ViewGroup
|
||||||
|
import android.widget.LinearLayout
|
||||||
|
import android.widget.TextView
|
||||||
|
import androidx.annotation.ColorInt
|
||||||
|
import androidx.annotation.DrawableRes
|
||||||
|
import androidx.appcompat.content.res.AppCompatResources
|
||||||
|
import androidx.appcompat.widget.SearchView
|
||||||
|
import androidx.appcompat.widget.SwitchCompat
|
||||||
|
import androidx.core.content.ContextCompat
|
||||||
|
import androidx.core.content.res.ResourcesCompat
|
||||||
|
import androidx.core.graphics.ColorUtils
|
||||||
|
import androidx.core.graphics.drawable.DrawableCompat
|
||||||
|
import androidx.core.view.ViewCompat
|
||||||
|
import androidx.core.view.children
|
||||||
|
import com.google.android.material.card.MaterialCardView
|
||||||
|
import com.nextcloud.android.common.ui.theme.MaterialSchemes
|
||||||
|
import com.nextcloud.android.common.ui.theme.ViewThemeUtilsBase
|
||||||
|
import com.nextcloud.android.common.ui.theme.utils.AndroidXViewThemeUtils
|
||||||
|
import com.nextcloud.talk.R
|
||||||
|
import com.nextcloud.talk.utils.DisplayUtils
|
||||||
|
import com.nextcloud.talk.utils.DrawableUtils
|
||||||
|
import com.vanniktech.emoji.EmojiTextView
|
||||||
|
import com.yarolegovich.mp.MaterialPreferenceCategory
|
||||||
|
import com.yarolegovich.mp.MaterialSwitchPreference
|
||||||
|
import javax.inject.Inject
|
||||||
|
import kotlin.math.roundToInt
|
||||||
|
|
||||||
|
/**
|
||||||
|
* View theme utils specific for the Talk app.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@Suppress("TooManyFunctions")
|
||||||
|
class TalkSpecificViewThemeUtils @Inject constructor(
|
||||||
|
schemes: MaterialSchemes,
|
||||||
|
private val appcompat: AndroidXViewThemeUtils
|
||||||
|
) :
|
||||||
|
ViewThemeUtilsBase(schemes) {
|
||||||
|
fun themeIncomingMessageBubble(bubble: ViewGroup, grouped: Boolean, deleted: Boolean) {
|
||||||
|
val resources = bubble.resources
|
||||||
|
|
||||||
|
var bubbleResource = R.drawable.shape_incoming_message
|
||||||
|
|
||||||
|
if (grouped) {
|
||||||
|
bubbleResource = R.drawable.shape_grouped_incoming_message
|
||||||
|
}
|
||||||
|
|
||||||
|
val bgBubbleColor = if (deleted) {
|
||||||
|
resources.getColor(R.color.bg_message_list_incoming_bubble_deleted)
|
||||||
|
} else {
|
||||||
|
resources.getColor(R.color.bg_message_list_incoming_bubble)
|
||||||
|
}
|
||||||
|
val bubbleDrawable = DisplayUtils.getMessageSelector(
|
||||||
|
bgBubbleColor,
|
||||||
|
resources.getColor(R.color.transparent),
|
||||||
|
bgBubbleColor,
|
||||||
|
bubbleResource
|
||||||
|
)
|
||||||
|
ViewCompat.setBackground(bubble, bubbleDrawable)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun themeOutgoingMessageBubble(bubble: ViewGroup, grouped: Boolean, deleted: Boolean) {
|
||||||
|
withScheme(bubble) { scheme ->
|
||||||
|
val bgBubbleColor = if (deleted) {
|
||||||
|
ColorUtils.setAlphaComponent(scheme.surfaceVariant, HALF_ALPHA_INT)
|
||||||
|
} else {
|
||||||
|
scheme.surfaceVariant
|
||||||
|
}
|
||||||
|
|
||||||
|
val layout = if (grouped) {
|
||||||
|
R.drawable.shape_grouped_outcoming_message
|
||||||
|
} else {
|
||||||
|
R.drawable.shape_outcoming_message
|
||||||
|
}
|
||||||
|
val bubbleDrawable = DisplayUtils.getMessageSelector(
|
||||||
|
bgBubbleColor,
|
||||||
|
ResourcesCompat.getColor(bubble.resources, R.color.transparent, null),
|
||||||
|
bgBubbleColor,
|
||||||
|
layout
|
||||||
|
)
|
||||||
|
ViewCompat.setBackground(bubble, bubbleDrawable)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun colorOutgoingQuoteText(textView: TextView) {
|
||||||
|
withScheme(textView) { scheme ->
|
||||||
|
textView.setTextColor(scheme.onSurfaceVariant)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun colorOutgoingQuoteAuthorText(textView: TextView) {
|
||||||
|
withScheme(textView) { scheme ->
|
||||||
|
ColorUtils.setAlphaComponent(scheme.onSurfaceVariant, ALPHA_80_INT)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun colorOutgoingQuoteBackground(view: View) {
|
||||||
|
withScheme(view) { scheme ->
|
||||||
|
view.setBackgroundColor(scheme.onSurfaceVariant)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun colorContactChatItemName(contactName: androidx.emoji.widget.EmojiTextView) {
|
||||||
|
withScheme(contactName) { scheme ->
|
||||||
|
contactName.setTextColor(scheme.onPrimaryContainer)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun colorContactChatItemBackground(card: MaterialCardView) {
|
||||||
|
withScheme(card) { scheme ->
|
||||||
|
card.setCardBackgroundColor(scheme.primaryContainer)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun colorPreferenceCategory(category: MaterialPreferenceCategory) {
|
||||||
|
withScheme(category) { scheme ->
|
||||||
|
category.setTitleColor(scheme.primary)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun colorSwitchPreference(preference: MaterialSwitchPreference) {
|
||||||
|
val children = preference.children
|
||||||
|
val switch = children.find { it is SwitchCompat }
|
||||||
|
if (switch != null) {
|
||||||
|
val switchCompat = (switch as SwitchCompat)
|
||||||
|
appcompat.colorSwitchCompat(switchCompat)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setCheckedBackground(emoji: EmojiTextView) {
|
||||||
|
withScheme(emoji) { scheme ->
|
||||||
|
val drawable = AppCompatResources
|
||||||
|
.getDrawable(emoji.context, R.drawable.reaction_self_bottom_sheet_background)!!
|
||||||
|
.mutate()
|
||||||
|
DrawableCompat.setTintList(
|
||||||
|
drawable,
|
||||||
|
ColorStateList.valueOf(scheme.primary)
|
||||||
|
)
|
||||||
|
emoji.background = drawable
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setCheckedBackground(linearLayout: LinearLayout, @ColorInt backgroundColor: Int) {
|
||||||
|
withScheme(linearLayout) { scheme ->
|
||||||
|
val drawable = AppCompatResources
|
||||||
|
.getDrawable(linearLayout.context, R.drawable.reaction_self_background)!!
|
||||||
|
.mutate()
|
||||||
|
DrawableCompat.setTintList(
|
||||||
|
drawable,
|
||||||
|
ColorStateList.valueOf(backgroundColor)
|
||||||
|
)
|
||||||
|
linearLayout.background = drawable
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getPlaceholderImage(context: Context, mimetype: String?): Drawable? {
|
||||||
|
val drawableResourceId = DrawableUtils.getDrawableResourceIdForMimeType(mimetype)
|
||||||
|
val drawable = AppCompatResources.getDrawable(
|
||||||
|
context,
|
||||||
|
drawableResourceId
|
||||||
|
)
|
||||||
|
if (drawable != null && THEMEABLE_PLACEHOLDER_IDS.contains(drawableResourceId)) {
|
||||||
|
colorDrawable(context, drawable)
|
||||||
|
}
|
||||||
|
return drawable
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun colorDrawable(context: Context, drawable: Drawable) {
|
||||||
|
val scheme = getScheme(context)
|
||||||
|
drawable.setTint(scheme.primary)
|
||||||
|
}
|
||||||
|
|
||||||
|
@TargetApi(Build.VERSION_CODES.O)
|
||||||
|
fun themePlaceholderAvatar(avatar: View, @DrawableRes foreground: Int): Drawable? {
|
||||||
|
var drawable: LayerDrawable? = null
|
||||||
|
withScheme(avatar) { scheme ->
|
||||||
|
val layers = arrayOfNulls<Drawable>(2)
|
||||||
|
layers[0] = ContextCompat.getDrawable(avatar.context, R.drawable.ic_avatar_background)
|
||||||
|
layers[0]?.setTint(scheme.surfaceVariant)
|
||||||
|
layers[1] = ContextCompat.getDrawable(avatar.context, foreground)
|
||||||
|
layers[1]?.setTint(scheme.onSurfaceVariant)
|
||||||
|
drawable = LayerDrawable(layers)
|
||||||
|
}
|
||||||
|
|
||||||
|
return drawable
|
||||||
|
}
|
||||||
|
|
||||||
|
fun themeSearchView(searchView: SearchView) {
|
||||||
|
withScheme(searchView) { scheme ->
|
||||||
|
// hacky as no default way is provided
|
||||||
|
val editText = searchView.findViewById<SearchView.SearchAutoComplete>(R.id.search_src_text)
|
||||||
|
val searchPlate = searchView.findViewById<LinearLayout>(R.id.search_plate)
|
||||||
|
editText.setHintTextColor(scheme.onSurfaceVariant)
|
||||||
|
editText.setTextColor(scheme.onSurface)
|
||||||
|
editText.setBackgroundColor(scheme.surface)
|
||||||
|
searchPlate.setBackgroundColor(scheme.surface)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
private val THEMEABLE_PLACEHOLDER_IDS = listOf(
|
||||||
|
R.drawable.ic_mimetype_package_x_generic,
|
||||||
|
R.drawable.ic_mimetype_folder
|
||||||
|
)
|
||||||
|
|
||||||
|
private val ALPHA_80_INT: Int = (255 * 0.8).roundToInt()
|
||||||
|
|
||||||
|
private const val HALF_ALPHA_INT: Int = 255 / 2
|
||||||
|
private const val SEARCH_TEXT_SIZE: Float = 16f
|
||||||
|
}
|
||||||
|
}
|
@ -21,825 +21,25 @@
|
|||||||
|
|
||||||
package com.nextcloud.talk.ui.theme
|
package com.nextcloud.talk.ui.theme
|
||||||
|
|
||||||
import android.annotation.TargetApi
|
|
||||||
import android.app.Activity
|
|
||||||
import android.content.Context
|
|
||||||
import android.content.res.ColorStateList
|
|
||||||
import android.graphics.Color
|
|
||||||
import android.graphics.PorterDuff
|
|
||||||
import android.graphics.drawable.Drawable
|
|
||||||
import android.graphics.drawable.LayerDrawable
|
|
||||||
import android.os.Build
|
|
||||||
import android.text.Spannable
|
|
||||||
import android.text.SpannableString
|
|
||||||
import android.view.MenuItem
|
|
||||||
import android.view.View
|
|
||||||
import android.view.ViewGroup
|
|
||||||
import android.widget.Button
|
|
||||||
import android.widget.CheckBox
|
|
||||||
import android.widget.EditText
|
|
||||||
import android.widget.ImageButton
|
|
||||||
import android.widget.ImageView
|
|
||||||
import android.widget.LinearLayout
|
|
||||||
import android.widget.ProgressBar
|
|
||||||
import android.widget.RadioButton
|
|
||||||
import android.widget.SeekBar
|
|
||||||
import android.widget.TextView
|
|
||||||
import androidx.annotation.ColorInt
|
|
||||||
import androidx.annotation.DrawableRes
|
|
||||||
import androidx.appcompat.content.res.AppCompatResources
|
|
||||||
import androidx.appcompat.widget.SearchView
|
|
||||||
import androidx.appcompat.widget.SearchView.SearchAutoComplete
|
|
||||||
import androidx.appcompat.widget.SwitchCompat
|
|
||||||
import androidx.core.content.ContextCompat
|
|
||||||
import androidx.core.content.res.ResourcesCompat
|
|
||||||
import androidx.core.graphics.ColorUtils
|
|
||||||
import androidx.core.graphics.drawable.DrawableCompat
|
|
||||||
import androidx.core.view.ViewCompat
|
|
||||||
import androidx.core.view.children
|
|
||||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
|
||||||
import com.google.android.material.appbar.MaterialToolbar
|
|
||||||
import com.google.android.material.button.MaterialButton
|
|
||||||
import com.google.android.material.card.MaterialCardView
|
|
||||||
import com.google.android.material.chip.Chip
|
|
||||||
import com.google.android.material.chip.ChipDrawable
|
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
|
||||||
import com.google.android.material.floatingactionbutton.FloatingActionButton
|
|
||||||
import com.google.android.material.progressindicator.LinearProgressIndicator
|
|
||||||
import com.google.android.material.shape.MaterialShapeDrawable
|
|
||||||
import com.google.android.material.tabs.TabLayout
|
|
||||||
import com.google.android.material.textfield.TextInputLayout
|
|
||||||
import com.google.android.material.textview.MaterialTextView
|
|
||||||
import com.nextcloud.android.common.ui.theme.MaterialSchemes
|
import com.nextcloud.android.common.ui.theme.MaterialSchemes
|
||||||
import com.nextcloud.talk.R
|
import com.nextcloud.android.common.ui.theme.ViewThemeUtilsBase
|
||||||
import com.nextcloud.talk.utils.DisplayUtils
|
import com.nextcloud.android.common.ui.theme.utils.AndroidViewThemeUtils
|
||||||
import com.nextcloud.talk.utils.DrawableUtils
|
import com.nextcloud.android.common.ui.theme.utils.AndroidXViewThemeUtils
|
||||||
import com.nextcloud.android.common.ui.color.ColorUtil
|
import com.nextcloud.android.common.ui.theme.utils.DialogViewThemeUtils
|
||||||
import com.nextcloud.talk.utils.ui.PlatformThemeUtil.isDarkMode
|
import com.nextcloud.android.common.ui.theme.utils.MaterialViewThemeUtils
|
||||||
import com.vanniktech.emoji.EmojiTextView
|
|
||||||
import com.yarolegovich.mp.MaterialPreferenceCategory
|
|
||||||
import com.yarolegovich.mp.MaterialSwitchPreference
|
|
||||||
import eu.davidea.flexibleadapter.utils.FlexibleUtils
|
|
||||||
import scheme.Scheme
|
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import kotlin.math.roundToInt
|
|
||||||
|
|
||||||
@Suppress("TooManyFunctions")
|
@Suppress("TooManyFunctions")
|
||||||
class ViewThemeUtils @Inject constructor(private val schemes: MaterialSchemes, private val colorUtil: ColorUtil) {
|
class ViewThemeUtils @Inject constructor(
|
||||||
|
schemes: MaterialSchemes,
|
||||||
/**
|
@JvmField
|
||||||
* Scheme for painting elements
|
val platform: AndroidViewThemeUtils,
|
||||||
*/
|
@JvmField
|
||||||
fun getScheme(context: Context): Scheme = when {
|
val material: MaterialViewThemeUtils,
|
||||||
isDarkMode(context) -> schemes.darkScheme
|
@JvmField
|
||||||
else -> schemes.lightScheme
|
val androidx: AndroidXViewThemeUtils,
|
||||||
}
|
@JvmField
|
||||||
|
val talk: TalkSpecificViewThemeUtils,
|
||||||
private fun getSchemeDark(): Scheme = schemes.darkScheme
|
@JvmField
|
||||||
|
val dialog: DialogViewThemeUtils
|
||||||
private fun withScheme(view: View, block: (Scheme) -> Unit) {
|
) : ViewThemeUtilsBase(schemes)
|
||||||
block(getScheme(view.context))
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun withScheme(context: Context, block: (Scheme) -> Unit) {
|
|
||||||
block(getScheme(context))
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun withSchemeDark(block: (Scheme) -> Unit) {
|
|
||||||
block(getSchemeDark())
|
|
||||||
}
|
|
||||||
|
|
||||||
fun themeToolbar(toolbar: MaterialToolbar) {
|
|
||||||
withScheme(toolbar) { scheme ->
|
|
||||||
toolbar.setBackgroundColor(scheme.surface)
|
|
||||||
toolbar.setNavigationIconTint(scheme.onSurface)
|
|
||||||
toolbar.setTitleTextColor(scheme.onSurface)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun colorViewBackground(view: View) {
|
|
||||||
withScheme(view) { scheme ->
|
|
||||||
view.setBackgroundColor(scheme.surface)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun colorToolbarMenuIcon(context: Context, item: MenuItem) {
|
|
||||||
withScheme(context) { scheme ->
|
|
||||||
item.icon.setColorFilter(scheme.onSurface, PorterDuff.Mode.SRC_ATOP)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun colorToolbarOverflowIcon(toolbar: MaterialToolbar) {
|
|
||||||
withScheme(toolbar) { scheme ->
|
|
||||||
toolbar.overflowIcon?.setColorFilter(scheme.onSurface, PorterDuff.Mode.SRC_ATOP)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun themeSearchView(searchView: SearchView) {
|
|
||||||
withScheme(searchView) { scheme ->
|
|
||||||
// hacky as no default way is provided
|
|
||||||
val editText = searchView.findViewById<SearchAutoComplete>(R.id.search_src_text)
|
|
||||||
val searchPlate = searchView.findViewById<LinearLayout>(R.id.search_plate)
|
|
||||||
editText.textSize = SEARCH_TEXT_SIZE
|
|
||||||
editText.setHintTextColor(scheme.onSurfaceVariant)
|
|
||||||
editText.setTextColor(scheme.onSurface)
|
|
||||||
editText.setBackgroundColor(scheme.surface)
|
|
||||||
searchPlate.setBackgroundColor(scheme.surface)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun themeSearchBarText(searchText: MaterialTextView) {
|
|
||||||
withScheme(searchText) { scheme ->
|
|
||||||
searchText.setHintTextColor(scheme.onSurfaceVariant)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun themeStatusBar(activity: Activity, view: View) {
|
|
||||||
withScheme(view) { scheme ->
|
|
||||||
DisplayUtils.applyColorToStatusBar(activity, scheme.surface)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun resetStatusBar(activity: Activity, view: View) {
|
|
||||||
DisplayUtils.applyColorToStatusBar(
|
|
||||||
activity,
|
|
||||||
ResourcesCompat.getColor(
|
|
||||||
activity.resources,
|
|
||||||
R.color.bg_default,
|
|
||||||
activity.theme
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun themeDialog(view: View) {
|
|
||||||
withScheme(view) { scheme ->
|
|
||||||
view.setBackgroundColor(scheme.surface)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun themeDialogDark(view: View) {
|
|
||||||
withSchemeDark { scheme ->
|
|
||||||
view.setBackgroundColor(scheme.surface)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun themeDialogDivider(view: View) {
|
|
||||||
withScheme(view) { scheme ->
|
|
||||||
view.setBackgroundColor(scheme.surfaceVariant)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun themeFAB(fab: FloatingActionButton) {
|
|
||||||
withScheme(fab) { scheme ->
|
|
||||||
fab.backgroundTintList = ColorStateList.valueOf(scheme.primaryContainer)
|
|
||||||
fab.imageTintList = ColorStateList.valueOf(scheme.onPrimaryContainer)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun themeCardView(cardView: MaterialCardView) {
|
|
||||||
withScheme(cardView) { scheme ->
|
|
||||||
cardView.backgroundTintList = ColorStateList.valueOf(scheme.surface)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun themeHorizontalSeekBar(seekBar: SeekBar) {
|
|
||||||
withScheme(seekBar) { scheme ->
|
|
||||||
themeHorizontalProgressBar(seekBar, scheme.primary)
|
|
||||||
seekBar.thumb.setColorFilter(scheme.primary, PorterDuff.Mode.SRC_IN)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun themeHorizontalProgressBar(progressBar: ProgressBar?, @ColorInt color: Int) {
|
|
||||||
if (progressBar != null) {
|
|
||||||
progressBar.indeterminateDrawable.setColorFilter(color, PorterDuff.Mode.SRC_IN)
|
|
||||||
progressBar.progressDrawable.setColorFilter(color, PorterDuff.Mode.SRC_IN)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun colorPrimaryTextViewElement(textView: TextView) {
|
|
||||||
withScheme(textView) { scheme ->
|
|
||||||
textView.setTextColor(scheme.primary)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun colorPrimaryTextViewElementDarkMode(textView: TextView) {
|
|
||||||
withSchemeDark { scheme ->
|
|
||||||
textView.setTextColor(scheme.primary)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun colorPrimaryView(view: View) {
|
|
||||||
withScheme(view) { scheme ->
|
|
||||||
view.setBackgroundColor(scheme.primary)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Colors the background as element color and the foreground as text color.
|
|
||||||
*/
|
|
||||||
fun colorImageViewButton(imageView: ImageView) {
|
|
||||||
withScheme(imageView) { scheme ->
|
|
||||||
imageView.imageTintList = ColorStateList.valueOf(scheme.onPrimaryContainer)
|
|
||||||
imageView.backgroundTintList = ColorStateList.valueOf(scheme.primaryContainer)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun themeImageButton(imageButton: ImageButton) {
|
|
||||||
withScheme(imageButton) { scheme ->
|
|
||||||
imageButton.imageTintList = ColorStateList(
|
|
||||||
arrayOf(
|
|
||||||
intArrayOf(android.R.attr.state_selected),
|
|
||||||
intArrayOf(-android.R.attr.state_selected),
|
|
||||||
intArrayOf(android.R.attr.state_enabled),
|
|
||||||
intArrayOf(-android.R.attr.state_enabled)
|
|
||||||
),
|
|
||||||
intArrayOf(
|
|
||||||
scheme.primary,
|
|
||||||
scheme.onSurfaceVariant,
|
|
||||||
scheme.onSurfaceVariant,
|
|
||||||
colorUtil.adjustOpacity(scheme.onSurface, ON_SURFACE_OPACITY_BUTTON_DISABLED)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tints the image with element color
|
|
||||||
*/
|
|
||||||
fun colorImageView(imageView: ImageView) {
|
|
||||||
withScheme(imageView) { scheme ->
|
|
||||||
imageView.imageTintList = ColorStateList.valueOf(scheme.primary)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun colorOutgoingQuoteText(textView: TextView) {
|
|
||||||
withScheme(textView) { scheme ->
|
|
||||||
textView.setTextColor(scheme.onSurfaceVariant)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun colorOutgoingQuoteAuthorText(textView: TextView) {
|
|
||||||
withScheme(textView) { scheme ->
|
|
||||||
ColorUtils.setAlphaComponent(scheme.onSurfaceVariant, ALPHA_80_INT)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun colorOutgoingQuoteBackground(view: View) {
|
|
||||||
withScheme(view) { scheme ->
|
|
||||||
view.setBackgroundColor(scheme.onSurfaceVariant)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun colorMaterialTextButton(button: MaterialButton) {
|
|
||||||
withScheme(button) { scheme ->
|
|
||||||
button.rippleColor = ColorStateList(
|
|
||||||
arrayOf(
|
|
||||||
intArrayOf(android.R.attr.state_pressed)
|
|
||||||
),
|
|
||||||
intArrayOf(
|
|
||||||
colorUtil.adjustOpacity(scheme.primary, SURFACE_OPACITY_BUTTON_DISABLED)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun colorMaterialButtonText(button: MaterialButton) {
|
|
||||||
withScheme(button) { scheme ->
|
|
||||||
val disabledColor = ContextCompat.getColor(button.context, R.color.disabled_text)
|
|
||||||
val colorStateList = ColorStateList(
|
|
||||||
arrayOf(
|
|
||||||
intArrayOf(android.R.attr.state_enabled),
|
|
||||||
intArrayOf(-android.R.attr.state_enabled)
|
|
||||||
),
|
|
||||||
intArrayOf(scheme.primary, disabledColor)
|
|
||||||
)
|
|
||||||
button.setTextColor(colorStateList)
|
|
||||||
button.iconTint = colorStateList
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun colorTextButtons(vararg buttons: Button) {
|
|
||||||
withScheme(buttons[0]) { scheme ->
|
|
||||||
for (button in buttons) {
|
|
||||||
button.setTextColor(
|
|
||||||
ColorStateList(
|
|
||||||
arrayOf(
|
|
||||||
intArrayOf(android.R.attr.state_enabled),
|
|
||||||
intArrayOf(-android.R.attr.state_enabled)
|
|
||||||
),
|
|
||||||
intArrayOf(
|
|
||||||
scheme.primary,
|
|
||||||
colorUtil.adjustOpacity(scheme.onSurface, ON_SURFACE_OPACITY_BUTTON_DISABLED)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun colorMaterialButtonPrimaryFilled(button: MaterialButton) {
|
|
||||||
withScheme(button) { scheme ->
|
|
||||||
button.backgroundTintList =
|
|
||||||
ColorStateList(
|
|
||||||
arrayOf(
|
|
||||||
intArrayOf(android.R.attr.state_enabled),
|
|
||||||
intArrayOf(-android.R.attr.state_enabled)
|
|
||||||
),
|
|
||||||
intArrayOf(
|
|
||||||
scheme.primary,
|
|
||||||
colorUtil.adjustOpacity(scheme.onSurface, SURFACE_OPACITY_BUTTON_DISABLED)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
button.setTextColor(
|
|
||||||
ColorStateList(
|
|
||||||
arrayOf(
|
|
||||||
intArrayOf(android.R.attr.state_enabled),
|
|
||||||
intArrayOf(-android.R.attr.state_enabled)
|
|
||||||
),
|
|
||||||
intArrayOf(
|
|
||||||
scheme.onPrimary,
|
|
||||||
colorUtil.adjustOpacity(scheme.onSurface, ON_SURFACE_OPACITY_BUTTON_DISABLED)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
button.iconTint = ColorStateList(
|
|
||||||
arrayOf(
|
|
||||||
intArrayOf(android.R.attr.state_enabled),
|
|
||||||
intArrayOf(-android.R.attr.state_enabled)
|
|
||||||
),
|
|
||||||
intArrayOf(
|
|
||||||
scheme.onPrimary,
|
|
||||||
colorUtil.adjustOpacity(scheme.onSurface, ON_SURFACE_OPACITY_BUTTON_DISABLED)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun colorMaterialButtonPrimaryOutlined(button: MaterialButton) {
|
|
||||||
withScheme(button) { scheme ->
|
|
||||||
button.strokeColor = ColorStateList.valueOf(scheme.outline)
|
|
||||||
button.setTextColor(
|
|
||||||
ColorStateList(
|
|
||||||
arrayOf(
|
|
||||||
intArrayOf(android.R.attr.state_enabled),
|
|
||||||
intArrayOf(-android.R.attr.state_enabled)
|
|
||||||
),
|
|
||||||
intArrayOf(
|
|
||||||
scheme.primary,
|
|
||||||
colorUtil.adjustOpacity(scheme.onSurface, ON_SURFACE_OPACITY_BUTTON_DISABLED)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
button.iconTint = ColorStateList(
|
|
||||||
arrayOf(
|
|
||||||
intArrayOf(android.R.attr.state_enabled),
|
|
||||||
intArrayOf(-android.R.attr.state_enabled)
|
|
||||||
),
|
|
||||||
intArrayOf(
|
|
||||||
scheme.primary,
|
|
||||||
colorUtil.adjustOpacity(scheme.onSurface, ON_SURFACE_OPACITY_BUTTON_DISABLED)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun colorMaterialButtonPrimaryBorderless(button: MaterialButton) {
|
|
||||||
withScheme(button) { scheme ->
|
|
||||||
button.setTextColor(
|
|
||||||
ColorStateList(
|
|
||||||
arrayOf(
|
|
||||||
intArrayOf(android.R.attr.state_enabled),
|
|
||||||
intArrayOf(-android.R.attr.state_enabled)
|
|
||||||
),
|
|
||||||
intArrayOf(
|
|
||||||
scheme.primary,
|
|
||||||
colorUtil.adjustOpacity(scheme.onSurface, ON_SURFACE_OPACITY_BUTTON_DISABLED)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
button.iconTint = ColorStateList(
|
|
||||||
arrayOf(
|
|
||||||
intArrayOf(android.R.attr.state_enabled),
|
|
||||||
intArrayOf(-android.R.attr.state_enabled)
|
|
||||||
),
|
|
||||||
intArrayOf(
|
|
||||||
scheme.primary,
|
|
||||||
colorUtil.adjustOpacity(scheme.onSurface, ON_SURFACE_OPACITY_BUTTON_DISABLED)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun themeIncomingMessageBubble(bubble: ViewGroup, grouped: Boolean, deleted: Boolean) {
|
|
||||||
val resources = bubble.resources
|
|
||||||
|
|
||||||
var bubbleResource = R.drawable.shape_incoming_message
|
|
||||||
|
|
||||||
if (grouped) {
|
|
||||||
bubbleResource = R.drawable.shape_grouped_incoming_message
|
|
||||||
}
|
|
||||||
|
|
||||||
val bgBubbleColor = if (deleted) {
|
|
||||||
resources.getColor(R.color.bg_message_list_incoming_bubble_deleted)
|
|
||||||
} else {
|
|
||||||
resources.getColor(R.color.bg_message_list_incoming_bubble)
|
|
||||||
}
|
|
||||||
val bubbleDrawable = DisplayUtils.getMessageSelector(
|
|
||||||
bgBubbleColor,
|
|
||||||
resources.getColor(R.color.transparent),
|
|
||||||
bgBubbleColor, bubbleResource
|
|
||||||
)
|
|
||||||
ViewCompat.setBackground(bubble, bubbleDrawable)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun themeOutgoingMessageBubble(bubble: ViewGroup, grouped: Boolean, deleted: Boolean) {
|
|
||||||
withScheme(bubble) { scheme ->
|
|
||||||
val bgBubbleColor = if (deleted) {
|
|
||||||
ColorUtils.setAlphaComponent(scheme.surfaceVariant, HALF_ALPHA_INT)
|
|
||||||
} else {
|
|
||||||
scheme.surfaceVariant
|
|
||||||
}
|
|
||||||
|
|
||||||
val layout = if (grouped) {
|
|
||||||
R.drawable.shape_grouped_outcoming_message
|
|
||||||
} else {
|
|
||||||
R.drawable.shape_outcoming_message
|
|
||||||
}
|
|
||||||
val bubbleDrawable = DisplayUtils.getMessageSelector(
|
|
||||||
bgBubbleColor,
|
|
||||||
ResourcesCompat.getColor(bubble.resources, R.color.transparent, null),
|
|
||||||
bgBubbleColor,
|
|
||||||
layout
|
|
||||||
)
|
|
||||||
ViewCompat.setBackground(bubble, bubbleDrawable)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun colorCardViewBackground(card: MaterialCardView) {
|
|
||||||
withScheme(card) { scheme ->
|
|
||||||
card.setCardBackgroundColor(scheme.surfaceVariant)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun colorContactChatItemName(contactName: androidx.emoji.widget.EmojiTextView) {
|
|
||||||
withScheme(contactName) { scheme ->
|
|
||||||
contactName.setTextColor(scheme.onPrimaryContainer)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun colorContactChatItemBackground(card: MaterialCardView) {
|
|
||||||
withScheme(card) { scheme ->
|
|
||||||
card.setCardBackgroundColor(scheme.primaryContainer)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun colorCircularProgressBarOnPrimaryContainer(progressBar: ProgressBar) {
|
|
||||||
withScheme(progressBar) { scheme ->
|
|
||||||
progressBar.indeterminateDrawable.setColorFilter(scheme.onPrimaryContainer, PorterDuff.Mode.SRC_ATOP)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun colorCircularProgressBar(progressBar: ProgressBar) {
|
|
||||||
withScheme(progressBar) { scheme ->
|
|
||||||
progressBar.indeterminateDrawable.setColorFilter(scheme.primary, PorterDuff.Mode.SRC_ATOP)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun colorCircularProgressBarOnSurfaceVariant(progressBar: ProgressBar) {
|
|
||||||
withScheme(progressBar) { scheme ->
|
|
||||||
progressBar.indeterminateDrawable.setColorFilter(scheme.onSurfaceVariant, PorterDuff.Mode.SRC_ATOP)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO split this util into classes depending on framework views vs library views
|
|
||||||
fun colorPreferenceCategory(category: MaterialPreferenceCategory) {
|
|
||||||
withScheme(category) { scheme ->
|
|
||||||
category.setTitleColor(scheme.primary)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun colorSwitchPreference(preference: MaterialSwitchPreference) {
|
|
||||||
val children = preference.children
|
|
||||||
val switch = children.find { it is SwitchCompat }
|
|
||||||
if (switch != null) {
|
|
||||||
val switchCompat = (switch as SwitchCompat)
|
|
||||||
colorSwitchCompat(switchCompat)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun colorSwitchCompat(switchCompat: SwitchCompat) {
|
|
||||||
withScheme(switchCompat) { scheme ->
|
|
||||||
|
|
||||||
val context = switchCompat.context
|
|
||||||
|
|
||||||
val thumbUncheckedColor = ResourcesCompat.getColor(
|
|
||||||
context.resources,
|
|
||||||
R.color.switch_thumb_color_unchecked,
|
|
||||||
context.theme
|
|
||||||
)
|
|
||||||
val trackUncheckedColor = ResourcesCompat.getColor(
|
|
||||||
context.resources,
|
|
||||||
R.color.switch_track_color_unchecked,
|
|
||||||
context.theme
|
|
||||||
)
|
|
||||||
|
|
||||||
val trackColor = Color.argb(
|
|
||||||
SWITCH_COMPAT_TRACK_ALPHA,
|
|
||||||
Color.red(scheme.primary),
|
|
||||||
Color.green(scheme.primary),
|
|
||||||
Color.blue(scheme.primary)
|
|
||||||
)
|
|
||||||
|
|
||||||
switchCompat.thumbTintList = ColorStateList(
|
|
||||||
arrayOf(intArrayOf(android.R.attr.state_checked), intArrayOf()),
|
|
||||||
intArrayOf(scheme.primary, thumbUncheckedColor)
|
|
||||||
)
|
|
||||||
|
|
||||||
switchCompat.trackTintList = ColorStateList(
|
|
||||||
arrayOf(intArrayOf(android.R.attr.state_checked), intArrayOf()),
|
|
||||||
intArrayOf(trackColor, trackUncheckedColor)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun colorDrawable(context: Context, drawable: Drawable) {
|
|
||||||
val scheme = getScheme(context)
|
|
||||||
drawable.setTint(scheme.primary)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun themeCheckbox(checkbox: CheckBox) {
|
|
||||||
withScheme(checkbox) { scheme ->
|
|
||||||
checkbox.buttonTintList = ColorStateList(
|
|
||||||
arrayOf(
|
|
||||||
intArrayOf(-android.R.attr.state_checked),
|
|
||||||
intArrayOf(android.R.attr.state_checked)
|
|
||||||
),
|
|
||||||
intArrayOf(Color.GRAY, scheme.primary)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun themeRadioButton(radioButton: RadioButton) {
|
|
||||||
withScheme(radioButton) { scheme ->
|
|
||||||
radioButton.buttonTintList = ColorStateList(
|
|
||||||
arrayOf(
|
|
||||||
intArrayOf(-android.R.attr.state_checked),
|
|
||||||
intArrayOf(android.R.attr.state_checked)
|
|
||||||
),
|
|
||||||
intArrayOf(Color.GRAY, scheme.primary)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun themeSwipeRefreshLayout(swipeRefreshLayout: SwipeRefreshLayout) {
|
|
||||||
withScheme(swipeRefreshLayout) { scheme ->
|
|
||||||
swipeRefreshLayout.setColorSchemeColors(scheme.primary)
|
|
||||||
swipeRefreshLayout.setProgressBackgroundColorSchemeResource(R.color.refresh_spinner_background)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun colorProgressBar(progressIndicator: LinearProgressIndicator) {
|
|
||||||
withScheme(progressIndicator) { scheme ->
|
|
||||||
progressIndicator.setIndicatorColor(scheme.primary)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun colorEditText(editText: EditText) {
|
|
||||||
withScheme(editText) { scheme ->
|
|
||||||
// TODO check API-level compatibility
|
|
||||||
// editText.background.setColorFilter(color, PorterDuff.Mode.SRC_ATOP)
|
|
||||||
editText.backgroundTintList = ColorStateList(
|
|
||||||
arrayOf(
|
|
||||||
intArrayOf(-android.R.attr.state_focused),
|
|
||||||
intArrayOf(android.R.attr.state_focused)
|
|
||||||
),
|
|
||||||
intArrayOf(
|
|
||||||
scheme.outline,
|
|
||||||
scheme.primary
|
|
||||||
)
|
|
||||||
)
|
|
||||||
editText.setHintTextColor(scheme.onSurfaceVariant)
|
|
||||||
editText.setTextColor(scheme.onSurface)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun colorTextInputLayout(textInputLayout: TextInputLayout) {
|
|
||||||
withScheme(textInputLayout) { scheme ->
|
|
||||||
val errorColor = scheme.onSurfaceVariant
|
|
||||||
|
|
||||||
val errorColorStateList = ColorStateList(
|
|
||||||
arrayOf(
|
|
||||||
intArrayOf(-android.R.attr.state_focused),
|
|
||||||
intArrayOf(android.R.attr.state_focused)
|
|
||||||
),
|
|
||||||
intArrayOf(
|
|
||||||
errorColor,
|
|
||||||
errorColor
|
|
||||||
)
|
|
||||||
)
|
|
||||||
val coloredColorStateList = ColorStateList(
|
|
||||||
arrayOf(
|
|
||||||
intArrayOf(-android.R.attr.state_focused),
|
|
||||||
intArrayOf(android.R.attr.state_focused)
|
|
||||||
),
|
|
||||||
intArrayOf(
|
|
||||||
scheme.outline,
|
|
||||||
scheme.primary
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
textInputLayout.setBoxStrokeColorStateList(coloredColorStateList)
|
|
||||||
textInputLayout.setErrorIconTintList(errorColorStateList)
|
|
||||||
textInputLayout.setErrorTextColor(errorColorStateList)
|
|
||||||
textInputLayout.boxStrokeErrorColor = errorColorStateList
|
|
||||||
textInputLayout.defaultHintTextColor = coloredColorStateList
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun themeTabLayoutOnSurface(tabLayout: TabLayout) {
|
|
||||||
withScheme(tabLayout) { scheme ->
|
|
||||||
tabLayout.setBackgroundColor(scheme.surface)
|
|
||||||
colorTabLayout(tabLayout, scheme)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun colorTabLayout(tabLayout: TabLayout, scheme: Scheme) {
|
|
||||||
tabLayout.setSelectedTabIndicatorColor(scheme.primary)
|
|
||||||
tabLayout.tabTextColors = ColorStateList(
|
|
||||||
arrayOf(
|
|
||||||
intArrayOf(android.R.attr.state_selected),
|
|
||||||
intArrayOf(-android.R.attr.state_selected)
|
|
||||||
),
|
|
||||||
intArrayOf(scheme.primary, ContextCompat.getColor(tabLayout.context, R.color.high_emphasis_text))
|
|
||||||
)
|
|
||||||
tabLayout.tabRippleColor = ColorStateList(
|
|
||||||
arrayOf(
|
|
||||||
intArrayOf(android.R.attr.state_pressed)
|
|
||||||
),
|
|
||||||
intArrayOf(
|
|
||||||
colorUtil.adjustOpacity(scheme.primary, SURFACE_OPACITY_BUTTON_DISABLED)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getPlaceholderImage(context: Context, mimetype: String?): Drawable? {
|
|
||||||
val drawableResourceId = DrawableUtils.getDrawableResourceIdForMimeType(mimetype)
|
|
||||||
val drawable = AppCompatResources.getDrawable(
|
|
||||||
context,
|
|
||||||
drawableResourceId
|
|
||||||
)
|
|
||||||
if (drawable != null && THEMEABLE_PLACEHOLDER_IDS.contains(drawableResourceId)) {
|
|
||||||
colorDrawable(context, drawable)
|
|
||||||
}
|
|
||||||
return drawable
|
|
||||||
}
|
|
||||||
|
|
||||||
fun colorChipBackground(chip: Chip) {
|
|
||||||
withScheme(chip) { scheme ->
|
|
||||||
chip.chipBackgroundColor = ColorStateList.valueOf(scheme.primary)
|
|
||||||
chip.setTextColor(scheme.onPrimary)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun colorChipOutlined(chip: Chip, strokeWidth: Float) {
|
|
||||||
withScheme(chip) { scheme ->
|
|
||||||
chip.chipBackgroundColor = ColorStateList.valueOf(Color.TRANSPARENT)
|
|
||||||
chip.chipStrokeWidth = strokeWidth
|
|
||||||
chip.chipStrokeColor = ColorStateList.valueOf(scheme.primary)
|
|
||||||
chip.setTextColor(scheme.primary)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.O)
|
|
||||||
fun themePlaceholderAvatar(avatar: View, @DrawableRes foreground: Int): Drawable? {
|
|
||||||
var drawable: LayerDrawable? = null
|
|
||||||
withScheme(avatar) { scheme ->
|
|
||||||
val layers = arrayOfNulls<Drawable>(2)
|
|
||||||
layers[0] = ContextCompat.getDrawable(avatar.context, R.drawable.ic_avatar_background)
|
|
||||||
layers[0]?.setTint(scheme.surfaceVariant)
|
|
||||||
layers[1] = ContextCompat.getDrawable(avatar.context, foreground)
|
|
||||||
layers[1]?.setTint(scheme.onSurfaceVariant)
|
|
||||||
drawable = LayerDrawable(layers)
|
|
||||||
}
|
|
||||||
|
|
||||||
return drawable
|
|
||||||
}
|
|
||||||
|
|
||||||
fun themePrimaryMentionChip(context: Context, chip: ChipDrawable) {
|
|
||||||
withScheme(context) { scheme ->
|
|
||||||
chip.chipBackgroundColor = ColorStateList.valueOf(scheme.primary)
|
|
||||||
chip.setTextColor(scheme.onPrimary)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun setCheckedBackground(emoji: EmojiTextView) {
|
|
||||||
withScheme(emoji) { scheme ->
|
|
||||||
val drawable = AppCompatResources
|
|
||||||
.getDrawable(emoji.context, R.drawable.reaction_self_bottom_sheet_background)!!
|
|
||||||
.mutate()
|
|
||||||
DrawableCompat.setTintList(
|
|
||||||
drawable,
|
|
||||||
ColorStateList.valueOf(scheme.primary)
|
|
||||||
)
|
|
||||||
emoji.background = drawable
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun setCheckedBackground(linearLayout: LinearLayout, @ColorInt backgroundColor: Int) {
|
|
||||||
withScheme(linearLayout) { scheme ->
|
|
||||||
val drawable = AppCompatResources
|
|
||||||
.getDrawable(linearLayout.context, R.drawable.reaction_self_background)!!
|
|
||||||
.mutate()
|
|
||||||
DrawableCompat.setTintList(
|
|
||||||
drawable,
|
|
||||||
ColorStateList.valueOf(backgroundColor)
|
|
||||||
)
|
|
||||||
linearLayout.background = drawable
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun colorDialogMenuText(button: MaterialButton) {
|
|
||||||
withScheme(button) { scheme ->
|
|
||||||
button.setTextColor(scheme.onSurface)
|
|
||||||
button.iconTint = ColorStateList.valueOf(scheme.onSurface)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun colorMaterialAlertDialogBackground(context: Context, dialogBuilder: MaterialAlertDialogBuilder) {
|
|
||||||
withScheme(dialogBuilder.context) { scheme ->
|
|
||||||
val materialShapeDrawable = MaterialShapeDrawable(
|
|
||||||
context,
|
|
||||||
null,
|
|
||||||
com.google.android.material.R.attr.alertDialogStyle,
|
|
||||||
com.google.android.material.R.style.MaterialAlertDialog_MaterialComponents
|
|
||||||
)
|
|
||||||
materialShapeDrawable.initializeElevationOverlay(context)
|
|
||||||
materialShapeDrawable.fillColor = ColorStateList.valueOf(scheme.surface)
|
|
||||||
|
|
||||||
// dialogCornerRadius first appeared in Android Pie
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
|
||||||
val radius = context.resources.getDimension(R.dimen.dialogBorderRadius)
|
|
||||||
materialShapeDrawable.setCornerSize(radius)
|
|
||||||
}
|
|
||||||
|
|
||||||
dialogBuilder.background = materialShapeDrawable
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun colorDialogHeadline(textView: TextView) {
|
|
||||||
withScheme(textView) { scheme ->
|
|
||||||
textView.setTextColor(scheme.onSurface)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun colorDialogSupportingText(textView: TextView) {
|
|
||||||
withScheme(textView) { scheme ->
|
|
||||||
textView.setTextColor(scheme.onSurfaceVariant)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun colorDialogIcon(icon: ImageView) {
|
|
||||||
withScheme(icon) { scheme ->
|
|
||||||
icon.setColorFilter(scheme.secondary)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun highlightText(textView: TextView, originalText: String, constraint: String) {
|
|
||||||
withScheme(textView) { scheme ->
|
|
||||||
FlexibleUtils.highlightText(textView, originalText, constraint, scheme.primary)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun createHighlightedSpan(context: Context, messageSpannable: SpannableString, searchTerm: String): Spannable {
|
|
||||||
var spannable: Spannable = messageSpannable
|
|
||||||
withScheme(context) { scheme ->
|
|
||||||
spannable = DisplayUtils.searchAndColor(messageSpannable, searchTerm, scheme.primary)
|
|
||||||
}
|
|
||||||
return spannable
|
|
||||||
}
|
|
||||||
|
|
||||||
fun colorMaterialAlertDialogIcon(context: Context, drawableId: Int): Drawable {
|
|
||||||
val drawable = AppCompatResources.getDrawable(context, drawableId)!!
|
|
||||||
withScheme(context) { scheme ->
|
|
||||||
DrawableCompat.setTint(drawable, scheme.secondary)
|
|
||||||
}
|
|
||||||
return drawable
|
|
||||||
}
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
private val THEMEABLE_PLACEHOLDER_IDS = listOf(
|
|
||||||
R.drawable.ic_mimetype_package_x_generic,
|
|
||||||
R.drawable.ic_mimetype_folder
|
|
||||||
)
|
|
||||||
|
|
||||||
private val ALPHA_80_INT: Int = (255 * 0.8).roundToInt()
|
|
||||||
|
|
||||||
private const val SWITCH_COMPAT_TRACK_ALPHA: Int = 77
|
|
||||||
private const val HALF_ALPHA_INT: Int = 255 / 2
|
|
||||||
private const val SURFACE_OPACITY_BUTTON_DISABLED: Float = 0.12f
|
|
||||||
private const val ON_SURFACE_OPACITY_BUTTON_DISABLED: Float = 0.38f
|
|
||||||
private const val SEARCH_TEXT_SIZE: Float = 16f
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -304,7 +304,7 @@ public class DisplayUtils {
|
|||||||
chip.setEllipsize(TextUtils.TruncateAt.MIDDLE);
|
chip.setEllipsize(TextUtils.TruncateAt.MIDDLE);
|
||||||
|
|
||||||
if (chipResource == R.xml.chip_you) {
|
if (chipResource == R.xml.chip_you) {
|
||||||
viewThemeUtils.themePrimaryMentionChip(context, chip);
|
viewThemeUtils.material.colorChipDrawable(context, chip);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||||
|
@ -73,7 +73,7 @@ public class MagicUserInputModule extends StandardUserInputModule {
|
|||||||
final Listener<String> listener) {
|
final Listener<String> listener) {
|
||||||
final View view = LayoutInflater.from(context).inflate(R.layout.dialog_edittext, null);
|
final View view = LayoutInflater.from(context).inflate(R.layout.dialog_edittext, null);
|
||||||
final EditText inputField = view.findViewById(R.id.mp_text_input);
|
final EditText inputField = view.findViewById(R.id.mp_text_input);
|
||||||
viewThemeUtils.colorEditText(inputField);
|
viewThemeUtils.platform.colorEditText(inputField);
|
||||||
|
|
||||||
int paddingStartEnd = Math.round(view.getResources().getDimension(R.dimen.standard_padding));
|
int paddingStartEnd = Math.round(view.getResources().getDimension(R.dimen.standard_padding));
|
||||||
int paddingTopBottom = Math.round(view.getResources().getDimension(R.dimen.dialog_padding_top_bottom));
|
int paddingTopBottom = Math.round(view.getResources().getDimension(R.dimen.dialog_padding_top_bottom));
|
||||||
@ -96,12 +96,12 @@ public class MagicUserInputModule extends StandardUserInputModule {
|
|||||||
.setTitle(title)
|
.setTitle(title)
|
||||||
.setView(view);
|
.setView(view);
|
||||||
|
|
||||||
viewThemeUtils.colorMaterialAlertDialogBackground(view.getContext(), dialogBuilder);
|
viewThemeUtils.dialog.colorMaterialAlertDialogBackground(view.getContext(), dialogBuilder);
|
||||||
|
|
||||||
final Dialog dialog = dialogBuilder.show();
|
final Dialog dialog = dialogBuilder.show();
|
||||||
|
|
||||||
TextView button = view.findViewById(R.id.mp_btn_confirm);
|
TextView button = view.findViewById(R.id.mp_btn_confirm);
|
||||||
viewThemeUtils.colorPrimaryTextViewElement(button);
|
viewThemeUtils.platform.colorPrimaryTextViewElement(button);
|
||||||
button.setOnClickListener(new View.OnClickListener() {
|
button.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
|
@ -1,33 +0,0 @@
|
|||||||
/*
|
|
||||||
* Nextcloud Talk application
|
|
||||||
*
|
|
||||||
* @author Álvaro Brey
|
|
||||||
* Copyright (C) 2022 Álvaro Brey
|
|
||||||
* Copyright (C) 2022 Nextcloud GmbH
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.nextcloud.talk.utils.ui
|
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import android.content.res.Configuration
|
|
||||||
|
|
||||||
object PlatformThemeUtil {
|
|
||||||
fun isDarkMode(context: Context): Boolean =
|
|
||||||
when (context.resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK) {
|
|
||||||
Configuration.UI_MODE_NIGHT_YES -> true
|
|
||||||
else -> false
|
|
||||||
}
|
|
||||||
}
|
|
@ -32,7 +32,6 @@
|
|||||||
<!-- App bar -->
|
<!-- App bar -->
|
||||||
<color name="appbar">#1E1E1E</color>
|
<color name="appbar">#1E1E1E</color>
|
||||||
<color name="fontAppbar">#FFFFFF</color>
|
<color name="fontAppbar">#FFFFFF</color>
|
||||||
<color name="refresh_spinner_background">#222222</color>
|
|
||||||
|
|
||||||
<!-- general text colors -->
|
<!-- general text colors -->
|
||||||
<color name="no_emphasis_text">#ffffff</color>
|
<color name="no_emphasis_text">#ffffff</color>
|
||||||
@ -78,7 +77,5 @@
|
|||||||
<color name="dialog_background">#353535</color>
|
<color name="dialog_background">#353535</color>
|
||||||
<color name="vote_dialog_background">#424242</color>
|
<color name="vote_dialog_background">#424242</color>
|
||||||
|
|
||||||
<color name="switch_thumb_color_unchecked">#cbcbcb</color>
|
|
||||||
<color name="switch_track_color_unchecked">#5a5a5a</color>
|
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
@ -33,7 +33,6 @@
|
|||||||
<color name="appbar">@android:color/white</color>
|
<color name="appbar">@android:color/white</color>
|
||||||
<color name="fontAppbar">#666666</color>
|
<color name="fontAppbar">#666666</color>
|
||||||
<color name="fontSecondaryAppbar">#A5A5A5</color>
|
<color name="fontSecondaryAppbar">#A5A5A5</color>
|
||||||
<color name="refresh_spinner_background">#ffffff</color>
|
|
||||||
|
|
||||||
<!-- general text colors -->
|
<!-- general text colors -->
|
||||||
<color name="no_emphasis_text">#000000</color>
|
<color name="no_emphasis_text">#000000</color>
|
||||||
@ -108,7 +107,6 @@
|
|||||||
<color name="dialog_background">#FFFFFF</color>
|
<color name="dialog_background">#FFFFFF</color>
|
||||||
<color name="vote_dialog_background">#FFFFFF</color>
|
<color name="vote_dialog_background">#FFFFFF</color>
|
||||||
|
|
||||||
<color name="switch_thumb_color_unchecked">#ececec</color>
|
|
||||||
<color name="switch_track_color_unchecked">#b2b2b2</color>
|
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
@ -74,8 +74,6 @@
|
|||||||
<dimen name="standard_eighth_margin">2dp</dimen>
|
<dimen name="standard_eighth_margin">2dp</dimen>
|
||||||
<dimen name="scope_padding">12dp</dimen>
|
<dimen name="scope_padding">12dp</dimen>
|
||||||
|
|
||||||
<dimen name="dialogBorderRadius">28dp</dimen>
|
|
||||||
|
|
||||||
<dimen name="default_checkbox_dialog_start_margin">18dp</dimen>
|
<dimen name="default_checkbox_dialog_start_margin">18dp</dimen>
|
||||||
|
|
||||||
<dimen name="mediatab_file_icon_size">50dp</dimen>
|
<dimen name="mediatab_file_icon_size">50dp</dimen>
|
||||||
|
@ -20,8 +20,9 @@
|
|||||||
|
|
||||||
include ':app'
|
include ':app'
|
||||||
|
|
||||||
includeBuild('../android-common') {
|
//// uncomment to use local build of common-ui
|
||||||
dependencySubstitution {
|
//includeBuild('../android-common') {
|
||||||
substitute module('com.github.nextcloud.android-common:ui') using project(':ui')
|
// dependencySubstitution {
|
||||||
}
|
// substitute module('com.github.nextcloud.android-common:ui') using project(':ui')
|
||||||
}
|
// }
|
||||||
|
//}
|
||||||
|
Loading…
Reference in New Issue
Block a user