Feature/lucide icons pt2 (#863)

* Starting to import Lucide icons and clean up

* Removing unused icons

* Lucide icons + removing unsued stuff

Removed the whole EMoji/MediaKeyboard classes as they didn't seem used

* More Lucide icons + ui tweaks + clean up

* comment

* Wrong tinting

* delete icon

* More icons

* check icons

* edit icon (ic_pencil)

* edit icon

* Search icon (ic_search)

* settings icons (ic_settings)

* back icon (ic_chevron_left)

* icon forward arrow (ic_chevron_right)

* icon circle dots (ic_circle_dots_custom)

* icon read (ic_eye)

* icon disappearing messages (ic_clock_x)

* refresh icon (ic_refresh_cw)

* globe icon

* message icon (ic_message_square)

* icon message request (ic_message_square_warning)

* group and invite icons (ic_users_group_custom, ic_user_round_plus))

* icons: lock, unlock, audio/notification (ic_lock_keyhole, ic_lock_keyhole_open, ic_volume_2, ic_volume_off )

* icon mute / mic off (ic_mic_off)

* icon appearance, recovery (ic_paintbrush_vertical, ic_recovery_password_custom)

* icons: help, help circle, qr code

* icon block/ban
pull/1710/head
ThomasSession 3 months ago committed by GitHub
parent a2e194e2d3
commit c36f3305ae
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -1,104 +0,0 @@
package org.thoughtcrime.securesms.components;
import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.LinearInterpolator;
import android.view.animation.RotateAnimation;
import android.widget.FrameLayout;
import android.widget.ImageView;
import network.loki.messenger.R;
public class DeliveryStatusView extends FrameLayout {
private static final String TAG = DeliveryStatusView.class.getSimpleName();
private static final RotateAnimation ROTATION_ANIMATION = new RotateAnimation(0, 360f,
Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 0.5f);
static {
ROTATION_ANIMATION.setInterpolator(new LinearInterpolator());
ROTATION_ANIMATION.setDuration(1500);
ROTATION_ANIMATION.setRepeatCount(Animation.INFINITE);
}
private final ImageView pendingIndicator;
private final ImageView sentIndicator;
private final ImageView deliveredIndicator;
private final ImageView readIndicator;
public DeliveryStatusView(Context context) {
this(context, null);
}
public DeliveryStatusView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public DeliveryStatusView(final Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
inflate(context, R.layout.delivery_status_view, this);
this.deliveredIndicator = findViewById(R.id.delivered_indicator);
this.sentIndicator = findViewById(R.id.sent_indicator);
this.pendingIndicator = findViewById(R.id.pending_indicator);
this.readIndicator = findViewById(R.id.read_indicator);
if (attrs != null) {
TypedArray typedArray = context.getTheme().obtainStyledAttributes(attrs, R.styleable.DeliveryStatusView, 0, 0);
setTint(typedArray.getColor(R.styleable.DeliveryStatusView_iconColor, getResources().getColor(R.color.core_white)));
typedArray.recycle();
}
}
public void setNone() {
this.setVisibility(View.GONE);
}
public void setPending() {
this.setVisibility(View.GONE);
pendingIndicator.setVisibility(View.VISIBLE);
pendingIndicator.startAnimation(ROTATION_ANIMATION);
sentIndicator.setVisibility(View.GONE);
deliveredIndicator.setVisibility(View.GONE);
readIndicator.setVisibility(View.GONE);
}
public void setSent() {
this.setVisibility(View.GONE);
pendingIndicator.setVisibility(View.GONE);
pendingIndicator.clearAnimation();
sentIndicator.setVisibility(View.VISIBLE);
deliveredIndicator.setVisibility(View.GONE);
readIndicator.setVisibility(View.GONE);
}
public void setDelivered() {
this.setVisibility(View.GONE);
pendingIndicator.setVisibility(View.GONE);
pendingIndicator.clearAnimation();
sentIndicator.setVisibility(View.GONE);
deliveredIndicator.setVisibility(View.VISIBLE);
readIndicator.setVisibility(View.GONE);
}
public void setRead() {
this.setVisibility(View.GONE);
pendingIndicator.setVisibility(View.GONE);
pendingIndicator.clearAnimation();
sentIndicator.setVisibility(View.GONE);
deliveredIndicator.setVisibility(View.GONE);
readIndicator.setVisibility(View.VISIBLE);
}
public void setTint(int color) {
pendingIndicator.setColorFilter(color);
deliveredIndicator.setColorFilter(color);
sentIndicator.setColorFilter(color);
readIndicator.setColorFilter(color);
}
}

