This commit is contained in:
世界 2021-02-05 01:59:00 +08:00
parent 56c53abcc4
commit 34a97553dd
No known key found for this signature in database
GPG Key ID: CD109927C34A63C4
39 changed files with 2091 additions and 2561 deletions

View File

@ -53,9 +53,11 @@ NekoX is an **free and open source** third-party Telegram client, based on Teleg
- Option to block others from starting a secret chat with you
- Allow create group without invite
- Option to upgrade group to supergroup
- Mark dialogs as read using tab menu
- Improved session dialog
- Improved link long click menu
- Text replacer
- Option to disable trending
- Tgx style message unpin menu
- Built-in Material Design themes / Telegram X style icons

View File

@ -1,8 +1,8 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
def verName = "7.4.2-rc01"
def verCode = 176
def verName = "7.4.2-rc02"
def verCode = 178
def officialVer = "7.4.2"
def officialCode = 2227

View File

@ -75,7 +75,6 @@ dialogCheckboxSquareUnchecked=-8550769
avatar_actionBarSelectorOrange=-2130706433
avatar_backgroundInProfileRed=-12627531
chat_emojiPanelNewTrending=-12627531
chat_emojiPanelStickerPackSelector=-12627531
chat_unreadMessagesStartArrowIcon=-12627531
avatar_backgroundActionBarOrange=-12627531
windowBackgroundWhiteBlackText=-12434878

View File

@ -1,442 +0,0 @@
chat_unreadMessagesStartText=-12627531
chat_inFileBackgroundSelected=-12627531
chat_editDoneIcon=-12627531
radioBackgroundChecked=-12627531
dialogTextBlue=-12627531
chat_inSentClockSelected=-2143333963
avatar_backgroundActionBarGreen=-12627531
chat_goDownButtonCounterBackground=-1
chat_mediaLoaderPhotoSelected=-2147483648
actionBarActionModeDefaultTop=0
actionBarActionModeDefault=-12627531
dialogCheckboxSquareBackground=-12627531
chats_menuPhone=-2130706433
sessions_devicesImage=-8550769
chat_outViews=-2130706433
avatar_actionBarSelectorCyan=-2130706433
chat_secretTimerBackground=-12627531
chat_botKeyboardButtonText=-1
chat_outViaBotNameText=-2130706433
profile_actionPressedBackground=1073741824
key_chat_messagePanelVoiceLock=-8550769
chat_secretChatStatusText=-8550769
switchTrack=-2137088354
chat_inPreviewInstantSelectedText=-2143333963
location_sendLocationBackground=-12627531
avatar_nameInMessageViolet=-12627531
emptyListPlaceholder=-8550769
chat_inAudioSelectedProgress=-1
chats_nameMessage=-12627531
contacts_inviteBackground=-12627531
avatar_subtitleInProfileViolet=-2130706433
chat_messagePanelCancelInlineBot=-2137088354
checkbox=-12627531
chat_outAudioSeekbarFill=-1
actionBarWhiteSelector=1073741824
chat_botKeyboardButtonBackgroundPressed=-2143333963
player_time=-12627531
chat_outTimeSelectedText=-2130706433
chat_outFileProgressSelected=-12627531
chat_emojiSearchBackground=-1118482
chat_inFileProgressSelected=-1
changephoneinfo_image=-12627531
avatar_backgroundPink=-12627531
chat_inAudioPerfomerText=-1069592139
player_button=-8550769
login_progressOuter=-12627531
avatar_backgroundInProfileOrange=-12627531
chat_inContactNameText=-12627531
chats_menuPhoneCats=-2130706433
chat_outPreviewLine=-1
dialogScrollGlow=-12627531
chat_messagePanelHint=-8550769
location_sendLiveLocationBackground=-769226
windowBackgroundGray=-1118482
chat_inViaBotNameText=-2143333963
chat_outVoiceSeekbar=1627389951
dialogGrayLine=167772160
player_actionBarTitle=-12627531
chat_outFileIcon=-12627531
calls_ratingStar=-8550769
chat_adminText=-2143333963
chat_inFileProgress=-1
dialogIcon=-8550769
chat_emojiPanelEmptyText=-8550769
chat_replyPanelClose=-8550769
chat_emojiPanelBackspace=1621008030
featuredStickers_addButtonPressed=-2143333963
chat_outAudioTitleText=-1
chat_emojiPanelStickerSetNameIcon=-8550769
chat_emojiPanelBackground=-328966
chats_unreadCounter=-12627531
groupcreate_hintText=-8550769
chat_inReplyMediaMessageSelectedText=-1069592139
dialogCheckboxSquareUnchecked=-8550769
avatar_actionBarSelectorOrange=-2130706433
avatar_backgroundInProfileRed=-12627531
chat_emojiPanelNewTrending=-12627531
chat_emojiPanelStickerPackSelector=-12627531
chat_unreadMessagesStartArrowIcon=-12627531
avatar_backgroundActionBarOrange=-12627531
windowBackgroundWhiteBlackText=-12434878
avatar_backgroundActionBarBlue=-12627531
dialogTextLink=-12627531
chat_recordTime=-8550769
windowBackgroundWhiteBlueHeader=-12627531
files_folderIconBackground=-12627531
chat_messagePanelVoiceBackground=-12627531
groupcreate_onlineText=-12627531
divider=83886080
chat_topPanelLine=-12627531
avatar_backgroundViolet=-12627531
dialogTopBackground=-12627531
chat_inReplyMessageText=-12434878
dialogInputField=-8550769
windowBackgroundWhiteInputFieldActivated=-12627531
chat_outInstantSelected=-2130706433
chat_outSentCheck=-2130706433
player_placeholder=-2137088354
chat_outFileSelectedIcon=-12627531
picker_disabledButton=-2137088354
groupcreate_spanBackground=-8812853
dialogButton=-12627531
contextProgressInner1=-1118482
contextProgressInner3=-12434878
chat_inLoaderPhotoIconSelected=-12627531
actionBarDefaultSubtitle=-2130706433
contextProgressInner2=-2130706433
chat_inContactPhoneText=-1069592139
chat_inlineResultIcon=-12627531
dialogLineProgress=-12627531
chats_draft=-12627531
chat_outPreviewInstantText=-1
chat_inMenuSelected=-2143333963
avatar_backgroundOrange=-12627531
avatar_actionBarSelectorGreen=-2130706433
chat_outLocationIcon=-12627531
chat_inLoaderSelected=-12627531
location_liveLocationProgress=-12627531
dialogTextRed=-769226
chat_inBubbleShadow=-16777216
dialogProgressCircle=-12627531
chat_outAudioProgress=-12627531
stickers_menu=-8550769
avatar_subtitleInProfilePink=-2130706433
player_progress=-12627531
chat_inReplyLine=-12627531
dialogBackground=-328966
dialogLineProgressBackground=-2137088354
chat_inReplyNameText=-12627531
chat_gifSaveHintBackground=-12627531
actionBarActionModeDefaultIcon=-1
windowBackgroundWhiteRedText4=-769226
windowBackgroundWhiteRedText3=-769226
windowBackgroundWhiteRedText6=-769226
chat_goDownButtonIcon=-1
windowBackgroundWhiteRedText5=-769226
featuredStickers_delButtonPressed=-2131475658
chat_outAudioSelectedProgress=-12627531
chat_messageTextOut=-1
chat_inInstant=-12627531
groupcreate_cursor=-12627531
avatar_backgroundSaved=-12627531
returnToCallBackground=-1
checkboxSquareUnchecked=-8550769
dialogCheckboxSquareDisabled=-2143333963
chat_fieldOverlayText=-12627531
chat_messagePanelSend=-12627531
switchThumb=-657931
windowBackgroundWhiteRedText2=-769226
chats_nameIcon=-12434878
avatar_backgroundBlue=-12627531
chat_inSentClock=-2143333963
avatar_nameInMessageRed=-12627531
chat_outLoaderPhoto=-12627531
chat_botSwitchToInlineText=-12627531
avatar_backgroundInProfilePink=-12627531
avatar_nameInMessageOrange=-12627531
featuredStickers_unread=-12627531
chats_pinnedIcon=-8550769
chat_replyPanelLine=167772160
avatar_subtitleInProfileOrange=-2130706433
chat_outSentCheckSelected=-2130706433
chat_inVenueInfoSelectedText=-2143333963
dialogTextBlue2=-12627531
dialogTextBlue3=-12627531
avatar_backgroundGroupCreateSpanBlue=-12627531
dialogTextBlue4=-12627531
windowBackgroundWhiteGreenText=-12627531
chat_topPanelMessage=-8550769
chat_emojiPanelIcon=1358954496
chat_emojiPanelTrendingDescription=-8550769
calls_callReceivedGreenIcon=-12627531
chats_pinnedOverlay=-657931
windowBackgroundWhiteInputField=-8550769
avatar_backgroundRed=-12627531
chat_emojiPanelIconSelector=-12627531
chat_inForwardedNameText=-2143333963
chats_sentError=-769226
groupcreate_checkbox=-12627531
chats_actionBackground=-12627531
avatar_nameInMessageGreen=-12627531
chat_outContactNameText=-1
chat_inSiteNameText=-12627531
chat_linkSelectBackground=-2143333963
dialogLinkSelection=-2143333963
windowBackgroundWhiteBlueText=-12627531
avatar_nameInMessageCyan=-12627531
chat_mediaLoaderPhotoIconSelected=-1
chat_inLocationBackground=-12627531
radioBackground=-2137088354
contextProgressOuter1=-12627531
dialogTextGray3=-8550769
chat_inFileIcon=-1
avatar_backgroundActionBarPink=-12627531
dialogTextGray2=-8550769
dialogTextGray4=-8550769
chat_searchPanelIcons=-12627531
windowBackgroundWhiteLinkText=-12627531
chat_inAudioSeekbarSelected=1077891509
chat_outVenueInfoText=-1056964609
chat_outContactPhoneText=-1056964609
chat_inAudioTitleText=-12627531
chat_messageLinkIn=-12627531
chats_menuBackground=-328966
chat_serviceBackground=1610612736
windowBackgroundWhiteGrayLine=-8550769
chats_secretIcon=-12627531
chat_inFileBackground=-12627531
chat_inBubbleSelected=-1056964609
chat_outInstant=-1
chat_outViewsSelected=-2130706433
chat_emojiPanelShadowLine=-1118482
actionBarDefaultSearchPlaceholder=-2130706433
actionBarActionModeDefaultSelector=-16777216
chat_outForwardedNameText=-2130706433
dialogRoundCheckBox=-12627531
chat_emojiPanelTrendingTitle=-12434878
featuredStickers_delButton=-769226
returnToCallText=-12627531
switchThumbChecked=-12627531
windowBackgroundWhite=-328966
chat_outSiteNameText=-1
groupcreate_offlineText=-8550769
chat_inVoiceSeekbarSelected=1077891509
avatar_backgroundCyan=-12627531
dialogTextGray=-8550769
chat_messageLinkOut=-1056964609
chat_emojiPanelStickerSetName=-8550769
dialogRadioBackgroundChecked=-12627531
picker_badge=-12627531
chat_inVenueNameText=-12627531
chat_outFileInfoSelectedText=-1056964609
chats_tabletSelectedOverlay=-1118482
chat_outAudioDurationSelectedText=-2130706433
avatar_actionBarSelectorPink=-2130706433
dialogTextHint=-8550769
chat_topPanelTitle=-12627531
chat_inAudioCacheSeekbar=-2143333963
chat_outContactIcon=-12627531
avatar_subtitleInProfileBlue=-2130706433
featuredStickers_addButton=-12627531
chat_inFileInfoText=-1069592139
chat_inPreviewLine=-12627531
avatar_backgroundGreen=-12627531
profile_creatorIcon=-12627531
avatar_subtitleInProfileGreen=-2130706433
chats_sentCheck=-12627531
chat_outVoiceSeekbarFill=-1
chat_outReplyLine=-1
chat_inAudioSeekbarFill=-12627531
chat_messagePanelIcons=-8550769
inappPlayerTitle=-12434878
chat_inReplyMediaMessageText=-1069592139
progressCircle=-12627531
chat_botKeyboardButtonBackground=-12627531
chat_emojiPanelIconSelected=-12627531
chat_inContactBackground=-12627531
chats_menuItemIcon=-8550769
chat_outVenueInfoSelectedText=-1056964609
wallpaperFileOffset=-1
chat_outVenueNameText=-1
chat_outBubbleShadow=-15064194
checkboxSquareBackground=-12627531
files_folderIcon=-328966
chats_menuCloudBackgroundCats=-2147483648
chat_topPanelClose=-8550769
profile_adminIcon=-2143333963
chats_verifiedBackground=0
chat_inTimeSelectedText=-2143333963
chat_outFileBackgroundSelected=-1
chat_outVoiceSeekbarSelected=1627389951
windowBackgroundWhiteGrayIcon=-8550769
avatar_backgroundActionBarViolet=-12627531
profile_verifiedCheck=-1
chat_mediaTimeBackground=-2147483648
listSelectorSDK21=251658240
chat_outFileNameText=-1
picker_enabledButton=-12627531
avatar_backgroundInProfileViolet=-12627531
avatar_nameInMessagePink=-12627531
windowBackgroundWhiteGrayText=-8550769
musicPicker_buttonBackground=-12627531
avatar_actionBarSelectorViolet=-2130706433
avatar_nameInMessageBlue=-12627531
dialogTextBlack=-12434878
actionBarDefault=-12627531
location_placeLocationBackground=-12627531
profile_actionIcon=-12627531
actionBarDefaultSelector=-2130706433
chats_menuTopShadow=-2147483648
chat_outAudioPerfomerText=-1056964609
sharedMedia_startStopLoadIcon=-12627531
chat_serviceBackgroundSelected=-2147483648
inappPlayerPlayPause=-12627531
chat_inVenueInfoText=-2143333963
chat_replyPanelIcons=-12627531
checkboxSquareDisabled=-2143333963
fastScrollInactive=-8550769
chat_outSentClockSelected=-2130706433
featuredStickers_addedIcon=-12627531
chat_recordedVoicePlayPausePressed=-2130706433
chat_goDownButtonCounter=-12627531
musicPicker_checkbox=-12627531
chat_outFileBackground=-1
chats_name=-12434878
dialogBadgeBackground=-12627531
chat_outBubbleSelected=-1069592139
avatar_backgroundInProfileBlue=-12627531
chat_inFileNameText=-12627531
inappPlayerPerformer=-12434878
chat_inInstantSelected=-2143333963
chat_inLocationIcon=-1
chat_outFileInfoText=-1056964609
groupcreate_checkboxCheck=-328966
chat_unreadMessagesStartBackground=-328966
chat_inLoaderPhoto=-1
chat_inFileInfoSelectedText=-1069592139
chat_wallpaper=-657931
chat_outMenuSelected=-2130706433
fastScrollActive=-12627531
chat_outLoaderPhotoSelected=-12627531
chat_muteIcon=-2130706433
chat_selectedBackground=1077891509
chat_recordedVoiceBackground=-12627531
chat_inAudioDurationText=-2143333963
chat_secretTimeText=-1
groupcreate_sectionText=-8550769
actionBarDefaultSubmenuItem=-12434878
dialogInputFieldActivated=-12627531
login_progressInner=-1118482
chats_actionMessage=-12627531
chat_inLoaderPhotoIcon=-12627531
location_markerX=-2147483648
avatar_actionBarSelectorBlue=-2130706433
chat_addContact=-12627531
player_placeholderBackground=-657931
switchTrackChecked=-2143333963
windowBackgroundWhiteHintText=-8550769
chat_inLoader=-12627531
chat_adminSelectedText=-2143333963
groupcreate_spanText=-1
chat_outPreviewInstantSelectedText=-2130706433
player_actionBarSelector=-2143333963
key_player_progressCachedBackground=-2143333963
chat_outTimeText=-2130706433
chat_outBubble=-12627531
avatar_backgroundActionBarCyan=-12627531
chats_verifiedCheck=-12627531
chat_emojiPanelMasksIconSelected=-12627531
chats_menuItemText=-12434878
chats_message=-9079435
chat_outReplyNameText=-1
chat_outReplyMediaMessageText=-1056964609
chat_textSelectBackground=-8812853
chat_messagePanelVoiceDelete=-8550769
chats_date=-8550769
chat_messagePanelText=-12434878
player_buttonActive=-12627531
chat_outLoaderPhotoIcon=-1
chat_outContactBackground=-1
sharedMedia_linkPlaceholder=-12627531
windowBackgroundWhiteBlueText7=-12627531
windowBackgroundWhiteBlueText6=-12627531
calls_callReceivedRedIcon=-769226
chat_outLocationBackground=-1
windowBackgroundWhiteBlueText3=-12627531
windowBackgroundWhiteBlueText2=-12627531
windowBackgroundWhiteBlueText5=-12627531
windowBackgroundWhiteBlueText4=-12627531
chat_replyPanelMessage=-12434878
stickers_menuSelector=-2147483648
chat_inViewsSelected=-2143333963
windowBackgroundWhiteLinkSelection=1077891509
player_background=-328966
inappPlayerClose=-2137088354
player_actionBarSubtitle=-2143333963
chat_outAudioCacheSeekbar=-2143333963
chats_sentClock=-12627531
chat_inAudioSeekbar=1077891509
avatar_subtitleInProfileRed=-2130706433
avatar_backgroundActionBarRed=-12627531
chat_inPreviewInstantText=-12627531
chat_messagePanelVoiceShadow=-12627531
chat_inViews=-2143333963
chat_outLoaderSelected=-1
dialogButtonSelector=251658240
chats_menuItemCheck=-12627531
player_actionBarItems=-12627531
chat_sentError=-769226
avatar_actionBarSelectorRed=-2130706433
player_progressBackground=1084137118
chat_inAudioDurationSelectedText=-2143333963
windowBackgroundWhiteGrayText2=-8550769
chat_outAudioSeekbarSelected=1627389951
chat_outLoaderPhotoIconSelected=-1
player_actionBarTop=855638016
windowBackgroundWhiteGrayText7=-8550769
windowBackgroundWhiteGrayText8=-8550769
windowBackgroundWhiteGrayText5=-8550769
windowBackgroundWhiteGrayText6=-8550769
windowBackgroundWhiteGrayText3=-8550769
windowBackgroundWhiteGrayText4=-8550769
chat_inTimeText=-2143333963
dialogRadioBackground=-8550769
windowBackgroundWhiteRedText=-769226
chat_outReplyMessageText=-2130706433
chat_recordedVoiceDot=-12627531
chat_recordedVoiceProgress=-2130706433
chat_inLoaderPhotoSelected=-1
chat_inVoiceSeekbarFill=-12627531
graySection=-328966
chat_outAudioSeekbar=1627389951
chats_muteIcon=-8550769
chat_inVoiceSeekbar=1077891509
profile_verifiedBackground=0
chat_outFileProgress=-12627531
chat_outLoader=-1
chats_actionPressedBackground=1073741824
windowBackgroundWhiteGreenText2=-12627531
chat_replyPanelName=-12627531
windowBackgroundWhiteValueText=-12627531
chat_outAudioDurationText=-2130706433
chat_outMenu=-2130706433
avatar_backgroundInProfileGreen=-12627531
chat_goDownButton=-12627531
chats_secretName=-12627531
chat_inMenu=-2143333963
chat_recordVoiceCancel=-12627531
chat_inFileSelectedIcon=-1
chat_outReplyMediaMessageSelectedText=-1056964609
chat_mediaLoaderPhoto=-2147483648
avatar_backgroundInProfileCyan=-12627531
calls_ratingStarSelected=-12627531
chat_reportSpam=-769226
chat_messageTextIn=-12434878
avatar_subtitleInProfileCyan=-2130706433
chat_emojiPanelMasksIcon=-8550769
chats_attachMessage=-12627531
chat_topPanelBackground=-328966
chat_searchPanelText=-12434878
chat_outSentClock=-2130706433
dialogBackgroundGray=-657931