@ -75,8 +75,8 @@ public class FromTextView extends EmojiTextView {
setText(builder);
if (recipient.isBlocked()) setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_block_grey600_18dp, 0, 0, 0);
else if (recipient.isMuted()) setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_volume_off_grey600_18dp, 0, 0, 0);
if (recipient.isBlocked()) setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_ban, 0, 0, 0);
else if (recipient.isMuted()) setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_volume_off, 0, 0, 0);
else setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
}

@ -1,79 +0,0 @@
package org.thoughtcrime.securesms.components;
import android.content.Context;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageView;
import network.loki.messenger.R;
public class RemovableEditableMediaView extends FrameLayout {
private final @NonNull ImageView remove;
private final @NonNull ImageView edit;
private final int removeSize;
private final int editSize;
private @Nullable View current;
public RemovableEditableMediaView(Context context) {
this(context, null);
}
public RemovableEditableMediaView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public RemovableEditableMediaView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
this.remove = (ImageView)LayoutInflater.from(context).inflate(R.layout.media_view_remove_button, this, false);
this.edit = (ImageView)LayoutInflater.from(context).inflate(R.layout.media_view_edit_button, this, false);
this.removeSize = getResources().getDimensionPixelSize(R.dimen.media_bubble_remove_button_size);
this.editSize = getResources().getDimensionPixelSize(R.dimen.media_bubble_edit_button_size);
this.remove.setVisibility(View.GONE);
this.edit.setVisibility(View.GONE);
}
@Override
public void onFinishInflate() {
super.onFinishInflate();
this.addView(remove);
this.addView(edit);
}
public void display(@Nullable View view, boolean editable) {
edit.setVisibility(editable ? View.VISIBLE : View.GONE);
if (view == current) return;
if (current != null) current.setVisibility(View.GONE);
if (view != null) {
view.setPadding(view.getPaddingLeft(), removeSize / 2, removeSize / 2, (int)(8 * getResources().getDisplayMetrics().density));
edit.setPadding(0, 0, removeSize / 2, 0);
view.setVisibility(View.VISIBLE);
remove.setVisibility(View.VISIBLE);
} else {
remove.setVisibility(View.GONE);
edit.setVisibility(View.GONE);
}
current = view;
}
public void setRemoveClickListener(View.OnClickListener listener) {
this.remove.setOnClickListener(listener);
}
public void setEditClickListener(View.OnClickListener listener) {
this.edit.setOnClickListener(listener);
}
}

@ -55,7 +55,7 @@ class UserView : LinearLayout {
val address = user.address.serialize()
binding.profilePictureView.update(user)
binding.actionIndicatorImageView.setImageResource(R.drawable.ic_baseline_edit_24)
binding.actionIndicatorImageView.setImageResource(R.drawable.ic_radio_unselected)
binding.nameTextView.text = if (user.isGroupOrCommunityRecipient) user.name else getUserDisplayName(address)
when (actionIndicator) {
ActionIndicator.None -> {
@ -63,14 +63,14 @@ class UserView : LinearLayout {
}
ActionIndicator.Menu -> {
binding.actionIndicatorImageView.visibility = View.VISIBLE
binding.actionIndicatorImageView.setImageResource(R.drawable.ic_more_horiz_white)
binding.actionIndicatorImageView.setImageResource(R.drawable.ic_circle_dots_custom)
}
ActionIndicator.Tick -> {
binding.actionIndicatorImageView.visibility = View.VISIBLE
if (isSelected) {
binding.actionIndicatorImageView.setImageResource(R.drawable.padded_circle_accent)
binding.actionIndicatorImageView.setImageResource(R.drawable.ic_radio_selected)
} else {
binding.actionIndicatorImageView.setImageDrawable(null)
binding.actionIndicatorImageView.setImageResource(R.drawable.ic_radio_unselected)
}
}
}
@ -79,9 +79,9 @@ class UserView : LinearLayout {
fun toggleCheckbox(isSelected: Boolean = false) {
binding.actionIndicatorImageView.visibility = View.VISIBLE
if (isSelected) {
binding.actionIndicatorImageView.setImageResource(R.drawable.padded_circle_accent)
binding.actionIndicatorImageView.setImageResource(R.drawable.ic_radio_selected)
} else {
binding.actionIndicatorImageView.setImageDrawable(null)
binding.actionIndicatorImageView.setImageResource(R.drawable.ic_radio_unselected)
}
}

@ -116,7 +116,7 @@ class ConversationActionBarView @JvmOverloads constructor(
settings += ConversationSetting(
subtitleTxt,
ConversationSettingType.EXPIRATION,
R.drawable.ic_timer,
R.drawable.ic_clock_11,
resources.getString(R.string.AccessibilityId_disappearingMessagesDisappear)
)
}
@ -129,7 +129,7 @@ class ConversationActionBarView @JvmOverloads constructor(
}
?: context.getString(R.string.notificationsMuted),
ConversationSettingType.NOTIFICATION,
R.drawable.ic_outline_notifications_off_24
R.drawable.ic_volume_off
)
}

@ -63,13 +63,13 @@ internal fun StartConversationScreen(
val newMessageTitleTxt:String = context.resources.getQuantityString(R.plurals.messageNew, 1, 1)
ItemButton(
text = newMessageTitleTxt,
icon = R.drawable.ic_message,
icon = R.drawable.ic_message_square,
modifier = Modifier.contentDescription(R.string.AccessibilityId_messageNew),
onClick = delegate::onNewMessageSelected)
Divider(startIndent = LocalDimensions.current.minItemButtonHeight)
ItemButton(
textId = R.string.groupCreate,
icon = R.drawable.ic_group,
icon = R.drawable.ic_users_group_custom,
modifier = Modifier.contentDescription(R.string.AccessibilityId_groupCreate),
onClick = delegate::onCreateGroupSelected
)
@ -83,7 +83,7 @@ internal fun StartConversationScreen(
Divider(startIndent = LocalDimensions.current.minItemButtonHeight)
ItemButton(
textId = R.string.sessionInviteAFriend,
icon = R.drawable.ic_invite_friend,
icon = R.drawable.ic_user_round_plus,
Modifier.contentDescription(R.string.AccessibilityId_sessionInviteAFriendButton),
onClick = delegate::onInviteFriend
)

@ -161,7 +161,7 @@ private fun EnterAccountId(
.fillMaxWidth(),
style = LocalType.current.small,
color = LocalColors.current.textSecondary,
iconRes = R.drawable.ic_circle_question_mark,
iconRes = R.drawable.ic_circle_help,
onClick = onHelp
)
}

@ -275,7 +275,7 @@ fun CellButtons(
onResend?.let {
LargeItemButton(
R.string.resend,
R.drawable.ic_message_details__refresh,
R.drawable.ic_refresh_cw,
onClick = it
)
Divider()

@ -15,19 +15,19 @@ class ExpirationTimerView @JvmOverloads constructor(
defStyleAttr: Int = 0
) : AppCompatImageView(context, attrs, defStyleAttr) {
private val frames = intArrayOf(
R.drawable.timer00,
R.drawable.timer05,
R.drawable.timer10,
R.drawable.timer15,
R.drawable.timer20,
R.drawable.timer25,
R.drawable.timer30,
R.drawable.timer35,
R.drawable.timer40,
R.drawable.timer45,
R.drawable.timer50,
R.drawable.timer55,
R.drawable.timer60
R.drawable.ic_clock_0,
R.drawable.ic_clock_1,
R.drawable.ic_clock_2,
R.drawable.ic_clock_3,
R.drawable.ic_clock_4,
R.drawable.ic_clock_5,
R.drawable.ic_clock_6,
R.drawable.ic_clock_7,
R.drawable.ic_clock_8,
R.drawable.ic_clock_9,
R.drawable.ic_clock_10,
R.drawable.ic_clock_11,
R.drawable.ic_clock_12
)
fun setTimerIcon() {
@ -36,13 +36,13 @@ class ExpirationTimerView @JvmOverloads constructor(
fun setExpirationTime(startedAt: Long, expiresIn: Long) {
if (expiresIn == 0L) {
setImageResource(R.drawable.timer55)
setImageResource(R.drawable.ic_clock_11)
return
}
if (startedAt == 0L) {
// timer has not started
setImageResource(R.drawable.timer60)
setImageResource(R.drawable.ic_clock_12)
return
}

@ -106,7 +106,7 @@ class ControlMessageView : LinearLayout {
message.isMediaSavedNotification -> {
binding.iconImageView.apply {
setImageDrawable(
ResourcesCompat.getDrawable(resources, R.drawable.ic_file_download_white_36dp, context.theme)
ResourcesCompat.getDrawable(resources, R.drawable.ic_arrow_down_to_line, context.theme)
)
isVisible = true
}

@ -408,14 +408,14 @@ class VisibleMessageView : FrameLayout {
// Non-mms messages (or quote messages, which happen to be mms for some reason) display 'Sending'..
if (!message.isMms || (message as? MmsMessageRecord)?.quote != null) {
MessageStatusInfo(
R.drawable.ic_delivery_status_sending,
R.drawable.ic_circle_dots_custom,
context.getColorFromAttr(R.attr.message_status_color),
R.string.sending
)
} else {
// ..and Mms messages display 'Uploading'.
MessageStatusInfo(
R.drawable.ic_delivery_status_sending,
R.drawable.ic_circle_dots_custom,
context.getColorFromAttr(R.attr.message_status_color),
R.string.uploading
)
@ -423,19 +423,19 @@ class VisibleMessageView : FrameLayout {
}
message.isResyncing ->
MessageStatusInfo(
R.drawable.ic_delivery_status_sending,
R.drawable.ic_circle_dots_custom,
context.getColorFromAttr(R.attr.message_status_color),
R.string.messageStatusSyncing
)
message.isRead || message.isIncoming ->
MessageStatusInfo(
R.drawable.ic_delivery_status_read,
R.drawable.ic_eye,
context.getColorFromAttr(R.attr.message_status_color),
R.string.read
)
message.isSyncing || message.isSent -> // syncing should happen silently in the bg so we can mark it as sent
MessageStatusInfo(
R.drawable.ic_delivery_status_sent,
R.drawable.ic_circle_check,
context.getColorFromAttr(R.attr.message_status_color),
R.string.disappearingMessagesSent
)

@ -104,9 +104,6 @@ class EditLegacyGroupActivity : PassphraseRequiredActionBarActivity() {
super.onCreate(savedInstanceState, isReady)
setContentView(R.layout.activity_edit_closed_group)
supportActionBar!!.setHomeAsUpIndicator(
ThemeUtil.getThemedDrawableResId(this, R.attr.actionModeCloseDrawable))
groupID = intent.getStringExtra(groupIDKey)!!
val groupInfo = DatabaseComponent.get(this).groupDatabase().getGroup(groupID).get()
originalName = groupInfo.title

@ -35,6 +35,7 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.navigation.compose.NavHost
@ -65,6 +66,8 @@ import org.thoughtcrime.securesms.ui.theme.LocalColors
import org.thoughtcrime.securesms.ui.theme.LocalDimensions
import org.thoughtcrime.securesms.ui.theme.LocalType
import org.thoughtcrime.securesms.ui.theme.PreviewTheme
import org.thoughtcrime.securesms.ui.theme.SessionColorsParameterProvider
import org.thoughtcrime.securesms.ui.theme.ThemeColors
@Composable
fun EditGroupScreen(
@ -221,7 +224,7 @@ fun EditGroup(
onClick = onEditNameClicked
) {
Icon(
painterResource(R.drawable.ic_baseline_edit_24),
painterResource(R.drawable.ic_pencil),
contentDescription = stringResource(R.string.edit),
tint = LocalColors.current.text,
)
@ -439,7 +442,8 @@ fun EditMemberItem(
){
if (member.canEdit) {
Icon(
painter = painterResource(R.drawable.ic_circle_dot_dot_dot),
painter = painterResource(R.drawable.ic_circle_dots_custom),
tint = LocalColors.current.text,
contentDescription = stringResource(R.string.AccessibilityId_sessionSettings)
)
}
@ -596,8 +600,10 @@ private fun EditGroupPreview() {
@Preview
@Composable
private fun EditGroupEditNamePreview() {
PreviewTheme {
private fun EditGroupEditNamePreview(
@PreviewParameter(SessionColorsParameterProvider::class) colors: ThemeColors
) {
PreviewTheme(colors) {
val oneMember = GroupMemberState(
accountId = AccountId("05abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234"),
name = "Test User",

@ -96,7 +96,7 @@ class ConversationView : LinearLayout {
val recipient = thread.recipient
binding.muteIndicatorImageView.isVisible = recipient.isMuted || recipient.notifyType != NOTIFY_TYPE_ALL
val drawableRes = if (recipient.isMuted || recipient.notifyType == NOTIFY_TYPE_NONE) {
R.drawable.ic_outline_notifications_off_24
R.drawable.ic_volume_off
} else {
R.drawable.ic_notifications_mentions
}
@ -129,7 +129,7 @@ class ConversationView : LinearLayout {
drawable?.setTint(ThemeUtil.getThemedColor(context, R.attr.danger))
binding.statusIndicatorImageView.setImageDrawable(drawable)
}
thread.isPending -> binding.statusIndicatorImageView.setImageResource(R.drawable.ic_circle_dot_dot_dot)
thread.isPending -> binding.statusIndicatorImageView.setImageResource(R.drawable.ic_circle_dots_custom)
thread.isRead -> binding.statusIndicatorImageView.setImageResource(R.drawable.ic_circle_check)
else -> binding.statusIndicatorImageView.setImageResource(R.drawable.ic_circle_check)
}

@ -53,7 +53,7 @@ internal fun SeedReminder(startRecoveryPasswordActivity: () -> Unit) {
stringResource(R.string.recoveryPasswordBannerTitle),
style = LocalType.current.h8
)
Spacer(Modifier.requiredWidth(LocalDimensions.current.xxsSpacing))
Spacer(Modifier.requiredWidth(LocalDimensions.current.xsSpacing))
SessionShieldIcon()
}
Text(

@ -108,12 +108,12 @@ class KeyboardPageSearchView @JvmOverloads constructor(
fun showRequested(): Boolean = state == State.SHOW_REQUESTED
fun enableBackNavigation(enable: Boolean = true) {
navButton.setImageResource(if (enable) R.drawable.ic_arrow_left else R.drawable.ic_search_24)
navButton.setImageResource(if (enable) R.drawable.ic_chevron_left else R.drawable.ic_search)
if (enable) {
navButton.setImageResource(R.drawable.ic_arrow_left)
navButton.setImageResource(R.drawable.ic_chevron_left)
navButton.setOnClickListener { callbacks?.onNavigationClicked() }
} else {
navButton.setImageResource(R.drawable.ic_search_24)
navButton.setImageResource(R.drawable.ic_search)
navButton.setOnClickListener(null)
}
}

@ -74,6 +74,6 @@ public class AudioSlide extends Slide {
@Override
public @DrawableRes int getPlaceholderRes(Theme theme) {
return ResUtil.getDrawableRes(theme, R.attr.conversation_icon_attach_audio);
return R.drawable.ic_volume_2;
}
}

@ -88,7 +88,7 @@ private fun RecoveryPassword(state: State, onChange: (String) -> Unit = {}, onCo
Spacer(Modifier.width(LocalDimensions.current.xxsSpacing))
Icon(
modifier = Modifier.align(Alignment.CenterVertically),
painter = painterResource(id = R.drawable.ic_shield_outline),
painter = painterResource(id = R.drawable.ic_recovery_password_custom),
contentDescription = null,
)
}

@ -445,24 +445,24 @@ class SettingsActivity : PassphraseRequiredActionBarActivity() {
}
Divider()
LargeItemButton(R.string.sessionPrivacy, R.drawable.ic_privacy_icon) { push<PrivacySettingsActivity>() }
LargeItemButton(R.string.sessionPrivacy, R.drawable.ic_lock_keyhole) { push<PrivacySettingsActivity>() }
Divider()
LargeItemButton(R.string.sessionNotifications, R.drawable.ic_speaker, Modifier.contentDescription(R.string.AccessibilityId_notifications)) { push<NotificationSettingsActivity>() }
LargeItemButton(R.string.sessionNotifications, R.drawable.ic_volume_2, Modifier.contentDescription(R.string.AccessibilityId_notifications)) { push<NotificationSettingsActivity>() }
Divider()
LargeItemButton(R.string.sessionConversations, R.drawable.ic_conversations, Modifier.contentDescription(R.string.AccessibilityId_sessionConversations)) { push<ChatSettingsActivity>() }
LargeItemButton(R.string.sessionConversations, R.drawable.ic_message_square, Modifier.contentDescription(R.string.AccessibilityId_sessionConversations)) { push<ChatSettingsActivity>() }
Divider()
LargeItemButton(R.string.sessionMessageRequests, R.drawable.ic_message_requests, Modifier.contentDescription(R.string.AccessibilityId_sessionMessageRequests)) { push<MessageRequestsActivity>() }
LargeItemButton(R.string.sessionMessageRequests, R.drawable.ic_message_square_warning, Modifier.contentDescription(R.string.AccessibilityId_sessionMessageRequests)) { push<MessageRequestsActivity>() }
Divider()
LargeItemButton(R.string.sessionAppearance, R.drawable.ic_appearance, Modifier.contentDescription(R.string.AccessibilityId_sessionAppearance)) { push<AppearanceSettingsActivity>() }
LargeItemButton(R.string.sessionAppearance, R.drawable.ic_paintbrush_vertical, Modifier.contentDescription(R.string.AccessibilityId_sessionAppearance)) { push<AppearanceSettingsActivity>() }
Divider()
LargeItemButton(
R.string.sessionInviteAFriend,
R.drawable.ic_invite_friend,
R.drawable.ic_user_round_plus,
Modifier.contentDescription(R.string.AccessibilityId_sessionInviteAFriend)
) { sendInvitationToUseSession() }
Divider()
@ -471,7 +471,7 @@ class SettingsActivity : PassphraseRequiredActionBarActivity() {
if (!recoveryHidden) {
LargeItemButton(
R.string.sessionRecoveryPassword,
R.drawable.ic_shield_outline,
R.drawable.ic_recovery_password_custom,
Modifier.contentDescription(R.string.AccessibilityId_sessionRecoveryPasswordMenuItem)
) {
hideRecoveryLauncher.launch(Intent(baseContext, RecoveryPasswordActivity::class.java))
@ -480,7 +480,7 @@ class SettingsActivity : PassphraseRequiredActionBarActivity() {
Divider()
}
LargeItemButton(R.string.sessionHelp, R.drawable.ic_help, Modifier.contentDescription(R.string.AccessibilityId_help)) { push<HelpSettingsActivity>() }
LargeItemButton(R.string.sessionHelp, R.drawable.ic_question_custom, Modifier.contentDescription(R.string.AccessibilityId_help)) { push<HelpSettingsActivity>() }
Divider()
LargeItemButton(R.string.sessionClearData,

@ -108,7 +108,7 @@ private fun RecoveryPasswordCell(
.padding(vertical = LocalDimensions.current.spacing)
.contentDescription(R.string.AccessibilityId_qrCode),
contentPadding = 10.dp,
icon = R.drawable.session_shield
icon = R.drawable.ic_recovery_password_custom
)
}

@ -248,11 +248,11 @@ public class KeyCachingService extends Service {
.put(APP_NAME_KEY, c.getString(R.string.app_name))
.format().toString();
builder.setContentTitle(unlockedTxt);
builder.setSmallIcon(R.drawable.icon_cached);
builder.setSmallIcon(R.drawable.ic_lock_keyhole_open);
builder.setWhen(0);
builder.setPriority(Notification.PRIORITY_MIN);
builder.addAction(R.drawable.ic_menu_lock_dark, getString(R.string.lockApp), buildLockIntent());
builder.addAction(R.drawable.ic_lock_keyhole, getString(R.string.lockApp), buildLockIntent());
builder.setContentIntent(buildLaunchIntent());
stopForeground(true);

@ -182,13 +182,13 @@ private fun HorizontalPagerIndicator(
@OptIn(ExperimentalFoundationApi::class)
@Composable
fun RowScope.CarouselPrevButton(pagerState: PagerState) {
CarouselButton(pagerState, pagerState.canScrollBackward, R.drawable.ic_prev, -1)
CarouselButton(pagerState, pagerState.canScrollBackward, R.drawable.ic_chevron_left, -1)
}
@OptIn(ExperimentalFoundationApi::class)
@Composable
fun RowScope.CarouselNextButton(pagerState: PagerState) {
CarouselButton(pagerState, pagerState.canScrollForward, R.drawable.ic_next, 1)
CarouselButton(pagerState, pagerState.canScrollForward, R.drawable.ic_chevron_right, 1)
}
@OptIn(ExperimentalFoundationApi::class)

@ -309,7 +309,7 @@ fun PreviewItemButton() {
PreviewTheme {
ItemButton(
textId = R.string.groupCreate,
icon = R.drawable.ic_group,
icon = R.drawable.ic_users_group_custom,
onClick = {}
)
}
@ -321,7 +321,7 @@ fun PreviewLargeItemButton() {
PreviewTheme {
LargeItemButton(
textId = R.string.groupCreate,
icon = R.drawable.ic_group,
icon = R.drawable.ic_users_group_custom,
onClick = {}
)
}
@ -580,10 +580,11 @@ fun Arc(
@Composable
fun RowScope.SessionShieldIcon() {
Icon(
painter = painterResource(R.drawable.session_shield),
painter = painterResource(R.drawable.ic_recovery_password_custom),
contentDescription = null,
modifier = Modifier
.align(Alignment.CenterVertically)
.size(16.dp)
.wrapContentSize(unbounded = true)
)
}
@ -627,7 +628,7 @@ fun SearchBar(
.background(backgroundColor, RoundedCornerShape(100))
) {
Image(
painterResource(id = R.drawable.ic_search_24),
painterResource(id = R.drawable.ic_search),
contentDescription = null,
colorFilter = ColorFilter.tint(
LocalColors.current.textSecondary

@ -171,7 +171,7 @@ fun AppBarBackIcon(onBack: () -> Unit) {
onClick = onBack
) {
Icon(
painter = painterResource(id = R.drawable.ic_arrow_left),
painter = painterResource(id = R.drawable.ic_chevron_left),
contentDescription = null
)
}

@ -267,7 +267,12 @@ fun BorderlessButtonWithIcon(
color = color,
onClick = onClick
) {
AnnotatedTextWithIcon(text, iconRes, style = style)
AnnotatedTextWithIcon(
text = text,
iconRes = iconRes,
color = color,
style = style
)
}
}

@ -41,7 +41,7 @@ fun QrImage(
string: String?,
modifier: Modifier = Modifier,
contentPadding: Dp = LocalDimensions.current.smallSpacing,
icon: Int = R.drawable.session_shield
icon: Int = R.drawable.ic_recovery_password_custom
) {
var bitmap: Bitmap? by remember {
mutableStateOf(null)

@ -3,8 +3,6 @@ package org.thoughtcrime.securesms.ui.components
import androidx.annotation.DrawableRes
import androidx.compose.animation.animateContentSize
import androidx.compose.foundation.border
import androidx.compose.foundation.interaction.InteractionSource
import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
@ -14,10 +12,8 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.wrapContentHeight
import androidx.compose.foundation.layout.wrapContentSize
import androidx.compose.foundation.text.BasicTextField
import androidx.compose.foundation.text.InlineTextContent
import androidx.compose.foundation.text.KeyboardActionScope
import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.foundation.text.appendInlineContent
@ -25,8 +21,6 @@ import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.SolidColor
@ -40,19 +34,16 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.TextUnit
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.max
import androidx.compose.ui.unit.sp
import network.loki.messenger.R
import org.thoughtcrime.securesms.ui.contentDescription
import org.thoughtcrime.securesms.ui.theme.LocalColors
import org.thoughtcrime.securesms.ui.theme.LocalDimensions
import org.thoughtcrime.securesms.ui.theme.LocalType
import org.thoughtcrime.securesms.ui.theme.PreviewTheme
import org.thoughtcrime.securesms.ui.theme.LocalColors
import org.thoughtcrime.securesms.ui.theme.bold
import org.thoughtcrime.securesms.ui.theme.borders
import org.thoughtcrime.securesms.ui.theme.text
import org.thoughtcrime.securesms.ui.theme.textSecondary
import org.thoughtcrime.securesms.ui.contentDescription
import org.thoughtcrime.securesms.ui.theme.LocalType
import org.thoughtcrime.securesms.ui.theme.bold
import kotlin.math.sin
@Preview
@Composable

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 502 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 233 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 493 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 275 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 293 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 288 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 656 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 664 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 470 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 391 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 656 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 318 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 390 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 397 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 378 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 428 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 431 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 422 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 457 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 453 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 419 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 485 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 495 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 436 B

@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="50"
android:viewportHeight="50">
<path
android:pathData="M15.575,11.473L30.841,23.853L15.247,36.509C15.053,36.658 14.889,36.848 14.764,37.067C14.639,37.286 14.557,37.529 14.521,37.783C14.484,38.037 14.496,38.296 14.554,38.545C14.613,38.794 14.717,39.028 14.86,39.233C15.003,39.438 15.184,39.61 15.39,39.739C15.596,39.868 15.824,39.951 16.061,39.984C16.298,40.017 16.538,39.999 16.768,39.93C16.998,39.861 17.212,39.744 17.4,39.584L34.455,25.746C34.637,25.594 34.792,25.408 34.91,25.196C34.993,25.112 35.07,25.022 35.14,24.926C35.426,24.518 35.549,24.005 35.482,23.499C35.416,22.994 35.166,22.537 34.787,22.23L17.732,8.391C17.545,8.238 17.331,8.127 17.104,8.063C16.877,7.999 16.64,7.983 16.407,8.018C16.174,8.053 15.95,8.137 15.748,8.265C15.545,8.393 15.368,8.563 15.227,8.766C15.084,8.968 14.98,9.198 14.921,9.444C14.861,9.689 14.847,9.945 14.879,10.197C14.911,10.448 14.99,10.69 15.109,10.909C15.228,11.128 15.386,11.32 15.575,11.473Z"
android:fillColor="?android:textColorPrimary"/>
</vector>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1023 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 359 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 178 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 321 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 221 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 234 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 479 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 430 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 148 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 669 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 347 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 336 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 454 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 233 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 268 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 275 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 258 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 281 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 293 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 287 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 298 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 309 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 274 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 313 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 326 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 296 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 622 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 268 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 663 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 330 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 339 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 359 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 653 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 858 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 247 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 543 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 583 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 872 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 350 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 473 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 477 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 436 B

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save