View File

@ -36,6 +36,10 @@ import android.util.LongSparseArray;
import android.util.SparseArray;
import android.widget.Toast;
import androidx.core.content.pm.ShortcutInfoCompat;
import androidx.core.content.pm.ShortcutManagerCompat;
import androidx.core.graphics.drawable.IconCompat;
import org.telegram.SQLite.SQLiteCursor;
import org.telegram.SQLite.SQLiteDatabase;
import org.telegram.SQLite.SQLitePreparedStatement;
@ -71,10 +75,6 @@ import java.util.concurrent.CountDownLatch;
import tw.nekomimi.nekogram.NekoConfig;
import androidx.core.content.pm.ShortcutInfoCompat;
import androidx.core.content.pm.ShortcutManagerCompat;
import androidx.core.graphics.drawable.IconCompat;
@SuppressWarnings("unchecked")
public class MediaDataController extends BaseController {
@ -1019,7 +1019,7 @@ public class MediaDataController extends BaseController {
}
public void loadFeaturedStickers(boolean cache, boolean force) {
/*if (loadingFeaturedStickers) {
if (loadingFeaturedStickers || NekoConfig.disableTrending) {
return;
}
loadingFeaturedStickers = true;
@ -1074,7 +1074,7 @@ public class MediaDataController extends BaseController {
processLoadedFeaturedStickers(null, null, false, (int) (System.currentTimeMillis() / 1000), req.hash);
}
}));
}*/
}
}
private void processLoadedFeaturedStickers(final ArrayList<TLRPC.StickerSetCovered> res, final ArrayList<Long> unreadStickers, final boolean cache, final int date, final int hash) {

View File

@ -4222,7 +4222,7 @@ public class NotificationsController extends BaseController {
msgHeardIntent.putExtra("max_id", max_id);
msgHeardIntent.putExtra("currentAccount", currentAccount);
PendingIntent readPendingIntent = PendingIntent.getBroadcast(ApplicationLoader.applicationContext, internalId, msgHeardIntent, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Action readAction = new NotificationCompat.Action.Builder(R.drawable.deproko_baseline_check_double_24, LocaleController.getString("MarkAsRead", R.string.MarkAsRead), readPendingIntent)
NotificationCompat.Action readAction = new NotificationCompat.Action.Builder(R.drawable.baseline_done_all_24, LocaleController.getString("MarkAsRead", R.string.MarkAsRead), readPendingIntent)
.setSemanticAction(NotificationCompat.Action.SEMANTIC_ACTION_MARK_AS_READ)
.setShowsUserInterface(false)
.build();

View File

@ -1190,7 +1190,7 @@ public class ArticleViewer implements NotificationCenter.NotificationCenterDeleg
builder.addTitle(urlFinal);
builder.addItems(
new String[]{LocaleController.getString("Open", R.string.Open), LocaleController.getString("Copy", R.string.Copy), LocaleController.getString("ShareQRCode", R.string.ShareQRCode)},
new Integer[]{R.drawable.baseline_open_in_browser_24, R.drawable.baseline_content_copy_24,R.drawable.wallet_qr }, (which, text, cell) -> {
new int[]{R.drawable.baseline_open_in_browser_24, R.drawable.baseline_content_copy_24, R.drawable.wallet_qr}, (which, text, cell) -> {
if (parentActivity == null) return Unit.INSTANCE;
if (which == 0 || which == 2) {
int index;

View File

@ -43,6 +43,9 @@ import org.telegram.ui.Components.AnimatedFileDrawable;
import org.telegram.ui.Components.MediaActionDrawable;
import org.telegram.ui.Components.RadialProgress2;
import kotlin.Unit;
import tw.nekomimi.nekogram.BottomBuilder;
public class AvatarPreviewer {
private static AvatarPreviewer INSTANCE;
@ -450,18 +453,20 @@ public class AvatarPreviewer {
}
private void showBottomSheet() {
final CharSequence[] labels = new CharSequence[menuItems.length];
final String[] labels = new String[menuItems.length];
final int[] icons = new int[menuItems.length];
for (int i = 0; i < menuItems.length; i++) {
labels[i] = LocaleController.getString(menuItems[i].labelKey, menuItems[i].labelResId);
icons[i] = menuItems[i].iconResId;
}
visibleSheet = new BottomSheet.Builder(getContext())
.setItems(labels, icons, (dialog, which) -> {
callback.onMenuClick(menuItems[which]);
setShowing(false);
})
.setDimBehind(false);
BottomBuilder visibleSheetBuilder = new BottomBuilder(getContext());
visibleSheetBuilder.addItems(labels, icons, (which, text, cell) -> {
callback.onMenuClick(menuItems[which]);
setShowing(false);
return Unit.INSTANCE;
});
visibleSheet = visibleSheetBuilder.create();
visibleSheet.setDimBehind(false);
visibleSheet.setOnDismissListener(dialog -> {
visibleSheet = null;
setShowing(false);

View File

@ -66,9 +66,6 @@ import org.telegram.ui.Components.voip.VoIPHelper;
import java.util.ArrayList;
import java.util.Iterator;
import kotlin.Unit;
import tw.nekomimi.nekogram.BottomBuilder;
public class CallLogActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate {
private ListAdapter listViewAdapter;
@ -502,18 +499,18 @@ public class CallLogActivity extends BaseFragment implements NotificationCenter.
private void createActionMode() {
if (actionBar.actionModeIsExist(null)) {
return;
}
final ActionBarMenu actionMode = actionBar.createActionMode();
}
final ActionBarMenu actionMode = actionBar.createActionMode();
selectedDialogsCountTextView = new NumberTextView(actionMode.getContext());
selectedDialogsCountTextView.setTextSize(18);
selectedDialogsCountTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
selectedDialogsCountTextView.setTextColor(Theme.getColor(Theme.key_actionBarActionModeDefaultIcon));
actionMode.addView(selectedDialogsCountTextView, LayoutHelper.createLinear(0, LayoutHelper.MATCH_PARENT, 1.0f, 72, 0, 0, 0));
selectedDialogsCountTextView.setOnTouchListener((v, event) -> true);
selectedDialogsCountTextView = new NumberTextView(actionMode.getContext());
selectedDialogsCountTextView.setTextSize(18);
selectedDialogsCountTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
selectedDialogsCountTextView.setTextColor(Theme.getColor(Theme.key_actionBarActionModeDefaultIcon));
actionMode.addView(selectedDialogsCountTextView, LayoutHelper.createLinear(0, LayoutHelper.MATCH_PARENT, 1.0f, 72, 0, 0, 0));
selectedDialogsCountTextView.setOnTouchListener((v, event) -> true);
actionModeViews.add(actionMode.addItemWithWidth(delete, R.drawable.msg_delete, AndroidUtilities.dp(54), LocaleController.getString("Delete", R.string.Delete)));
}
actionModeViews.add(actionMode.addItemWithWidth(delete, R.drawable.baseline_delete_24, AndroidUtilities.dp(54), LocaleController.getString("Delete", R.string.Delete)));
}
private boolean addOrRemoveSelectedDialog(ArrayList<TLRPC.Message> messages, CustomCell cell) {
if (messages.isEmpty()) {

View File

@ -84,7 +84,6 @@ import org.telegram.ui.ActionBar.ActionBarMenuItem;
import org.telegram.ui.ActionBar.AlertDialog;
import org.telegram.ui.ActionBar.BackDrawable;
import org.telegram.ui.ActionBar.BaseFragment;
import org.telegram.ui.ActionBar.BottomSheet;
import org.telegram.ui.ActionBar.SimpleTextView;
import org.telegram.ui.ActionBar.Theme;
import org.telegram.ui.ActionBar.ThemeDescription;
@ -2030,7 +2029,7 @@ public class ChannelAdminLogActivity extends BaseFragment implements Notificatio
builder.addTitle(urlFinal);
builder.addItems(
new String[]{LocaleController.getString("Open", R.string.Open), LocaleController.getString("Copy", R.string.Copy), LocaleController.getString("ShareQRCode", R.string.ShareQRCode)},
new Integer[]{R.drawable.baseline_open_in_browser_24, R.drawable.baseline_content_copy_24,R.drawable.wallet_qr }, (which, text, __) -> {
new int[]{R.drawable.baseline_open_in_browser_24, R.drawable.baseline_content_copy_24, R.drawable.wallet_qr}, (which, text, __) -> {
if (which == 0 || which == 2) {
if (which == 0) {
Browser.openUrl(getParentActivity(), urlFinal);

View File

@ -231,7 +231,6 @@ import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.lang.reflect.Array;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.Arrays;
@ -245,7 +244,6 @@ import java.util.regex.Pattern;
import cn.hutool.core.util.StrUtil;
import kotlin.Unit;
import kotlin.text.StringsKt;
import tw.nekomimi.nekogram.BottomBuilder;
import tw.nekomimi.nekogram.MessageDetailsActivity;
import tw.nekomimi.nekogram.NekoConfig;
@ -18749,12 +18747,12 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
if (chatMode != MODE_SCHEDULED && !selectedObject.needDrawBluredPreview() && !selectedObject.isLiveLocation() && selectedObject.type != 16) {
items.add(LocaleController.getString("Forward", R.string.Forward));
options.add(2);
icons.add(R.drawable.msg_forward);
icons.add(R.drawable.baseline_forward_24);
}
if (!selectedObject.needDrawBluredPreview() && !selectedObject.isLiveLocation() && selectedObject.type != 16) {
items.add(LocaleController.getString("NoQuoteForward", R.string.NoQuoteForward));
options.add(95);
icons.add(R.drawable.msg_forward_noquote);
icons.add(R.drawable.baseline_forward_24);
}
if (chatMode != MODE_SCHEDULED) {
if (!UserObject.isUserSelf(currentUser) && NekoConfig.showAddToSavedMessages) {
@ -21366,15 +21364,15 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
builder.addTitle(str);
builder.addItems(
new String[]{LocaleController.getString("Open", R.string.Open), LocaleController.getString("Copy", R.string.Copy), str.startsWith("#") || str.startsWith("$") ? null : LocaleController.getString("ShareQRCode", R.string.ShareQRCode)},
new Integer[]{R.drawable.baseline_open_in_browser_24, R.drawable.baseline_content_copy_24,R.drawable.wallet_qr }, (which, text, __) -> {
new int[]{R.drawable.baseline_open_in_browser_24, R.drawable.baseline_content_copy_24, R.drawable.wallet_qr}, (which, text, __) -> {
if (which == 0 || which == 2) {
openClickableLink(str, which == 2);
} else if (which == 1) {
AndroidUtilities.addToClipboard(str);
}
} else if (which == 1) {
AndroidUtilities.addToClipboard(str);
}
return Unit.INSTANCE;
});
});
showDialog(builder.create());
} else {
openClickableLink(str, false);
@ -21387,7 +21385,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
builder.addTitle(urlFinal);
builder.addItems(
new String[]{LocaleController.getString("Open", R.string.Open), LocaleController.getString("Copy", R.string.Copy), LocaleController.getString("ShareQRCode", R.string.ShareQRCode)},
new Integer[]{R.drawable.baseline_open_in_browser_24, R.drawable.baseline_content_copy_24,R.drawable.wallet_qr }, (which, text, __) -> {
new int[]{R.drawable.baseline_open_in_browser_24, R.drawable.baseline_content_copy_24, R.drawable.wallet_qr}, (which, text, __) -> {
if (which == 0 || which == 2) {
if (which == 0) {
if (AndroidUtilities.shouldShowUrlInAlert(urlFinal)) {
@ -23533,7 +23531,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
themeDescriptions.add(new ThemeDescription(chatActivityEnterView != null ? chatActivityEnterView.getEmojiView() : chatActivityEnterView, 0, new Class[]{EmojiView.class}, null, null, null, selectedBackgroundDelegate, Theme.key_chat_emojiPanelTrendingDescription));
themeDescriptions.add(new ThemeDescription(chatActivityEnterView != null ? chatActivityEnterView.getEmojiView() : chatActivityEnterView, 0, new Class[]{EmojiView.class}, null, null, null, selectedBackgroundDelegate, Theme.key_chat_emojiPanelBadgeText));
themeDescriptions.add(new ThemeDescription(chatActivityEnterView != null ? chatActivityEnterView.getEmojiView() : chatActivityEnterView, 0, new Class[]{EmojiView.class}, null, null, null, selectedBackgroundDelegate, Theme.key_chat_emojiPanelBadgeBackground));
themeDescriptions.add(new ThemeDescription(chatActivityEnterView != null ? chatActivityEnterView.getEmojiView() : chatActivityEnterView, 0, new Class[]{EmojiView.class}, null, null, null, selectedBackgroundDelegate, Theme.key_chat_emojiBottomPanelIcon));
themeDescriptions.add(new ThemeDescription(chatActivityEnterView != null ? chatActivityEnterView.getEmojiView() : chatActivityEnterView, 0, new Class[]{EmojiView.class}, null, null, null, selectedBackgroundDelegate, Theme.key_chat_messagePanelIcons));
themeDescriptions.add(new ThemeDescription(chatActivityEnterView != null ? chatActivityEnterView.getEmojiView() : chatActivityEnterView, 0, new Class[]{EmojiView.class}, null, null, null, selectedBackgroundDelegate, Theme.key_chat_emojiSearchIcon));
themeDescriptions.add(new ThemeDescription(chatActivityEnterView != null ? chatActivityEnterView.getEmojiView() : chatActivityEnterView, 0, new Class[]{EmojiView.class}, null, null, null, selectedBackgroundDelegate, Theme.key_chat_emojiPanelStickerSetNameHighlight));
themeDescriptions.add(new ThemeDescription(chatActivityEnterView != null ? chatActivityEnterView.getEmojiView() : chatActivityEnterView, 0, new Class[]{EmojiView.class}, null, null, null, selectedBackgroundDelegate, Theme.key_chat_emojiPanelStickerPackSelectorLine));

View File

@ -26,7 +26,6 @@ import android.graphics.drawable.GradientDrawable;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Vibrator;
import android.provider.Settings;
import android.text.Html;
import android.text.InputType;
@ -109,6 +108,7 @@ import java.util.concurrent.CountDownLatch;
import kotlin.Unit;
import tw.nekomimi.nekogram.BottomBuilder;
import tw.nekomimi.nekogram.NekoConfig;
import tw.nekomimi.nekogram.utils.AlertUtil;
import tw.nekomimi.nekogram.utils.VibrateUtil;
public class AlertsCreator {
@ -121,7 +121,7 @@ public class AlertsCreator {
TLRPC.InputPeer peer;
if (request instanceof TLRPC.TL_messages_initHistoryImport) {
peer = ((TLRPC.TL_messages_initHistoryImport) request).peer;
} else if (request instanceof TLRPC.TL_messages_startHistoryImport) {
} else if (request instanceof TLRPC.TL_messages_startHistoryImport) {
peer = ((TLRPC.TL_messages_startHistoryImport) request).peer;
} else {
peer = null;
@ -2385,31 +2385,36 @@ public class AlertsCreator {
return null;
}
BottomSheet.Builder builder = new BottomSheet.Builder(fragment.getParentActivity());
builder.setTitle(LocaleController.getString("Notifications", R.string.Notifications), true);
CharSequence[] items = new CharSequence[]{
BottomBuilder builder = new BottomBuilder(fragment.getParentActivity());
builder.addTitle(LocaleController.getString("Notifications", R.string.Notifications), true);
String[] items = new String[]{
LocaleController.formatString("MuteFor", R.string.MuteFor, LocaleController.formatPluralString("Hours", 1)),
LocaleController.formatString("MuteFor", R.string.MuteFor, LocaleController.formatPluralString("Hours", 8)),
LocaleController.formatString("MuteFor", R.string.MuteFor, LocaleController.formatPluralString("Days", 2)),
LocaleController.getString("MuteDisable", R.string.MuteDisable)
};
builder.setItems(items, (dialogInterface, i) -> {
int setting;
if (i == 0) {
setting = NotificationsController.SETTING_MUTE_HOUR;
} else if (i == 1) {
setting = NotificationsController.SETTING_MUTE_8_HOURS;
} else if (i == 2) {
setting = NotificationsController.SETTING_MUTE_2_DAYS;
} else {
setting = NotificationsController.SETTING_MUTE_FOREVER;
}
NotificationsController.getInstance(UserConfig.selectedAccount).setDialogNotificationsSettings(dialog_id, setting);
if (BulletinFactory.canShowBulletin(fragment)) {
BulletinFactory.createMuteBulletin(fragment, setting).show();
}
}
);
builder.addItems(items, new int[]{
R.drawable.baseline_notifications_paused_24,
R.drawable.baseline_notifications_paused_24,
R.drawable.baseline_notifications_paused_24,
R.drawable.baseline_notifications_paused_24
}, (i, text, cell) -> {
int setting;
if (i == 0) {
setting = NotificationsController.SETTING_MUTE_HOUR;
} else if (i == 1) {
setting = NotificationsController.SETTING_MUTE_8_HOURS;
} else if (i == 2) {
setting = NotificationsController.SETTING_MUTE_2_DAYS;
} else {
setting = NotificationsController.SETTING_MUTE_FOREVER;
}
NotificationsController.getInstance(UserConfig.selectedAccount).setDialogNotificationsSettings(dialog_id, setting);
if (BulletinFactory.canShowBulletin(fragment)) {
BulletinFactory.createMuteBulletin(fragment, setting).show();
}
return Unit.INSTANCE;
});
return builder.create();
}
@ -2418,11 +2423,11 @@ public class AlertsCreator {
return;
}
BottomSheet.Builder builder = new BottomSheet.Builder(context);
builder.setTitle(LocaleController.getString("ReportChat", R.string.ReportChat), true);
CharSequence[] items;
BottomBuilder builder = new BottomBuilder(context);
builder.addTitle(LocaleController.getString("ReportChat", R.string.ReportChat), true);
String[] items;
if (messageId != 0) {
items = new CharSequence[]{
items = new String[]{
LocaleController.getString("ReportChatSpam", R.string.ReportChatSpam),
LocaleController.getString("ReportChatViolence", R.string.ReportChatViolence),
LocaleController.getString("ReportChatChild", R.string.ReportChatChild),
@ -2430,7 +2435,7 @@ public class AlertsCreator {
LocaleController.getString("ReportChatOther", R.string.ReportChatOther)
};
} else {
items = new CharSequence[]{
items = new String[]{
LocaleController.getString("ReportChatSpam", R.string.ReportChatSpam),
LocaleController.getString("ReportChatFakeAccount", R.string.ReportChatFakeAccount),
LocaleController.getString("ReportChatViolence", R.string.ReportChatViolence),
@ -2439,13 +2444,13 @@ public class AlertsCreator {
LocaleController.getString("ReportChatOther", R.string.ReportChatOther)
};
}
builder.setItems(items, (dialogInterface, i) -> {
builder.addItems(items, null, (i, text, cell) -> {
if (i == 4) {
Bundle args = new Bundle();
args.putLong("dialog_id", dialog_id);
args.putLong("message_id", messageId);
parentFragment.presentFragment(new ReportOtherActivity(args));
return;
return Unit.INSTANCE;
}
TLObject req;
TLRPC.InputPeer peer = MessagesController.getInstance(UserConfig.selectedAccount).getInputPeer((int) dialog_id);
@ -2479,10 +2484,10 @@ public class AlertsCreator {
}
req = request;
}
ConnectionsManager.getInstance(UserConfig.selectedAccount).sendRequest(req, (response, error) -> {
});
ConnectionsManager.getInstance(UserConfig.selectedAccount).sendRequest(req, (response, error) -> AlertUtil.showToast(error));
Toast.makeText(context, LocaleController.getString("ReportChatSent", R.string.ReportChatSent), Toast.LENGTH_SHORT).show();
return Unit.INSTANCE;
}
);
BottomSheet sheet = builder.create();
@ -3026,7 +3031,7 @@ public class AlertsCreator {
background.setBackground(new BitmapDrawable(SvgHelper.getBitmap(svg, AndroidUtilities.dp(320), AndroidUtilities.dp(320 * aspectRatio), false)));
frameLayout.addView(background, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, 0, -1, -1, -1, -1));
frameLayout.addView(button, LayoutHelper.createFrame(117,117));
frameLayout.addView(button, LayoutHelper.createFrame(117, 117));
builder.setTopView(frameLayout);
builder.setTitle(LocaleController.getString("PermissionDrawAboveOtherAppsGroupCallTitle", R.string.PermissionDrawAboveOtherAppsGroupCallTitle));

View File

@ -1012,8 +1012,8 @@ public class AudioPlayerAlert extends BottomSheet implements NotificationCenter.
optionsButton.setBackgroundDrawable(Theme.createSelectorDrawable(Theme.getColor(Theme.key_listSelector), 1, AndroidUtilities.dp(18)));
}
bottomView.addView(optionsButton, LayoutHelper.createFrame(48, 48, Gravity.LEFT | Gravity.TOP));
optionsButton.addSubItem(1, R.drawable.msg_forward, LocaleController.getString("Forward", R.string.Forward));
optionsButton.addSubItem(2, R.drawable.msg_shareout, LocaleController.getString("ShareFile", R.string.ShareFile));
optionsButton.addSubItem(1, R.drawable.baseline_forward_24, LocaleController.getString("Forward", R.string.Forward));
optionsButton.addSubItem(2, R.drawable.baseline_share_24, LocaleController.getString("ShareFile", R.string.ShareFile));
optionsButton.addSubItem(5, R.drawable.msg_download, LocaleController.getString("SaveToMusic", R.string.SaveToMusic));
optionsButton.addSubItem(4, R.drawable.msg_message, LocaleController.getString("ShowInChat", R.string.ShowInChat));
optionsButton.setShowedFromBottom(true);

View File

@ -28,22 +28,10 @@ import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.graphics.drawable.ShapeDrawable;
import android.os.Build;
import androidx.annotation.IntDef;
import androidx.annotation.MainThread;
import androidx.annotation.NonNull;
import androidx.core.view.ViewCompat;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearSmoothScroller;
import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.SimpleItemAnimator;
import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;
import android.text.Editable;
import android.text.SpannableStringBuilder;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.util.Log;
import android.util.LongSparseArray;
import android.util.SparseArray;
import android.util.SparseIntArray;
@ -66,19 +54,30 @@ import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.TextView;
import androidx.annotation.IntDef;
import androidx.annotation.MainThread;
import androidx.annotation.NonNull;
import androidx.core.view.ViewCompat;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearSmoothScroller;
import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.SimpleItemAnimator;
import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;
import org.telegram.messenger.AndroidUtilities;
import org.telegram.messenger.ChatObject;
import org.telegram.messenger.DocumentObject;
import org.telegram.messenger.MediaDataController;
import org.telegram.messenger.Emoji;
import org.telegram.messenger.EmojiData;
import org.telegram.messenger.FileLoader;
import org.telegram.messenger.FileLog;
import org.telegram.messenger.ImageReceiver;
import org.telegram.messenger.LocaleController;
import org.telegram.messenger.MediaDataController;
import org.telegram.messenger.MessagesController;
import org.telegram.messenger.MessagesStorage;
import org.telegram.messenger.NotificationCenter;
import org.telegram.messenger.FileLog;
import org.telegram.messenger.R;
import org.telegram.messenger.SvgHelper;
import org.telegram.messenger.UserConfig;
@ -323,8 +322,11 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific
public interface DragListener {
void onDragStart();
void onDragEnd(float velocity);
void onDragCancel();
void onDrag(int offset);
}
@ -386,6 +388,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific
};
private static final Field superListenerField;
static {
Field f = null;
try {
@ -999,43 +1002,45 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific
public EmojiView(boolean needStickers, boolean needGif, final Context context, boolean needSearch, final TLRPC.ChatFull chatFull) {
super(context);
int color = Theme.getColor(Theme.key_chat_emojiBottomPanelIcon);
int color = Theme.getColor(Theme.key_chat_messagePanelIcons);
color = Color.argb(30, Color.red(color), Color.green(color), Color.blue(color));
searchFieldHeight = AndroidUtilities.dp(64);
needEmojiSearch = needSearch;
// TODO: replace with baseline icons
tabIcons = new Drawable[]{
Theme.createEmojiIconSelectorDrawable(context, R.drawable.smiles_tab_smiles, Theme.getColor(Theme.key_chat_emojiBottomPanelIcon), Theme.getColor(Theme.key_chat_emojiPanelIconSelected)),
Theme.createEmojiIconSelectorDrawable(context, R.drawable.smiles_tab_gif, Theme.getColor(Theme.key_chat_emojiBottomPanelIcon), Theme.getColor(Theme.key_chat_emojiPanelIconSelected)),
Theme.createEmojiIconSelectorDrawable(context, R.drawable.smiles_tab_stickers, Theme.getColor(Theme.key_chat_emojiBottomPanelIcon), Theme.getColor(Theme.key_chat_emojiPanelIconSelected))
Theme.createEmojiIconSelectorDrawable(context, R.drawable.baseline_emoticon_outline_24, Theme.getColor(Theme.key_chat_messagePanelIcons), Theme.getColor(Theme.key_chat_emojiPanelIconSelected)),
Theme.createEmojiIconSelectorDrawable(context, R.drawable.deproko_baseline_gif_24, Theme.getColor(Theme.key_chat_messagePanelIcons), Theme.getColor(Theme.key_chat_emojiPanelIconSelected)),
Theme.createEmojiIconSelectorDrawable(context, R.drawable.msg_sticker, Theme.getColor(Theme.key_chat_messagePanelIcons), Theme.getColor(Theme.key_chat_emojiPanelIconSelected))
};
emojiIcons = new Drawable[]{
Theme.createEmojiIconSelectorDrawable(context, R.drawable.smiles_panel_recent, Theme.getColor(Theme.key_chat_emojiPanelIcon), Theme.getColor(Theme.key_chat_emojiPanelIconSelected)),
Theme.createEmojiIconSelectorDrawable(context, R.drawable.smiles_panel_smiles, Theme.getColor(Theme.key_chat_emojiPanelIcon), Theme.getColor(Theme.key_chat_emojiPanelIconSelected)),
Theme.createEmojiIconSelectorDrawable(context, R.drawable.smiles_panel_cat, Theme.getColor(Theme.key_chat_emojiPanelIcon), Theme.getColor(Theme.key_chat_emojiPanelIconSelected)),
Theme.createEmojiIconSelectorDrawable(context, R.drawable.smiles_panel_food, Theme.getColor(Theme.key_chat_emojiPanelIcon), Theme.getColor(Theme.key_chat_emojiPanelIconSelected)),
Theme.createEmojiIconSelectorDrawable(context, R.drawable.smiles_panel_activities, Theme.getColor(Theme.key_chat_emojiPanelIcon), Theme.getColor(Theme.key_chat_emojiPanelIconSelected)),
Theme.createEmojiIconSelectorDrawable(context, R.drawable.smiles_panel_travel, Theme.getColor(Theme.key_chat_emojiPanelIcon), Theme.getColor(Theme.key_chat_emojiPanelIconSelected)),
Theme.createEmojiIconSelectorDrawable(context, R.drawable.smiles_panel_objects, Theme.getColor(Theme.key_chat_emojiPanelIcon), Theme.getColor(Theme.key_chat_emojiPanelIconSelected)),
Theme.createEmojiIconSelectorDrawable(context, R.drawable.smiles_panel_other, Theme.getColor(Theme.key_chat_emojiPanelIcon), Theme.getColor(Theme.key_chat_emojiPanelIconSelected)),
Theme.createEmojiIconSelectorDrawable(context, R.drawable.smiles_panel_flags, Theme.getColor(Theme.key_chat_emojiPanelIcon), Theme.getColor(Theme.key_chat_emojiPanelIconSelected)),
Theme.createEmojiIconSelectorDrawable(context, R.drawable.smiles_panel_recent, Theme.getColor(Theme.key_chat_messagePanelIcons), Theme.getColor(Theme.key_chat_emojiPanelIconSelected)),
Theme.createEmojiIconSelectorDrawable(context, R.drawable.smiles_panel_smiles, Theme.getColor(Theme.key_chat_messagePanelIcons), Theme.getColor(Theme.key_chat_emojiPanelIconSelected)),
Theme.createEmojiIconSelectorDrawable(context, R.drawable.smiles_panel_cat, Theme.getColor(Theme.key_chat_messagePanelIcons), Theme.getColor(Theme.key_chat_emojiPanelIconSelected)),
Theme.createEmojiIconSelectorDrawable(context, R.drawable.smiles_panel_food, Theme.getColor(Theme.key_chat_messagePanelIcons), Theme.getColor(Theme.key_chat_emojiPanelIconSelected)),
Theme.createEmojiIconSelectorDrawable(context, R.drawable.smiles_panel_activities, Theme.getColor(Theme.key_chat_messagePanelIcons), Theme.getColor(Theme.key_chat_emojiPanelIconSelected)),
Theme.createEmojiIconSelectorDrawable(context, R.drawable.smiles_panel_travel, Theme.getColor(Theme.key_chat_messagePanelIcons), Theme.getColor(Theme.key_chat_emojiPanelIconSelected)),
Theme.createEmojiIconSelectorDrawable(context, R.drawable.smiles_panel_objects, Theme.getColor(Theme.key_chat_messagePanelIcons), Theme.getColor(Theme.key_chat_emojiPanelIconSelected)),
Theme.createEmojiIconSelectorDrawable(context, R.drawable.smiles_panel_other, Theme.getColor(Theme.key_chat_messagePanelIcons), Theme.getColor(Theme.key_chat_emojiPanelIconSelected)),
Theme.createEmojiIconSelectorDrawable(context, R.drawable.smiles_panel_flags, Theme.getColor(Theme.key_chat_messagePanelIcons), Theme.getColor(Theme.key_chat_emojiPanelIconSelected)),
};
stickerIcons = new Drawable[]{
Theme.createEmojiIconSelectorDrawable(context, R.drawable.stickers_recent, Theme.getColor(Theme.key_chat_emojiBottomPanelIcon), Theme.getColor(Theme.key_chat_emojiPanelIconSelected)),
Theme.createEmojiIconSelectorDrawable(context, R.drawable.stickers_favorites, Theme.getColor(Theme.key_chat_emojiBottomPanelIcon), Theme.getColor(Theme.key_chat_emojiPanelIconSelected)),
Theme.createEmojiIconSelectorDrawable(context, R.drawable.stickers_trending3, Theme.getColor(Theme.key_chat_emojiBottomPanelIcon), Theme.getColor(Theme.key_chat_emojiPanelIconSelected)),
Theme.createEmojiIconSelectorDrawable(context, R.drawable.stickers_recent, Theme.getColor(Theme.key_chat_messagePanelIcons), Theme.getColor(Theme.key_chat_emojiPanelIconSelected)),
Theme.createEmojiIconSelectorDrawable(context, R.drawable.stickers_favorites, Theme.getColor(Theme.key_chat_messagePanelIcons), Theme.getColor(Theme.key_chat_emojiPanelIconSelected)),
Theme.createEmojiIconSelectorDrawable(context, R.drawable.stickers_trending3, Theme.getColor(Theme.key_chat_messagePanelIcons), Theme.getColor(Theme.key_chat_emojiPanelIconSelected)),
new LayerDrawable(new Drawable[]{
Theme.createEmojiIconSelectorDrawable(context, R.drawable.stickers_trending1, Theme.getColor(Theme.key_chat_emojiBottomPanelIcon), Theme.getColor(Theme.key_chat_emojiPanelIconSelected)),
Theme.createEmojiIconSelectorDrawable(context, R.drawable.stickers_trending1, Theme.getColor(Theme.key_chat_messagePanelIcons), Theme.getColor(Theme.key_chat_emojiPanelIconSelected)),
Theme.createEmojiIconSelectorDrawable(context, R.drawable.stickers_trending2, Theme.getColor(Theme.key_chat_emojiPanelStickerPackSelectorLine), Theme.getColor(Theme.key_chat_emojiPanelStickerPackSelectorLine))
})
};
gifIcons = new Drawable[]{
Theme.createEmojiIconSelectorDrawable(context, R.drawable.stickers_recent, Theme.getColor(Theme.key_chat_emojiBottomPanelIcon), Theme.getColor(Theme.key_chat_emojiPanelIconSelected)),
Theme.createEmojiIconSelectorDrawable(context, R.drawable.stickers_gifs_trending, Theme.getColor(Theme.key_chat_emojiBottomPanelIcon), Theme.getColor(Theme.key_chat_emojiPanelIconSelected)),
Theme.createEmojiIconSelectorDrawable(context, R.drawable.stickers_recent, Theme.getColor(Theme.key_chat_messagePanelIcons), Theme.getColor(Theme.key_chat_emojiPanelIconSelected)),
Theme.createEmojiIconSelectorDrawable(context, R.drawable.stickers_gifs_trending, Theme.getColor(Theme.key_chat_messagePanelIcons), Theme.getColor(Theme.key_chat_emojiPanelIconSelected)),
};
emojiTitles = new String[]{
@ -1364,7 +1369,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific
emojiTabs.setShouldExpand(true);
emojiTabs.setIndicatorHeight(-1);
emojiTabs.setUnderlineHeight(-1);
emojiTabs.setBackgroundColor(Theme.getColor(Theme.key_chat_emojiPanelBackground));
emojiTabs.setBackgroundColor(Theme.getColor(Theme.key_actionBarDefaultSubmenuBackground));
emojiContainer.addView(emojiTabs, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 38));
emojiTabs.setDelegate(new ScrollSlidingTabStrip.ScrollSlidingTabStripDelegate() {
@Override
@ -1509,7 +1514,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific
gifTabs.setUnderlineHeight(AndroidUtilities.getShadowHeight());
gifTabs.setIndicatorColor(Theme.getColor(Theme.key_chat_emojiPanelStickerPackSelectorLine));
gifTabs.setUnderlineColor(Theme.getColor(Theme.key_chat_emojiPanelShadowLine));
gifTabs.setBackgroundColor(Theme.getColor(Theme.key_chat_emojiPanelBackground));
gifTabs.setBackgroundColor(Theme.getColor(Theme.key_actionBarDefaultSubmenuBackground));
gifContainer.addView(gifTabs, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.LEFT | Gravity.TOP));
updateGifTabs();
@ -1653,7 +1658,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific
stickersTab.setUnderlineHeight(AndroidUtilities.getShadowHeight());
stickersTab.setIndicatorColor(Theme.getColor(Theme.key_chat_emojiPanelStickerPackSelectorLine));
stickersTab.setUnderlineColor(Theme.getColor(Theme.key_chat_emojiPanelShadowLine));
stickersTab.setBackgroundColor(Theme.getColor(Theme.key_chat_emojiPanelBackground));
stickersTab.setBackgroundColor(Theme.getColor(Theme.key_actionBarDefaultSubmenuBackground));
stickersContainer.addView(stickersTab, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.LEFT | Gravity.TOP));
updateStickerTabs();
stickersTab.setDelegate(page -> {
@ -1796,7 +1801,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific
}
};
backspaceButton.setImageResource(R.drawable.smiles_tab_clear);
backspaceButton.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_chat_emojiPanelBackspace), PorterDuff.Mode.SRC_IN));
backspaceButton.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_chat_messagePanelIcons), PorterDuff.Mode.SRC_IN));
backspaceButton.setScaleType(ImageView.ScaleType.CENTER);
backspaceButton.setContentDescription(LocaleController.getString("AccDescrBackspace", R.string.AccDescrBackspace));
backspaceButton.setFocusable(true);
@ -1833,7 +1838,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific
stickerSettingsButton = new ImageView(context);
stickerSettingsButton.setImageResource(R.drawable.smiles_tab_settings);
stickerSettingsButton.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_chat_emojiPanelBackspace), PorterDuff.Mode.SRC_IN));
stickerSettingsButton.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_chat_messagePanelIcons), PorterDuff.Mode.SRC_IN));
stickerSettingsButton.setScaleType(ImageView.ScaleType.CENTER);
stickerSettingsButton.setFocusable(true);
if (Build.VERSION.SDK_INT >= 21) {
@ -1920,7 +1925,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific
searchButton = new ImageView(context);
searchButton.setImageResource(R.drawable.smiles_tab_search);
searchButton.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_chat_emojiPanelBackspace), PorterDuff.Mode.SRC_IN));
searchButton.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_chat_messagePanelIcons), PorterDuff.Mode.SRC_IN));
searchButton.setScaleType(ImageView.ScaleType.CENTER);
searchButton.setContentDescription(LocaleController.getString("Search", R.string.Search));
searchButton.setFocusable(true);
@ -2052,7 +2057,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific
if (parent != null) {
float y = getY() - parent.getHeight();
if (getLayoutParams().height > 0) {
y += getLayoutParams().height;
y += getLayoutParams().height;
} else {
y += getMeasuredHeight();
}
@ -2628,9 +2633,12 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific
private ScrollSlidingTabStrip getTabsForType(@Type int type) {
switch (type) {
case Type.STICKERS: return stickersTab;
case Type.EMOJIS: return emojiTabs;
case Type.GIFS: return gifTabs;
case Type.STICKERS:
return stickersTab;
case Type.EMOJIS:
return emojiTabs;
case Type.GIFS:
return gifTabs;
default:
throw new IllegalArgumentException("Unexpected argument: " + type);
}
@ -2638,9 +2646,12 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific
private RecyclerListView getListViewForType(@Type int type) {
switch (type) {
case Type.STICKERS: return stickersGridView;
case Type.EMOJIS: return emojiGridView;
case Type.GIFS: return gifGridView;
case Type.STICKERS:
return stickersGridView;
case Type.EMOJIS:
return emojiGridView;
case Type.GIFS:
return gifGridView;
default:
throw new IllegalArgumentException("Unexpected argument: " + type);
}
@ -2648,9 +2659,12 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific
private GridLayoutManager getLayoutManagerForType(@Type int type) {
switch (type) {
case Type.STICKERS: return stickersLayoutManager;
case Type.EMOJIS: return emojiLayoutManager;
case Type.GIFS: return gifLayoutManager;
case Type.STICKERS:
return stickersLayoutManager;
case Type.EMOJIS:
return emojiLayoutManager;
case Type.GIFS:
return gifLayoutManager;
default:
throw new IllegalArgumentException("Unexpected argument: " + type);
}
@ -2658,9 +2672,12 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific
private SearchField getSearchFieldForType(@Type int type) {
switch (type) {
case Type.STICKERS: return stickersSearchField;
case Type.EMOJIS: return emojiSearchField;
case Type.GIFS: return gifSearchField;
case Type.STICKERS:
return stickersSearchField;
case Type.EMOJIS:
return emojiSearchField;
case Type.GIFS:
return gifSearchField;
default:
throw new IllegalArgumentException("Unexpected argument: " + type);
}
@ -3039,8 +3056,10 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific
gifTabs.addIconTab(0, gifIcons[0]).setContentDescription(LocaleController.getString("RecentStickers", R.string.RecentStickers));
}
gifTrendingTabNum = gifTabsCount++;
gifTabs.addIconTab(1, gifIcons[1]).setContentDescription(LocaleController.getString("FeaturedGifs", R.string.FeaturedGifs));
if (!NekoConfig.disableTrending) {
gifTrendingTabNum = gifTabsCount++;
gifTabs.addIconTab(1, gifIcons[1]).setContentDescription(LocaleController.getString("FeaturedGifs", R.string.FeaturedGifs));
}
gifFirstEmojiTabNum = gifTabsCount;
final int hPadding = AndroidUtilities.dp(13);
@ -3114,7 +3133,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific
} else {
setBackgroundColor(Theme.getColor(Theme.key_chat_emojiPanelBackground));
if (needEmojiSearch) {
bottomTabContainerBackground.setBackgroundColor(Theme.getColor(Theme.key_chat_emojiPanelBackground));
bottomTabContainerBackground.setBackgroundColor(Theme.getColor(Theme.key_actionBarDefaultSubmenuBackground));
}
}
@ -3159,12 +3178,12 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific
if (stickersTab != null) {
stickersTab.setIndicatorColor(Theme.getColor(Theme.key_chat_emojiPanelStickerPackSelectorLine));
stickersTab.setUnderlineColor(Theme.getColor(Theme.key_chat_emojiPanelShadowLine));
stickersTab.setBackgroundColor(Theme.getColor(Theme.key_chat_emojiPanelBackground));
stickersTab.setBackgroundColor(Theme.getColor(Theme.key_actionBarDefaultSubmenuBackground));
}
if (gifTabs != null) {
gifTabs.setIndicatorColor(Theme.getColor(Theme.key_chat_emojiPanelStickerPackSelectorLine));
gifTabs.setUnderlineColor(Theme.getColor(Theme.key_chat_emojiPanelShadowLine));
gifTabs.setBackgroundColor(Theme.getColor(Theme.key_chat_emojiPanelBackground));
gifTabs.setBackgroundColor(Theme.getColor(Theme.key_actionBarDefaultSubmenuBackground));
}
if (backspaceButton != null) {
backspaceButton.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_chat_emojiPanelBackspace), PorterDuff.Mode.SRC_IN));
@ -3193,19 +3212,19 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific
}
for (int a = 0; a < tabIcons.length; a++) {
Theme.setEmojiDrawableColor(tabIcons[a], Theme.getColor(Theme.key_chat_emojiBottomPanelIcon), false);
Theme.setEmojiDrawableColor(tabIcons[a], Theme.getColor(Theme.key_chat_messagePanelIcons), false);
Theme.setEmojiDrawableColor(tabIcons[a], Theme.getColor(Theme.key_chat_emojiPanelIconSelected), true);
}
for (int a = 0; a < emojiIcons.length; a++) {
Theme.setEmojiDrawableColor(emojiIcons[a], Theme.getColor(Theme.key_chat_emojiPanelIcon), false);
Theme.setEmojiDrawableColor(emojiIcons[a], Theme.getColor(Theme.key_chat_messagePanelIcons), false);
Theme.setEmojiDrawableColor(emojiIcons[a], Theme.getColor(Theme.key_chat_emojiPanelIconSelected), true);
}
for (int a = 0; a < stickerIcons.length; a++) {
Theme.setEmojiDrawableColor(stickerIcons[a], Theme.getColor(Theme.key_chat_emojiPanelIcon), false);
Theme.setEmojiDrawableColor(stickerIcons[a], Theme.getColor(Theme.key_chat_messagePanelIcons), false);
Theme.setEmojiDrawableColor(stickerIcons[a], Theme.getColor(Theme.key_chat_emojiPanelIconSelected), true);
}
for (int a = 0; a < gifIcons.length; a++) {
Theme.setEmojiDrawableColor(gifIcons[a], Theme.getColor(Theme.key_chat_emojiPanelIcon), false);
Theme.setEmojiDrawableColor(gifIcons[a], Theme.getColor(Theme.key_chat_messagePanelIcons), false);
Theme.setEmojiDrawableColor(gifIcons[a], Theme.getColor(Theme.key_chat_emojiPanelIconSelected), true);
}
}
@ -3223,7 +3242,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific
setBackgroundResource(R.drawable.smiles_popup);
getBackground().setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_chat_emojiPanelBackground), PorterDuff.Mode.SRC_IN));
if (needEmojiSearch) {
bottomTabContainerBackground.setBackgroundColor(Theme.getColor(Theme.key_chat_emojiPanelBackground));
bottomTabContainerBackground.setBackgroundColor(Theme.getColor(Theme.key_actionBarDefaultSubmenuBackground));
}
currentBackgroundType = 1;
}
@ -3236,7 +3255,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific
}
setBackgroundColor(Theme.getColor(Theme.key_chat_emojiPanelBackground));
if (needEmojiSearch) {
bottomTabContainerBackground.setBackgroundColor(Theme.getColor(Theme.key_chat_emojiPanelBackground));
bottomTabContainerBackground.setBackgroundColor(Theme.getColor(Theme.key_actionBarDefaultSubmenuBackground));
}
currentBackgroundType = 0;
}
@ -4300,7 +4319,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific
}
public CharSequence getPageTitle(int position) {
switch(position) {
switch (position) {
case 0:
return LocaleController.getString("Emoji", R.string.Emoji);
case 1:

View File

@ -24,6 +24,8 @@ import android.text.TextUtils;
import android.view.View;
import android.view.accessibility.AccessibilityNodeInfo;
import androidx.core.graphics.ColorUtils;
import org.telegram.messenger.AndroidUtilities;
import org.telegram.messenger.ContactsController;
import org.telegram.messenger.ImageLocation;
@ -34,8 +36,6 @@ import org.telegram.messenger.UserObject;
import org.telegram.tgnet.TLRPC;
import org.telegram.ui.ActionBar.Theme;
import androidx.core.graphics.ColorUtils;
public class GroupCreateSpan extends View {
private int uid;
@ -67,7 +67,7 @@ public class GroupCreateSpan extends View {
super(context);
currentContact = contact;
deleteDrawable = getResources().getDrawable(R.drawable.delete);
deleteDrawable = getResources().getDrawable(R.drawable.baseline_delete_24);
textPaint.setTextSize(AndroidUtilities.dp(14));
String firstName;

View File

@ -5,7 +5,6 @@ import android.animation.AnimatorListenerAdapter;
import android.content.Context;
import android.content.Intent;
import android.graphics.Canvas;
import android.graphics.Color;
import android.text.SpannableStringBuilder;
import android.util.TypedValue;
import android.view.Gravity;
@ -90,7 +89,7 @@ public class LinkActionView extends LinearLayout {
copyView = new TextView(context);
copyView.setGravity(Gravity.CENTER_HORIZONTAL);
SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder();
spannableStringBuilder.append("..").setSpan(new ColoredImageSpan(ContextCompat.getDrawable(context, R.drawable.msg_copy_filled)), 0, 1, 0);
spannableStringBuilder.append("..").setSpan(new ColoredImageSpan(ContextCompat.getDrawable(context, R.drawable.baseline_content_copy_24)), 0, 1, 0);
spannableStringBuilder.setSpan(new DialogCell.FixedWidthSpan(AndroidUtilities.dp(8)), 1, 2, 0);
spannableStringBuilder.append(LocaleController.getString("CopyLink", R.string.CopyLink));
spannableStringBuilder.append(".").setSpan(new DialogCell.FixedWidthSpan(AndroidUtilities.dp(5)), spannableStringBuilder.length() - 1, spannableStringBuilder.length(), 0);
@ -104,7 +103,7 @@ public class LinkActionView extends LinearLayout {
shareView = new TextView(context);
shareView.setGravity(Gravity.CENTER_HORIZONTAL);
spannableStringBuilder = new SpannableStringBuilder();
spannableStringBuilder.append("..").setSpan(new ColoredImageSpan(ContextCompat.getDrawable(context, R.drawable.msg_share_filled)), 0, 1, 0);
spannableStringBuilder.append("..").setSpan(new ColoredImageSpan(ContextCompat.getDrawable(context, R.drawable.baseline_forward_24)), 0, 1, 0);
spannableStringBuilder.setSpan(new DialogCell.FixedWidthSpan(AndroidUtilities.dp(8)), 1, 2, 0);
spannableStringBuilder.append(LocaleController.getString("ShareLink", R.string.ShareLink));
spannableStringBuilder.append(".").setSpan(new DialogCell.FixedWidthSpan(AndroidUtilities.dp(5)), spannableStringBuilder.length() - 1, spannableStringBuilder.length(), 0);
@ -120,7 +119,7 @@ public class LinkActionView extends LinearLayout {
removeView = new TextView(context);
removeView.setGravity(Gravity.CENTER_HORIZONTAL);
spannableStringBuilder = new SpannableStringBuilder();
spannableStringBuilder.append("..").setSpan(new ColoredImageSpan(ContextCompat.getDrawable(context, R.drawable.msg_delete)), 0, 1, 0);
spannableStringBuilder.append("..").setSpan(new ColoredImageSpan(ContextCompat.getDrawable(context, R.drawable.baseline_delete_24)), 0, 1, 0);
spannableStringBuilder.setSpan(new DialogCell.FixedWidthSpan(AndroidUtilities.dp(8)), 1, 2, 0);
spannableStringBuilder.append(LocaleController.getString("DeleteLink", R.string.DeleteLink));
spannableStringBuilder.append(".").setSpan(new DialogCell.FixedWidthSpan(AndroidUtilities.dp(5)), spannableStringBuilder.length() - 1, spannableStringBuilder.length(), 0);
@ -201,7 +200,7 @@ public class LinkActionView extends LinearLayout {
ActionBarMenuSubItem subItem;
if (!permanent) {
subItem = new ActionBarMenuSubItem(context, true, false);
subItem.setTextAndIcon(LocaleController.getString("Edit", R.string.Edit), R.drawable.msg_edit);
subItem.setTextAndIcon(LocaleController.getString("Edit", R.string.Edit), R.drawable.baseline_edit_24);
layout.addView(subItem, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 48));
subItem.setOnClickListener(view12 -> {
delegate.editLink();
@ -219,7 +218,7 @@ public class LinkActionView extends LinearLayout {
// });
subItem = new ActionBarMenuSubItem(context, false, true);
subItem.setTextAndIcon(LocaleController.getString("RevokeLink", R.string.RevokeLink), R.drawable.msg_delete);
subItem.setTextAndIcon(LocaleController.getString("RevokeLink", R.string.RevokeLink), R.drawable.baseline_delete_24);
subItem.setColors(Theme.getColor(Theme.key_windowBackgroundWhiteRedText), Theme.getColor(Theme.key_windowBackgroundWhiteRedText));
subItem.setOnClickListener(view1 -> {
revokeLink();

View File

@ -14,9 +14,6 @@ import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.drawable.Drawable;
import androidx.viewpager.widget.ViewPager;
import androidx.viewpager.widget.ViewPager.OnPageChangeListener;
import android.graphics.drawable.RippleDrawable;
import android.os.Build;
import android.view.View;
@ -27,6 +24,9 @@ import android.widget.HorizontalScrollView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import androidx.viewpager.widget.ViewPager;
import androidx.viewpager.widget.ViewPager.OnPageChangeListener;
import org.telegram.messenger.AndroidUtilities;
import org.telegram.ui.ActionBar.Theme;
@ -138,14 +138,14 @@ public class PagerSlidingTabStrip extends HorizontalScrollView {
super.setSelected(selected);
Drawable background = getBackground();
if (Build.VERSION.SDK_INT >= 21 && background != null) {
int color = Theme.getColor(selected ? Theme.key_chat_emojiPanelIconSelected : Theme.key_chat_emojiBottomPanelIcon);
int color = Theme.getColor(selected ? Theme.key_chat_emojiPanelIconSelected : Theme.key_chat_messagePanelIcons);
Theme.setSelectorDrawableColor(background, Color.argb(30, Color.red(color), Color.green(color), Color.blue(color)), true);
}
}
};
tab.setFocusable(true);
if (Build.VERSION.SDK_INT >= 21) {
RippleDrawable rippleDrawable = (RippleDrawable) Theme.createSelectorDrawable(Theme.getColor(Theme.key_chat_emojiBottomPanelIcon));
RippleDrawable rippleDrawable = (RippleDrawable) Theme.createSelectorDrawable(Theme.getColor(Theme.key_chat_messagePanelIcons));
Theme.setRippleDrawableForceSoftware(rippleDrawable);
tab.setBackground(rippleDrawable);
}

View File

@ -7,7 +7,6 @@ import android.animation.ValueAnimator;
import android.content.Context;
import android.graphics.Canvas;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.ViewTreeObserver;
import android.widget.FrameLayout;
@ -347,7 +346,7 @@ public class SearchViewPager extends ViewPagerFixed implements FilteredSearchVie
selectedMessagesCountTextView.setOnTouchListener((v, event) -> true);
gotoItem = actionMode.addItemWithWidth(gotoItemId, R.drawable.msg_message, AndroidUtilities.dp(54), LocaleController.getString("AccDescrGoToMessage", R.string.AccDescrGoToMessage));
forwardItem = actionMode.addItemWithWidth(forwardItemId, R.drawable.msg_forward, AndroidUtilities.dp(54), LocaleController.getString("Forward", R.string.Forward));
forwardItem = actionMode.addItemWithWidth(forwardItemId, R.drawable.baseline_forward_24, AndroidUtilities.dp(54), LocaleController.getString("Forward", R.string.Forward));
}
if (parent.getActionBar().getBackButton().getDrawable() instanceof MenuDrawable) {
parent.getActionBar().setBackButtonDrawable(new BackDrawable(false));

View File

@ -48,6 +48,10 @@ import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import androidx.core.view.ViewCompat;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import org.telegram.SQLite.SQLiteCursor;
import org.telegram.messenger.AndroidUtilities;
import org.telegram.messenger.ApplicationLoader;
@ -82,9 +86,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.Locale;
import androidx.core.view.ViewCompat;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import tw.nekomimi.nekogram.NekoConfig;
public class ShareAlert extends BottomSheet implements NotificationCenter.NotificationCenterDelegate {
@ -1063,19 +1065,29 @@ public class ShareAlert extends BottomSheet implements NotificationCenter.Notifi
if (sendingMessageObjects != null) {
for (int a = 0; a < selectedDialogs.size(); a++) {
long key = selectedDialogs.keyAt(a);
if (NekoConfig.sendCommentAfterForward) {
SendMessagesHelper.getInstance(currentAccount).sendMessage(sendingMessageObjects, key, true, 0);
}
if (frameLayout2.getTag() != null && commentTextView.length() > 0) {
SendMessagesHelper.getInstance(currentAccount).sendMessage(commentTextView.getText().toString(), key, null, null, null, true, null, null, null, true, 0);
}
SendMessagesHelper.getInstance(currentAccount).sendMessage(sendingMessageObjects, key, true, 0);
if (!NekoConfig.sendCommentAfterForward) {
SendMessagesHelper.getInstance(currentAccount).sendMessage(sendingMessageObjects, key, true, 0);
}
}
onSend(selectedDialogs, sendingMessageObjects.size());
} else if (sendingText != null) {
for (int a = 0; a < selectedDialogs.size(); a++) {
long key = selectedDialogs.keyAt(a);
if (NekoConfig.sendCommentAfterForward) {
SendMessagesHelper.getInstance(currentAccount).sendMessage(sendingText, key, null, null, null, true, null, null, null, true, 0);
}
if (frameLayout2.getTag() != null && commentTextView.length() > 0) {
SendMessagesHelper.getInstance(currentAccount).sendMessage(commentTextView.getText().toString(), key, null, null, null, true, null, null, null, true, 0);
}
SendMessagesHelper.getInstance(currentAccount).sendMessage(sendingText, key, null, null, null, true, null, null, null, true, 0);
if (!NekoConfig.sendCommentAfterForward) {
SendMessagesHelper.getInstance(currentAccount).sendMessage(sendingText, key, null, null, null, true, null, null, null, true, 0);
}
}
}
if (delegate != null) {

View File

@ -58,7 +58,6 @@ import org.telegram.messenger.MediaDataController;
import org.telegram.messenger.MessageObject;
import org.telegram.messenger.NotificationCenter;
import org.telegram.messenger.R;
import org.telegram.messenger.SendMessagesHelper;
import org.telegram.messenger.UserObject;
import org.telegram.messenger.Utilities;
import org.telegram.messenger.browser.Browser;
@ -71,7 +70,6 @@ import org.telegram.ui.ActionBar.ActionBarMenuItem;
import org.telegram.ui.ActionBar.AlertDialog;
import org.telegram.ui.ActionBar.BackDrawable;
import org.telegram.ui.ActionBar.BaseFragment;
import org.telegram.ui.ActionBar.BottomSheet;
import org.telegram.ui.ActionBar.Theme;
import org.telegram.ui.ActionBar.ThemeDescription;
import org.telegram.ui.Adapters.SearchAdapterHelper;
@ -871,7 +869,7 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter
gotoItem.setOnClickListener(v -> onActionBarItemClick(gotochat));
forwardNoQuoteItem = new ActionBarMenuItem(context, null, Theme.getColor(Theme.key_actionBarActionModeDefaultSelector), Theme.getColor(Theme.key_windowBackgroundWhiteGrayText2), false);
forwardNoQuoteItem.setIcon(R.drawable.msg_forward_noquote);
forwardNoQuoteItem.setIcon(R.drawable.baseline_forward_24);
forwardNoQuoteItem.setContentDescription(LocaleController.getString("NoQuoteForward", R.string.NoQuoteForward));
forwardNoQuoteItem.setDuplicateParentStateEnabled(false);
actionModeLayout.addView(forwardNoQuoteItem, new LinearLayout.LayoutParams(AndroidUtilities.dp(54), ViewGroup.LayoutParams.MATCH_PARENT));
@ -879,7 +877,7 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter
forwardNoQuoteItem.setOnClickListener(v -> onActionBarItemClick(forward_noquote));
forwardItem = new ActionBarMenuItem(context, null, Theme.getColor(Theme.key_actionBarActionModeDefaultSelector), Theme.getColor(Theme.key_windowBackgroundWhiteGrayText2), false);
forwardItem.setIcon(R.drawable.msg_forward);
forwardItem.setIcon(R.drawable.baseline_forward_24);
forwardItem.setContentDescription(LocaleController.getString("Forward", R.string.Forward));
forwardItem.setDuplicateParentStateEnabled(false);
actionModeLayout.addView(forwardItem, new LinearLayout.LayoutParams(AndroidUtilities.dp(54), ViewGroup.LayoutParams.MATCH_PARENT));
@ -887,7 +885,7 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter
forwardItem.setOnClickListener(v -> onActionBarItemClick(forward));
}
deleteItem = new ActionBarMenuItem(context, null, Theme.getColor(Theme.key_actionBarActionModeDefaultSelector), Theme.getColor(Theme.key_windowBackgroundWhiteGrayText2), false);
deleteItem.setIcon(R.drawable.msg_delete);
deleteItem.setIcon(R.drawable.baseline_delete_24);
deleteItem.setContentDescription(LocaleController.getString("Delete", R.string.Delete));
deleteItem.setDuplicateParentStateEnabled(false);
actionModeLayout.addView(deleteItem, new LinearLayout.LayoutParams(AndroidUtilities.dp(54), ViewGroup.LayoutParams.MATCH_PARENT));
@ -3082,7 +3080,7 @@ public class SharedMediaLayout extends FrameLayout implements NotificationCenter
builder.addTitle(urlFinal);
builder.addItems(
new String[]{LocaleController.getString("Open", R.string.Open), LocaleController.getString("Copy", R.string.Copy), LocaleController.getString("ShareQRCode", R.string.ShareQRCode)},
new Integer[]{R.drawable.baseline_open_in_browser_24, R.drawable.baseline_content_copy_24,R.drawable.wallet_qr }, (which, text, __) -> {
new int[]{R.drawable.baseline_open_in_browser_24, R.drawable.baseline_content_copy_24, R.drawable.wallet_qr}, (which, text, __) -> {
if (which == 0 || which == 2) {
if (which == 0) {
openUrl(urlFinal);

View File

@ -17,6 +17,7 @@ import android.graphics.Point;
import android.net.Uri;
import android.os.Build;
import android.provider.MediaStore;
import androidx.core.content.FileProvider;
import org.telegram.messenger.AndroidUtilities;
@ -29,13 +30,15 @@ import org.telegram.messenger.R;
import org.telegram.messenger.SendMessagesHelper;
import org.telegram.messenger.Utilities;
import org.telegram.ui.ActionBar.BaseFragment;
import org.telegram.ui.ActionBar.BottomSheet;
import org.telegram.ui.PhotoAlbumPickerActivity;
import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import kotlin.Unit;
import tw.nekomimi.nekogram.BottomBuilder;
public class WallpaperUpdater {
private String currentPicturePath;
@ -57,20 +60,20 @@ public class WallpaperUpdater {
}
public void showAlert(final boolean fromTheme) {
BottomSheet.Builder builder = new BottomSheet.Builder(parentActivity);
builder.setTitle(LocaleController.getString("ChoosePhoto", R.string.ChoosePhoto), true);
BottomBuilder builder = new BottomBuilder(parentActivity);
builder.addTitle(LocaleController.getString("ChoosePhoto", R.string.ChoosePhoto), true);
CharSequence[] items;
String[] items;
int[] icons;
if (fromTheme) {
items = new CharSequence[]{LocaleController.getString("ChooseTakePhoto", R.string.ChooseTakePhoto), LocaleController.getString("SelectFromGallery", R.string.SelectFromGallery), LocaleController.getString("SelectColor", R.string.SelectColor), LocaleController.getString("Default", R.string.Default)};
items = new String[]{LocaleController.getString("ChooseTakePhoto", R.string.ChooseTakePhoto), LocaleController.getString("SelectFromGallery", R.string.SelectFromGallery), LocaleController.getString("SelectColor", R.string.SelectColor), LocaleController.getString("Default", R.string.Default)};
icons = null;
} else {
items = new CharSequence[]{LocaleController.getString("ChooseTakePhoto", R.string.ChooseTakePhoto), LocaleController.getString("SelectFromGallery", R.string.SelectFromGallery)};
items = new String[]{LocaleController.getString("ChooseTakePhoto", R.string.ChooseTakePhoto), LocaleController.getString("SelectFromGallery", R.string.SelectFromGallery)};
icons = new int[]{R.drawable.baseline_camera_alt_24, R.drawable.baseline_image_24};
}
builder.setItems(items, icons, (dialogInterface, i) -> {
builder.addItems(items, icons, (i, t, c) -> {
try {
if (i == 0) {
try {
@ -102,6 +105,7 @@ public class WallpaperUpdater {
} catch (Exception e) {
FileLog.e(e);
}
return Unit.INSTANCE;
});
builder.show();
}

View File

@ -38,7 +38,6 @@ import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Vibrator;
import android.text.TextUtils;
import android.util.Property;
import android.util.SparseArray;
@ -105,7 +104,6 @@ import org.telegram.ui.ActionBar.ActionBarPopupWindow;
import org.telegram.ui.ActionBar.AlertDialog;
import org.telegram.ui.ActionBar.BackDrawable;
import org.telegram.ui.ActionBar.BaseFragment;
import org.telegram.ui.ActionBar.BottomSheet;
import org.telegram.ui.ActionBar.MenuDrawable;
import org.telegram.ui.ActionBar.Theme;
import org.telegram.ui.ActionBar.ThemeDescription;
@ -166,6 +164,8 @@ import org.telegram.ui.Components.ViewPagerFixed;
import java.util.ArrayList;
import kotlin.Unit;
import tw.nekomimi.nekogram.BottomBuilder;
import tw.nekomimi.nekogram.NekoConfig;
import tw.nekomimi.nekogram.utils.PrivacyUtil;
import tw.nekomimi.nekogram.utils.ProxyUtil;
@ -2192,22 +2192,23 @@ private int lastMeasuredTopPadding;
linearLayout.setMinimumWidth(AndroidUtilities.dp(200));
linearLayout.setOrientation(LinearLayout.VERTICAL);
scrimPopupWindowItems = new ActionBarMenuSubItem[3];
for (int a = 0, N = (tabView.getId() == Integer.MAX_VALUE ? 2 : 3); a < N; a++) {
scrimPopupWindowItems = new ActionBarMenuSubItem[4];
for (int a = 0, N = (tabView.getId() == Integer.MAX_VALUE ? 3 : 4); a < 4; a++) {
ActionBarMenuSubItem cell = new ActionBarMenuSubItem(getParentActivity(), a == 0, a == N - 1);
if (a == 0) {
if (getMessagesController().dialogFilters.size() <= 1) {
continue;
}
if (getMessagesController().dialogFilters.size() <= 1) continue;
cell.setTextAndIcon(LocaleController.getString("FilterReorder", R.string.FilterReorder), R.drawable.tabs_reorder);
} else if (a == 1) {
if (N == 2) {
if (N == 3) {
cell.setTextAndIcon(LocaleController.getString("FilterEditAll", R.string.FilterEditAll), R.drawable.baseline_edit_24);
} else {
cell.setTextAndIcon(LocaleController.getString("FilterEdit", R.string.FilterEdit), R.drawable.baseline_edit_24);
}
} else {
} else if (a == 2) {
if (N == 3) continue;
cell.setTextAndIcon(LocaleController.getString("FilterDeleteItem", R.string.FilterDeleteItem), R.drawable.baseline_delete_24);
} else {
cell.setTextAndIcon(LocaleController.getString("MarkAllAsRead", R.string.MarkAllAsRead), R.drawable.baseline_done_all_24);
}
scrimPopupWindowItems[a] = cell;
linearLayout.addView(cell);
@ -2225,6 +2226,8 @@ private int lastMeasuredTopPadding;
}
} else if (i == 2) {
showDeleteAlert(dialogFilter);
} else {
getMessagesStorage().readAllDialogs(tabView.getId());
}
if (scrimPopupWindow != null) {
scrimPopupWindow.dismiss();
@ -3378,9 +3381,9 @@ private int lastMeasuredTopPadding;
ActionBarMenuItem otherItem = actionMode.addItemWithWidth(0, R.drawable.ic_ab_other, AndroidUtilities.dp(54), LocaleController.getString("AccDescrMoreOptions", R.string.AccDescrMoreOptions));
archiveItem = otherItem.addSubItem(archive, R.drawable.baseline_archive_24, LocaleController.getString("Archive", R.string.Archive));
pin2Item = otherItem.addSubItem(pin2, R.drawable.deproko_baseline_pin_24, LocaleController.getString("DialogPin", R.string.DialogPin));
addToFolderItem = otherItem.addSubItem(add_to_folder, R.drawable.msg_addfolder, LocaleController.getString("FilterAddTo", R.string.FilterAddTo));
removeFromFolderItem = otherItem.addSubItem(remove_from_folder, R.drawable.msg_removefolder, LocaleController.getString("FilterRemoveFrom", R.string.FilterRemoveFrom));
readItem = otherItem.addSubItem(read, R.drawable.deproko_baseline_check_double_24, LocaleController.getString("MarkAsRead", R.string.MarkAsRead));
addToFolderItem = otherItem.addSubItem(add_to_folder, R.drawable.baseline_folder_24, LocaleController.getString("FilterAddTo", R.string.FilterAddTo));
removeFromFolderItem = otherItem.addSubItem(remove_from_folder, R.drawable.baseline_folder_open_24, LocaleController.getString("FilterRemoveFrom", R.string.FilterRemoveFrom));
readItem = otherItem.addSubItem(read, R.drawable.baseline_done_all_24, LocaleController.getString("MarkAsRead", R.string.MarkAsRead));
clearItem = otherItem.addSubItem(clear, R.drawable.baseline_delete_sweep_24, LocaleController.getString("ClearHistory", R.string.ClearHistory));
blockItem = otherItem.addSubItem(block, R.drawable.baseline_block_24, LocaleController.getString("BlockUser", R.string.BlockUser));
@ -4618,18 +4621,18 @@ private int lastMeasuredTopPadding;
} else {
if (dialog instanceof TLRPC.TL_dialogFolder) {
view.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS, HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING);
BottomSheet.Builder builder = new BottomSheet.Builder(getParentActivity());
BottomBuilder builder = new BottomBuilder(getParentActivity());
final boolean hasUnread = getMessagesStorage().getArchiveUnreadCount() != 0;
int[] icons = new int[]{
hasUnread ? R.drawable.deproko_baseline_check_double_24 : 0,
hasUnread ? R.drawable.baseline_done_all_24 : 0,
SharedConfig.archiveHidden ? R.drawable.deproko_baseline_pin_24 : R.drawable.deproko_baseline_pin_undo_24,
};
CharSequence[] items = new CharSequence[]{
String[] items = new String[]{
hasUnread ? LocaleController.getString("MarkAllAsRead", R.string.MarkAllAsRead) : null,
SharedConfig.archiveHidden ? LocaleController.getString("PinInTheList", R.string.PinInTheList) : LocaleController.getString("HideAboveTheList", R.string.HideAboveTheList)
};
builder.setItems(items, icons, (d, which) -> {
builder.addItems(items, icons, (which, t, c) -> {
if (which == 0) {
getMessagesStorage().readAllDialogs(1);
} else if (which == 1 && viewPages != null) {
@ -4645,6 +4648,7 @@ private int lastMeasuredTopPadding;
viewPages[a].listView.toggleArchiveHidden(true, dialogCell);
}
}
return Unit.INSTANCE;
});
showDialog(builder.create());
return false;
@ -5438,7 +5442,7 @@ private int lastMeasuredTopPadding;
muteItem.setContentDescription(LocaleController.getString("ChatsMute", R.string.ChatsMute));
}
if (canReadCount != 0) {
readItem.setTextAndIcon(LocaleController.getString("MarkAsRead", R.string.MarkAsRead), R.drawable.deproko_baseline_check_double_24);
readItem.setTextAndIcon(LocaleController.getString("MarkAsRead", R.string.MarkAsRead), R.drawable.baseline_done_all_24);
} else {
readItem.setTextAndIcon(LocaleController.getString("MarkAsUnread", R.string.MarkAsUnread), R.drawable.baseline_unsubscribe_24);
}

View File

@ -45,7 +45,6 @@ import org.telegram.tgnet.ConnectionsManager;
import org.telegram.tgnet.TLObject;
import org.telegram.tgnet.TLRPC;
import org.telegram.ui.ActionBar.BaseFragment;
import org.telegram.ui.ActionBar.BottomSheet;
import org.telegram.ui.ActionBar.Theme;
import org.telegram.ui.ActionBar.ThemeDescription;
import org.telegram.ui.Adapters.FiltersView;
@ -1087,7 +1086,7 @@ public class FilteredSearchView extends FrameLayout implements NotificationCente
builder.addTitle(urlFinal);
builder.addItems(
new String[]{LocaleController.getString("Open", R.string.Open), LocaleController.getString("Copy", R.string.Copy), LocaleController.getString("ShareQRCode", R.string.ShareQRCode)},
new Integer[]{R.drawable.baseline_open_in_browser_24, R.drawable.baseline_content_copy_24,R.drawable.wallet_qr }, (which, text, __) -> {
new int[]{R.drawable.baseline_open_in_browser_24, R.drawable.baseline_content_copy_24, R.drawable.wallet_qr}, (which, text, __) -> {
if (which == 0 || which == 2) {
if (which == 0) {
openUrl(urlFinal);

View File

@ -26,8 +26,8 @@ import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.os.SystemClock;
import android.provider.Settings;
import android.os.Vibrator;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Property;
import android.util.TypedValue;
@ -92,8 +92,8 @@ import org.telegram.ui.Components.CheckBoxSquare;
import org.telegram.ui.Components.CubicBezierInterpolator;
import org.telegram.ui.Components.EditTextBoldCursor;
import org.telegram.ui.Components.FillLastLinearLayoutManager;
import org.telegram.ui.Components.GroupVoipInviteAlert;
import org.telegram.ui.Components.GroupCallPip;
import org.telegram.ui.Components.GroupVoipInviteAlert;
import org.telegram.ui.Components.LayoutHelper;
import org.telegram.ui.Components.RLottieDrawable;
import org.telegram.ui.Components.RLottieImageView;
@ -2847,7 +2847,7 @@ public class GroupCallActivity extends BottomSheet implements NotificationCenter
options.add(5);
}
items.add(LocaleController.getString("VoipGroupOpenProfile", R.string.VoipGroupOpenProfile));
icons.add(R.drawable.msg_openprofile);
icons.add(R.drawable.book_user);
options.add(6);
}

View File

@ -845,23 +845,23 @@ public class ManageLinksActivity extends BaseFragment implements NotificationCen
if (invite.revoked) {
items.add(LocaleController.getString("Delete", R.string.Delete));
icons.add(R.drawable.msg_delete);
icons.add(R.drawable.baseline_delete_24);
actions.add(4);
} else {
items.add(LocaleController.getString("Copy", R.string.Copy));
icons.add(R.drawable.msg_copy);
icons.add(R.drawable.baseline_content_copy_24);
actions.add(0);
items.add(LocaleController.getString("Share", R.string.ShareLink));
icons.add(R.drawable.msg_share);
icons.add(R.drawable.baseline_forward_24);
actions.add(1);
items.add(LocaleController.getString("Edit", R.string.Edit));
icons.add(R.drawable.msg_edit);
icons.add(R.drawable.baseline_edit_24);
actions.add(2);
items.add(LocaleController.getString("RevokeLink", R.string.RevokeLink));
icons.add(R.drawable.msg_delete);
icons.add(R.drawable.baseline_delete_24);
actions.add(3);
}

View File

@ -68,7 +68,6 @@ import org.telegram.ui.ActionBar.ActionBarMenu;
import org.telegram.ui.ActionBar.ActionBarMenuItem;
import org.telegram.ui.ActionBar.BackDrawable;
import org.telegram.ui.ActionBar.BaseFragment;
import org.telegram.ui.ActionBar.BottomSheet;
import org.telegram.ui.ActionBar.Theme;
import org.telegram.ui.ActionBar.ThemeDescription;
import org.telegram.ui.Cells.GraySectionCell;
@ -662,8 +661,8 @@ public class MediaActivity extends BaseFragment implements NotificationCenter.No
if ((int) dialog_id != 0) {
actionModeViews.add(gotoItem = actionMode.addItemWithWidth(gotochat, R.drawable.msg_message, AndroidUtilities.dp(54), LocaleController.getString("AccDescrGoToMessage", R.string.AccDescrGoToMessage)));
actionModeViews.add(actionMode.addItemWithWidth(forward_noquote, R.drawable.msg_forward_noquote, AndroidUtilities.dp(54), LocaleController.getString("NoQuoteForward", R.string.NoQuoteForward)));
actionModeViews.add(actionMode.addItemWithWidth(forward, R.drawable.msg_forward, AndroidUtilities.dp(54), LocaleController.getString("Forward", R.string.Forward)));
actionModeViews.add(actionMode.addItemWithWidth(forward_noquote, R.drawable.baseline_forward_24, AndroidUtilities.dp(54), LocaleController.getString("NoQuoteForward", R.string.NoQuoteForward)));
actionModeViews.add(actionMode.addItemWithWidth(forward, R.drawable.baseline_forward_24, AndroidUtilities.dp(54), LocaleController.getString("Forward", R.string.Forward)));
}
actionModeViews.add(actionMode.addItemWithWidth(delete, R.drawable.baseline_delete_24, AndroidUtilities.dp(54), LocaleController.getString("Delete", R.string.Delete)));
@ -2083,7 +2082,7 @@ public class MediaActivity extends BaseFragment implements NotificationCenter.No
builder.addTitle(urlFinal);
builder.addItems(
new String[]{LocaleController.getString("Open", R.string.Open), LocaleController.getString("Copy", R.string.Copy), LocaleController.getString("ShareQRCode", R.string.ShareQRCode)},
new Integer[]{R.drawable.baseline_open_in_browser_24, R.drawable.baseline_content_copy_24,R.drawable.wallet_qr }, (which, text, __) -> {
new int[]{R.drawable.baseline_open_in_browser_24, R.drawable.baseline_content_copy_24, R.drawable.wallet_qr}, (which, text, __) -> {
if (which == 0 || which == 2) {
if (which == 0) {
openUrl(urlFinal);

View File

@ -48,25 +48,6 @@ import android.os.Bundle;
import android.os.SystemClock;
import android.os.Vibrator;
import android.provider.Settings;
import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.collection.ArrayMap;
import androidx.core.content.ContextCompat;
import androidx.core.content.FileProvider;
import androidx.core.graphics.ColorUtils;
import androidx.core.view.ViewCompat;
import androidx.core.widget.NestedScrollView;
import androidx.dynamicanimation.animation.DynamicAnimation;
import androidx.dynamicanimation.animation.SpringAnimation;
import androidx.dynamicanimation.animation.SpringForce;
import androidx.exifinterface.media.ExifInterface;
import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.LinearSmoothScrollerEnd;
import androidx.recyclerview.widget.RecyclerView;
import android.text.Layout;
import android.text.Selection;
import android.text.Spannable;
@ -128,11 +109,13 @@ import androidx.annotation.Nullable;
import androidx.collection.ArrayMap;
import androidx.core.content.ContextCompat;
import androidx.core.content.FileProvider;
import androidx.core.graphics.ColorUtils;
import androidx.core.view.ViewCompat;
import androidx.core.widget.NestedScrollView;
import androidx.dynamicanimation.animation.DynamicAnimation;
import androidx.dynamicanimation.animation.SpringAnimation;
import androidx.dynamicanimation.animation.SpringForce;
import androidx.exifinterface.media.ExifInterface;
import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.LinearSmoothScrollerEnd;
@ -255,6 +238,7 @@ import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
import kotlin.Unit;
import tw.nekomimi.nekogram.MessageHelper;
import tw.nekomimi.nekogram.NekoConfig;
import tw.nekomimi.nekogram.NekoXConfig;
import tw.nekomimi.nekogram.transtale.TranslateDb;
@ -263,8 +247,6 @@ import tw.nekomimi.nekogram.transtale.TranslatorKt;
import tw.nekomimi.nekogram.utils.AlertUtil;
import tw.nekomimi.nekogram.utils.ProxyUtil;
import tw.nekomimi.nekogram.MessageHelper;
@SuppressWarnings("unchecked")
public class PhotoViewer implements NotificationCenter.NotificationCenterDelegate, GestureDetector2.OnGestureListener, GestureDetector2.OnDoubleTapListener {
@ -4123,9 +4105,9 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat
masksItem.setContentDescription(LocaleController.getString("Masks", R.string.Masks));
pipItem = menu.addItem(gallery_menu_pip, R.drawable.ic_goinline);
pipItem.setContentDescription(LocaleController.getString("AccDescrPipMode", R.string.AccDescrPipMode));
sendNoQuoteItem = menu.addItem(gallery_menu_send_noquote, R.drawable.msg_forward_noquote);
sendNoQuoteItem = menu.addItem(gallery_menu_send_noquote, R.drawable.baseline_forward_24);
sendNoQuoteItem.setContentDescription(LocaleController.getString("NoQuoteForward", R.string.Forward));
sendItem = menu.addItem(gallery_menu_send, R.drawable.msg_forward);
sendItem = menu.addItem(gallery_menu_send, R.drawable.baseline_forward_24);
sendItem.setContentDescription(LocaleController.getString("Forward", R.string.Forward));
shareItem = menu.addItem(gallery_menu_share2, R.drawable.share);
shareItem.setContentDescription(LocaleController.getString("ShareFile", R.string.ShareFile));

View File

@ -77,7 +77,6 @@ import androidx.core.view.ViewCompat;
import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.DiffUtil;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.ListAdapter;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;
@ -121,7 +120,6 @@ import org.telegram.ui.ActionBar.BaseFragment;
import org.telegram.ui.ActionBar.SimpleTextView;
import org.telegram.ui.ActionBar.Theme;
import org.telegram.ui.ActionBar.ThemeDescription;
import org.telegram.ui.Adapters.SearchAdapter;
import org.telegram.ui.Cells.AboutLinkCell;
import org.telegram.ui.Cells.DividerCell;
import org.telegram.ui.Cells.GraySectionCell;
@ -174,7 +172,6 @@ import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.core.util.RuntimeUtil;
import cn.hutool.core.util.StrUtil;
import kotlin.Unit;
import kotlin.text.StringsKt;
import libv2ray.Libv2ray;
import tw.nekomimi.nekogram.BottomBuilder;
import tw.nekomimi.nekogram.ExternalGcm;
@ -5924,12 +5921,12 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter.
otherItem.addSubItem(delete_contact, R.drawable.baseline_delete_24, LocaleController.getString("DeleteContact", R.string.DeleteContact));
}
if (!UserObject.isDeleted(user) && !isBot && currentEncryptedChat == null && !userBlocked && user_id != 333000 && user_id != 777000 && user_id != 42777) {
otherItem.addSubItem(start_secret_chat, R.drawable.msg_start_secret, LocaleController.getString("StartEncryptedChat", R.string.StartEncryptedChat));
otherItem.addSubItem(start_secret_chat, R.drawable.baseline_lock_24, LocaleController.getString("StartEncryptedChat", R.string.StartEncryptedChat));
}
if (StrUtil.isNotBlank(user.username)) {
otherItem.addSubItem(qr_code, R.drawable.wallet_qr, LocaleController.getString("ShareQRCode", R.string.ShareQRCode));
}
otherItem.addSubItem(add_shortcut, R.drawable.msg_home, LocaleController.getString("AddShortcut", R.string.AddShortcut));
otherItem.addSubItem(add_shortcut, R.drawable.baseline_home_24, LocaleController.getString("AddShortcut", R.string.AddShortcut));
}
} else if (chat_id != 0) {
TLRPC.Chat chat = getMessagesController().getChat(chat_id);
@ -5966,7 +5963,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter.
}
} else {
if (!TextUtils.isEmpty(chat.username)) {
otherItem.addSubItem(share, R.drawable.msg_share, LocaleController.getString("BotShare", R.string.BotShare));
otherItem.addSubItem(share, R.drawable.baseline_forward_24, LocaleController.getString("BotShare", R.string.BotShare));
}
if (!currentChat.creator && !currentChat.left && !currentChat.kicked) {
otherItem.addSubItem(leave_group, R.drawable.baseline_exit_to_app_24, LocaleController.getString("LeaveChannelMenu", R.string.LeaveChannelMenu));
@ -6004,7 +6001,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter.
otherItem.addSubItem(set_as_main, R.drawable.menu_private, LocaleController.getString("SetAsMain", R.string.SetAsMain));
otherItem.addSubItem(gallery_menu_save, R.drawable.baseline_image_24, LocaleController.getString("SaveToGallery", R.string.SaveToGallery));
//otherItem.addSubItem(edit_avatar, R.drawable.photo_paint, LocaleController.getString("EditPhoto", R.string.EditPhoto));
otherItem.addSubItem(delete_avatar, R.drawable.msg_delete, LocaleController.getString("Delete", R.string.Delete));
otherItem.addSubItem(delete_avatar, R.drawable.baseline_delete_24, LocaleController.getString("Delete", R.string.Delete));
}
if (!isPulledDown) {
otherItem.hideSubItem(gallery_menu_save);

View File

@ -60,7 +60,6 @@ import org.telegram.ui.ActionBar.ActionBarMenu;
import org.telegram.ui.ActionBar.ActionBarMenuItem;
import org.telegram.ui.ActionBar.AlertDialog;
import org.telegram.ui.ActionBar.BaseFragment;
import org.telegram.ui.ActionBar.BottomSheet;
import org.telegram.ui.ActionBar.Theme;
import org.telegram.ui.ActionBar.ThemeDescription;
import org.telegram.ui.Cells.HeaderCell;
@ -605,56 +604,14 @@ public class ProxyListActivity extends BaseFragment implements NotificationCente
@Override
public void didFindQr(String text) {
BottomSheet.Builder builder = new BottomSheet.Builder(getParentActivity());
boolean isUrl = false;
try {
HttpUrl.parse(text);
isUrl = true;
Browser.openUrl(getParentActivity(), text);
return;
} catch (Exception ignored) {
}
builder.setTitle(text);
builder.setItems(new String[]{
LocaleController.getString("Copy", R.string.Copy),
LocaleController.getString("Cancel", R.string.Cancel)
}, (v, i) -> {
if (i == 0) {
if (Build.VERSION.SDK_INT >= 23) {
if (getParentActivity().checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
getParentActivity().requestPermissions(new String[]{Manifest.permission.CAMERA}, 22);
return;
}
}
CameraScanActivity.showAsSheet(ProxyListActivity.this, new CameraScanActivity.CameraScanActivityDelegate() {
@Override
public void didFindQr(String text) {
ProxyUtil.showLinkAlert(getParentActivity(), text);
}
});
}
});
showDialog(builder.create());
AlertUtil.showCopyAlert(getParentActivity(), text);
}
@ -743,9 +700,9 @@ public class ProxyListActivity extends BaseFragment implements NotificationCente
if (position >= proxyStartRow && position < proxyEndRow) {
final SharedConfig.ProxyInfo info = SharedConfig.proxyList.get(position - proxyStartRow);
BottomSheet.Builder builder = new BottomSheet.Builder(context);
BottomBuilder builder = new BottomBuilder(context);
builder.setItems(new String[]{
builder.addItems(new String[]{
info.subId == 1 ? null : LocaleController.getString("EditProxy", R.string.EditProxy),
info.subId == 1 ? null : LocaleController.getString("ShareProxy", R.string.ShareProxy),
@ -763,7 +720,7 @@ public class ProxyListActivity extends BaseFragment implements NotificationCente
R.drawable.baseline_delete_24,
R.drawable.baseline_cancel_24
}, (v, i) -> {
}, (i, text, cell) -> {
if (i == 0) {
@ -814,6 +771,8 @@ public class ProxyListActivity extends BaseFragment implements NotificationCente
}
return Unit.INSTANCE;
});
showDialog(builder.create());
@ -882,62 +841,26 @@ public class ProxyListActivity extends BaseFragment implements NotificationCente
} else {
if (Build.VERSION.SDK_INT >= 23) {
if (getParentActivity().checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
getParentActivity().requestPermissions(new String[]{Manifest.permission.CAMERA}, 22);
return Unit.INSTANCE;
}
}
CameraScanActivity.showAsSheet(this, new CameraScanActivity.CameraScanActivityDelegate() {
@Override
public void didFindQr(String text) {
BottomSheet.Builder builder = new BottomSheet.Builder(getParentActivity());
boolean isUrl = false;
try {
HttpUrl.parse(text);
isUrl = true;
Browser.openUrl(getParentActivity(), text);
return;
} catch (Exception ignored) {
}
builder.setTitle(text);
builder.setItems(new String[]{
LocaleController.getString("Copy", R.string.Copy),
LocaleController.getString("Cancel", R.string.Cancel)
}, (v, i) -> {
if (i == 0) {
if (Build.VERSION.SDK_INT >= 23) {
if (getParentActivity().checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
getParentActivity().requestPermissions(new String[]{Manifest.permission.CAMERA}, 22);
return;
}
}
CameraScanActivity.showAsSheet(ProxyListActivity.this, new CameraScanActivity.CameraScanActivityDelegate() {
@Override
public void didFindQr(String text) {
ProxyUtil.showLinkAlert(getParentActivity(), text);
}
});
}
});
showDialog(builder.create());
AlertUtil.showCopyAlert(getParentActivity(), text);
}

View File

@ -39,6 +39,9 @@ import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.TextView;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import org.telegram.messenger.AndroidUtilities;
import org.telegram.messenger.ApplicationLoader;
import org.telegram.messenger.FileLoader;
@ -77,9 +80,6 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
public class WallpapersListActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate {
private int rowCount;
@ -532,7 +532,7 @@ public class WallpapersListActivity extends BaseFragment implements Notification
selectedMessagesCountTextView.setOnTouchListener((v, event) -> true);
actionMode.addView(selectedMessagesCountTextView, LayoutHelper.createLinear(0, LayoutHelper.MATCH_PARENT, 1.0f, 65, 0, 0, 0));
actionModeViews.add(actionMode.addItemWithWidth(forward, R.drawable.msg_forward, AndroidUtilities.dp(54), LocaleController.getString("Forward", R.string.Forward)));
actionModeViews.add(actionMode.addItemWithWidth(forward, R.drawable.baseline_forward_24, AndroidUtilities.dp(54), LocaleController.getString("Forward", R.string.Forward)));
actionModeViews.add(actionMode.addItemWithWidth(delete, R.drawable.baseline_delete_24, AndroidUtilities.dp(54), LocaleController.getString("Delete", R.string.Delete)));
selectedWallPapers.clear();

View File

@ -14,7 +14,6 @@ import org.telegram.ui.Cells.HeaderCell
import org.telegram.ui.Cells.RadioButtonCell
import org.telegram.ui.Cells.TextCell
import org.telegram.ui.Cells.TextCheckCell
import org.telegram.ui.Components.CheckBoxSquare
import org.telegram.ui.Components.LayoutHelper
import java.util.*
@ -23,10 +22,9 @@ class BottomBuilder(val ctx: Context) {
val builder = BottomSheet.Builder(ctx, true)
private val rootView = LinearLayout(ctx).apply {
orientation = LinearLayout.VERTICAL
}
private val rtl = (if (LocaleController.isRTL) Gravity.RIGHT else Gravity.LEFT)
private val _root = LinearLayout(ctx).apply {
@ -51,7 +49,7 @@ class BottomBuilder(val ctx: Context) {
this@BottomBuilder.rootView.addView(this, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 50, Gravity.LEFT or Gravity.BOTTOM))
addView(rightButtonsView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, Gravity.TOP or Gravity.RIGHT));
addView(rightButtonsView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, Gravity.TOP or Gravity.RIGHT))
}
@ -62,7 +60,6 @@ class BottomBuilder(val ctx: Context) {
LinearLayout(ctx).apply {
orientation = LinearLayout.HORIZONTAL
weightSum = 1F
}
@ -224,7 +221,6 @@ class BottomBuilder(val ctx: Context) {
}
@JvmOverloads
fun addCancelItem() {
addItem(LocaleController.getString("Cancel", R.string.Cancel), R.drawable.baseline_cancel_24) {}
@ -260,55 +256,37 @@ class BottomBuilder(val ctx: Context) {
setPadding(AndroidUtilities.dp(18f), 0, AndroidUtilities.dp(18f), 0)
setText(text)
typeface = AndroidUtilities.getTypeface("fonts/rmedium.ttf")
(if (left) buttonsView else rightButtonsView).addView(this, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, Gravity.TOP or Gravity.LEFT))
(if (left) buttonsView else rightButtonsView).addView(this, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, rtl))
setOnClickListener { if (!noAutoDismiss) dismiss();listener(this) }
}
}
fun addItem(): TextCell {
return TextCell(ctx).apply {
this@BottomBuilder.rootView.addView(this, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 48, Gravity.LEFT or Gravity.TOP))
}
}
@JvmOverloads
fun addItem(text: String, icon: Int = 0, red: Boolean = false, listener: ((cell: TextCell) -> Unit)?): TextCell {
return TextCell(ctx).apply {
textView.setGravity(Gravity.LEFT)
background = Theme.getSelectorDrawable(false)
setTextAndIcon(text, icon, false)
setOnClickListener {
dismiss()
listener?.invoke(this)
}
if (red) {
setColors("key_dialogTextRed2", "key_dialogTextRed2")
}
this@BottomBuilder.rootView.addView(this, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 48, Gravity.LEFT or Gravity.TOP))
this@BottomBuilder.rootView.addView(this, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 48, rtl))
}
}
fun addItems(text: Array<String?>, icon: Array<Int>?, listener: (index: Int, text: String, cell: TextCell) -> Unit): List<TextCell> {
fun addItems(text: Array<String?>, icon: IntArray?, listener: (index: Int, text: String, cell: TextCell) -> Unit): List<TextCell> {
val list = mutableListOf<TextCell>()
@ -339,7 +317,7 @@ class BottomBuilder(val ctx: Context) {
isFocusable = true
setBackgroundDrawable(null)
this@BottomBuilder.rootView.addView(this, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, -2, if (LocaleController.isRTL) Gravity.RIGHT else Gravity.LEFT, AndroidUtilities.dp(6F), 0, 0, 0))
this@BottomBuilder.rootView.addView(this, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, -2, rtl, AndroidUtilities.dp(6F), 0, 0, 0))
}

View File

@ -135,6 +135,7 @@ public class NekoConfig {
public static boolean avatarBackgroundBlur;
public static boolean avatarBackgroundDarken;
public static boolean disableTrending;
public static String getOpenPGPAppName() {
@ -288,6 +289,7 @@ public class NekoConfig {
sendCommentAfterForward = preferences.getBoolean("sendCommentAfterForward", true);
increaseVoiceMessageQuality = preferences.getBoolean("increaseVoiceMessageQuality", true);
acceptSecretChat = preferences.getBoolean("acceptSecretChat", true);
disableTrending = preferences.getBoolean("disableTrending", true);
}
@ -731,13 +733,16 @@ public class NekoConfig {
public static void toggleAcceptSecretChat() {
preferences.edit().putBoolean("acceptSecretChat", acceptSecretChat = !acceptSecretChat).apply();
}
public static void setTabletMode(int mode) {
preferences.edit().putInt("tabletMode", tabletMode = mode).apply();
}
public static void toggleDisableTrending() {
preferences.edit().putBoolean("disableTrending", disableTrending = !disableTrending).apply();
}
private static final String EMOJI_FONT_AOSP = "NotoColorEmoji.ttf";
public static Typeface getSystemEmojiTypeface() {

View File

@ -72,8 +72,9 @@ public class NekoChatSettingsActivity extends BaseFragment implements Notificati
private int useChatAttachMediaMenuRow;
private int disableLinkPreviewByDefaultRow;
private int sendCommentAfterForwardRow;
private int disableProximityEventsRow;
private int disableTrendingRow;
private int mapPreviewRow;
private int messageMenuRow;
private int chat2Row;
@ -251,6 +252,11 @@ public class NekoChatSettingsActivity extends BaseFragment implements Notificati
if (view instanceof TextCheckCell) {
((TextCheckCell) view).setChecked(NekoConfig.disableProximityEvents);
}
} else if (position == disableTrendingRow) {
NekoConfig.toggleDisableTrending();
if (view instanceof TextCheckCell) {
((TextCheckCell) view).setChecked(NekoConfig.disableTrending);
}
}
});
@ -279,14 +285,16 @@ public class NekoChatSettingsActivity extends BaseFragment implements Notificati
disablePhotoSideActionRow = rowCount++;
hideKeyboardOnChatScrollRow = rowCount++;
disableVibrationRow = rowCount ++;
skipOpenLinkConfirmRow = rowCount ++;
disableVibrationRow = rowCount++;
skipOpenLinkConfirmRow = rowCount++;
rearVideoMessagesRow = rowCount++;
confirmAVRow = rowCount++;
useChatAttachMediaMenuRow = rowCount ++;
disableLinkPreviewByDefaultRow = rowCount ++;
sendCommentAfterForwardRow = rowCount ++;
disableProximityEventsRow = rowCount ++;
useChatAttachMediaMenuRow = rowCount++;
disableLinkPreviewByDefaultRow = rowCount++;
sendCommentAfterForwardRow = rowCount++;
disableProximityEventsRow = rowCount++;
disableTrendingRow = rowCount++;
mapPreviewRow = rowCount++;
messageMenuRow = rowCount++;
chat2Row = rowCount++;
@ -626,6 +634,8 @@ public class NekoChatSettingsActivity extends BaseFragment implements Notificati
textCell.setTextAndCheck(LocaleController.getString("DisableVibration", R.string.DisableVibration), NekoConfig.disableVibration, true);
} else if (position == disableProximityEventsRow) {
textCell.setTextAndCheck(LocaleController.getString("DisableProximityEvents", R.string.DisableProximityEvents), NekoConfig.disableProximityEvents, true);
} else if (position == disableTrendingRow) {
textCell.setTextAndCheck(LocaleController.getString("DisableTrending", R.string.DisableTrending), NekoConfig.disableTrending, true);
}
break;
}

View File

@ -60,7 +60,10 @@ object AlertUtil {
fun showToast(e: Throwable) = showToast(e.message ?: e.javaClass.simpleName)
@JvmStatic
fun showToast(e: TLRPC.TL_error) = showToast("${e.code}: ${e.text}")
fun showToast(e: TLRPC.TL_error?) {
if (e == null) return
showToast("${e.code}: ${e.text}")
}
@JvmStatic
fun showToast(text: String) = UIUtil.runOnUIThread(Runnable {

View File

@ -16,7 +16,6 @@ import android.os.Environment
import android.util.Base64
import android.view.Gravity
import android.view.View
import android.view.WindowManager
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.Toast
@ -34,7 +33,8 @@ import com.v2ray.ang.V2RayConfig.VMESS_PROTOCOL
import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
import org.telegram.messenger.*
import org.telegram.messenger.browser.Browser
import org.telegram.ui.ActionBar.BottomSheet
import tw.nekomimi.nekogram.BottomBuilder
import tw.nekomimi.nekogram.utils.AlertUtil.showToast
import java.io.File
import java.net.NetworkInterface
import java.util.*
@ -134,7 +134,7 @@ object ProxyUtil {
error = true
AlertUtil.showToast(LocaleController.getString("BrokenLink", R.string.BrokenLink) + ": ${it.message ?: it.javaClass.simpleName}")
showToast(LocaleController.getString("BrokenLink", R.string.BrokenLink) + ": ${it.message ?: it.javaClass.simpleName}")
}
@ -167,7 +167,7 @@ object ProxyUtil {
error = true
AlertUtil.showToast(LocaleController.getString("BrokenLink", R.string.BrokenLink) + ": ${it.message ?: it.javaClass.simpleName}")
showToast(LocaleController.getString("BrokenLink", R.string.BrokenLink) + ": ${it.message ?: it.javaClass.simpleName}")
}
@ -183,7 +183,7 @@ object ProxyUtil {
if (proxies.isNullOrEmpty()) {
if (!error) AlertUtil.showToast(LocaleController.getString("BrokenLink", R.string.BrokenLink))
if (!error) showToast(LocaleController.getString("BrokenLink", R.string.BrokenLink))
return
@ -255,7 +255,7 @@ object ProxyUtil {
} else {
AlertUtil.showToast("${LocaleController.getString("BrokenLink", R.string.BrokenLink)}: ${it.message}")
showToast("${LocaleController.getString("BrokenLink", R.string.BrokenLink)}: ${it.message}")
}
@ -386,7 +386,9 @@ object ProxyUtil {
setOnLongClickListener {
BottomSheet.Builder(ctx).setItems(arrayOf(
val builder = BottomBuilder(ctx)
builder.addItems(arrayOf(
LocaleController.getString("SaveToGallery", R.string.SaveToGallery),
LocaleController.getString("Cancel", R.string.Cancel)
@ -396,7 +398,7 @@ object ProxyUtil {
R.drawable.baseline_image_24,
R.drawable.baseline_cancel_24
)) { _, i ->
)) { i, _, _ ->
if (i == 0) {
@ -404,7 +406,7 @@ object ProxyUtil {
getOwnerActivity(ctx).requestPermissions(arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), 4)
return@setItems
return@addItems
}
@ -423,16 +425,18 @@ object ProxyUtil {
}
AndroidUtilities.addMediaToGallery(saveTo.path)
AlertUtil.showToast(LocaleController.getString("PhotoSavedHint", R.string.PhotoSavedHint))
showToast(LocaleController.getString("PhotoSavedHint", R.string.PhotoSavedHint))
}.onFailure {
FileLog.e(it)
AlertUtil.showToast(it)
showToast(it)
}
}
}.show()
}
builder.show()
return@setOnLongClickListener true
@ -494,40 +498,45 @@ object ProxyUtil {
} catch (e: Throwable) {
AlertUtil.showToast(LocaleController.getString("NoQrFound", R.string.NoQrFound))
showToast(LocaleController.getString("NoQrFound", R.string.NoQrFound))
}
}
@JvmStatic
fun showLinkAlert(ctx: Activity, text: String) {
@JvmOverloads
fun showLinkAlert(ctx: Activity, text: String, tryInternal: Boolean = true) {
val builder = BottomSheet.Builder(ctx)
val builder = BottomBuilder(ctx)
var isUrl = false
runCatching {
text.replace("tg://", "https://t.me/").toHttpUrlOrNull()!!
if (Browser.isInternalUrl(text, booleanArrayOf(false))) {
Browser.openUrl(ctx, text)
return
if (tryInternal) {
runCatching {
if (Browser.isInternalUrl(text, booleanArrayOf(false))) {
Browser.openUrl(ctx, text)
return
}
}
isUrl = true
}
builder.setTitle(text)
builder.addTitle(text)
builder.setItems(arrayOf(
if (isUrl) LocaleController.getString("Open", R.string.OpenUrlTitle) else null,
builder.addItems(arrayOf(
LocaleController.getString("Open", R.string.Open),
LocaleController.getString("Copy", R.string.Copy),
LocaleController.getString("Cancel", R.string.Cancel)
)) { _, i ->
if (i == 0) {
Browser.openUrl(ctx, text)
} else if (i == 1) {
AndroidUtilities.addToClipboard(text)
Toast.makeText(ApplicationLoader.applicationContext, LocaleController.getString("LinkCopied", R.string.LinkCopied), Toast.LENGTH_LONG).show()
LocaleController.getString("ShareQRCode", R.string.ShareQRCode)
), intArrayOf(
R.drawable.baseline_open_in_browser_24,
R.drawable.baseline_content_copy_24,
R.drawable.wallet_qr
)) { which, _, _ ->
when (which) {
0 -> Browser.openUrl(ctx, text)
1 -> {
AndroidUtilities.addToClipboard(text)
showToast(LocaleController.getString("LinkCopied", R.string.LinkCopied))
}
else -> showQrDialog(ctx, text)
}
}

View File

@ -1,5 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<vector android:height="24.0dip" android:width="24.0dip" android:viewportWidth="24.0" android:viewportHeight="24.0"
xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#ff000000" android:pathData="M18,7l-1.41,-1.41 -6.34,6.34 1.41,1.41L18,7zM22.24,5.59L11.66,16.17 7.48,12l-1.41,1.41L11.66,19l12,-12 -1.42,-1.41zM0.41,13.41L6,19l1.41,-1.41L1.83,12 0.41,13.41z" />
</vector>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#000000"
android:pathData="M18,7l-1.41,-1.41 -6.34,6.34 1.41,1.41L18,7zM22.24,5.59L11.66,16.17 7.48,12l-1.41,1.41L11.66,19l12,-12 -1.42,-1.41zM0.41,13.41L6,19l1.41,-1.41L1.83,12 0.41,13.41z" />
</vector>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#000000"
android:pathData="M20,6h-8l-2,-2L4,4c-1.1,0 -1.99,0.9 -1.99,2L2,18c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2L22,8c0,-1.1 -0.9,-2 -2,-2zM20,18L4,18L4,8h16v10z" />
</vector>

View File

@ -274,5 +274,6 @@
<string name="TextOrigin">Origin</string>
<string name="TextReplace">Replace</string>
<string name="ReplaceRegex">Use regex</string>
<string name="DisableTrending">Disable Trending</string>
</resources>