Sponsor branding: orange title, shimmer heart, banknote icon, bot quickreg command

This commit is contained in:
instant992 2026-06-19 00:49:00 +04:00
parent 8c9895b99f
commit 7ad1c58901
4 changed files with 43 additions and 7 deletions

View file

@ -23,6 +23,8 @@ import java.io.FileOutputStream;
import java.io.InputStream; import java.io.InputStream;
import java.util.ArrayList; import java.util.ArrayList;
import tw.nekomimi.nekogram.helpers.ShimmerHeartDrawable;
public class FoxPremiumActivity extends BaseNekoSettingsActivity { public class FoxPremiumActivity extends BaseNekoSettingsActivity {
private final int serversRow = rowId++; private final int serversRow = rowId++;
@ -46,7 +48,7 @@ public class FoxPremiumActivity extends BaseNekoSettingsActivity {
titleView.setTypeface(AndroidUtilities.bold()); titleView.setTypeface(AndroidUtilities.bold());
titleView.setGravity(Gravity.CENTER); titleView.setGravity(Gravity.CENTER);
titleView.setText(LocaleController.getString(R.string.FoxPremiumTitle)); titleView.setText(LocaleController.getString(R.string.FoxPremiumTitle));
titleView.setTextColor(getThemedColor(Theme.key_windowBackgroundWhiteBlackText)); titleView.setTextColor(0xFFFF8C00);
topView.addView(titleView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_HORIZONTAL | Gravity.TOP, 16, 158, 16, 0)); topView.addView(titleView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_HORIZONTAL | Gravity.TOP, 16, 158, 16, 0));
var subtitleView = new TextView(context); var subtitleView = new TextView(context);
@ -96,7 +98,9 @@ public class FoxPremiumActivity extends BaseNekoSettingsActivity {
protected void fillItems(ArrayList<UItem> items, UniversalAdapter adapter) { protected void fillItems(ArrayList<UItem> items, UniversalAdapter adapter) {
items.add(UItem.asCustomShadow(topView, 240)); items.add(UItem.asCustomShadow(topView, 240));
items.add(UItem.asButtonSubtext(serversRow, R.drawable.msg2_devices, LocaleController.getString(R.string.FoxPremiumFeatureServersTitle), LocaleController.getString(R.string.FoxPremiumFeatureServersAbout))); items.add(UItem.asButtonSubtext(serversRow, R.drawable.msg2_devices, LocaleController.getString(R.string.FoxPremiumFeatureServersTitle), LocaleController.getString(R.string.FoxPremiumFeatureServersAbout)));
items.add(UItem.asButtonSubtext(sponsorRow, R.drawable.msg_input_like, LocaleController.getString(R.string.FoxPremiumFeatureSponsorTitle), LocaleController.getString(R.string.FoxPremiumFeatureSponsorAbout))); UItem sponsorItem = UItem.asButton(sponsorRow, new ShimmerHeartDrawable(AndroidUtilities.dp(24)), LocaleController.getString(R.string.FoxPremiumFeatureSponsorTitle));
sponsorItem.subtext = LocaleController.getString(R.string.FoxPremiumFeatureSponsorAbout);
items.add(sponsorItem);
items.add(UItem.asButtonSubtext(iconsRow, R.drawable.msg_emoji_smiles, LocaleController.getString(R.string.FoxPremiumFeatureIconsTitle), LocaleController.getString(R.string.FoxPremiumFeatureIconsAbout))); items.add(UItem.asButtonSubtext(iconsRow, R.drawable.msg_emoji_smiles, LocaleController.getString(R.string.FoxPremiumFeatureIconsTitle), LocaleController.getString(R.string.FoxPremiumFeatureIconsAbout)));
items.add(UItem.asShadow(null)); items.add(UItem.asShadow(null));
items.add(UItem.asButton(buttonRow, R.drawable.msg_input_like, LocaleController.getString(R.string.FoxPremiumButton))); items.add(UItem.asButton(buttonRow, R.drawable.msg_input_like, LocaleController.getString(R.string.FoxPremiumButton)));

View file

@ -3,6 +3,10 @@ package tw.nekomimi.nekogram.settings;
import android.content.Context; import android.content.Context;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.Outline; import android.graphics.Outline;
import android.os.Bundle;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.style.ForegroundColorSpan;
import android.view.Gravity; import android.view.Gravity;
import android.view.View; import android.view.View;
import android.view.ViewOutlineProvider; import android.view.ViewOutlineProvider;
@ -17,11 +21,15 @@ import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.AndroidUtilities;
import org.telegram.messenger.FileLog; import org.telegram.messenger.FileLog;
import org.telegram.messenger.LocaleController; import org.telegram.messenger.LocaleController;
import org.telegram.messenger.MessagesController;
import org.telegram.messenger.R; import org.telegram.messenger.R;
import org.telegram.messenger.SendMessagesHelper;
import org.telegram.messenger.UserConfig;
import org.telegram.messenger.browser.Browser; import org.telegram.messenger.browser.Browser;
import org.telegram.ui.ActionBar.BaseFragment; import org.telegram.ui.ActionBar.BaseFragment;
import org.telegram.ui.ActionBar.BottomSheet; import org.telegram.ui.ActionBar.BottomSheet;
import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.ActionBar.Theme;
import org.telegram.ui.ChatActivity;
import org.telegram.ui.Components.BulletinFactory; import org.telegram.ui.Components.BulletinFactory;
import org.telegram.ui.Components.ItemOptions; import org.telegram.ui.Components.ItemOptions;
import org.telegram.ui.Components.LayoutHelper; import org.telegram.ui.Components.LayoutHelper;
@ -34,6 +42,7 @@ import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import tw.nekomimi.nekogram.helpers.ShimmerHeartDrawable;
import tw.nekomimi.nekogram.helpers.remote.ConfigHelper; import tw.nekomimi.nekogram.helpers.remote.ConfigHelper;
public class NekoDonateActivity extends BaseNekoSettingsActivity { public class NekoDonateActivity extends BaseNekoSettingsActivity {
@ -53,8 +62,12 @@ public class NekoDonateActivity extends BaseNekoSettingsActivity {
@Override @Override
protected void fillItems(ArrayList<UItem> items, UniversalAdapter adapter) { protected void fillItems(ArrayList<UItem> items, UniversalAdapter adapter) {
items.add(UItem.asButtonSubtext(supportProjectRow, R.drawable.msg_input_like, LocaleController.getString(R.string.FoxSupportProject), LocaleController.getString(R.string.FoxSupportProjectAbout))); items.add(UItem.asButtonSubtext(supportProjectRow, R.drawable.msg_payment_card, LocaleController.getString(R.string.FoxSupportProject), LocaleController.getString(R.string.FoxSupportProjectAbout)));
items.add(UItem.asButtonSubtext(premiumRow, R.drawable.msg_premium_liststar, LocaleController.getString(R.string.FoxPremiumTitle), LocaleController.getString(R.string.FoxPremiumSubtitle))); SpannableString premiumTitle = new SpannableString(LocaleController.getString(R.string.FoxPremiumTitle));
premiumTitle.setSpan(new ForegroundColorSpan(0xFFFF8C00), 0, premiumTitle.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
UItem premiumItem = UItem.asButton(premiumRow, new ShimmerHeartDrawable(AndroidUtilities.dp(24)), premiumTitle);
premiumItem.subtext = LocaleController.getString(R.string.FoxPremiumSubtitle);
items.add(premiumItem);
items.add(UItem.asButtonSubtext(topSponsorsRow, R.drawable.msg_premium_liststar, LocaleController.getString(R.string.FoxTopSponsors), LocaleController.getString(R.string.FoxTopSponsorsAbout))); items.add(UItem.asButtonSubtext(topSponsorsRow, R.drawable.msg_premium_liststar, LocaleController.getString(R.string.FoxTopSponsors), LocaleController.getString(R.string.FoxTopSponsorsAbout)));
items.add(UItem.asShadow(null)); items.add(UItem.asShadow(null));
@ -72,7 +85,7 @@ public class NekoDonateActivity extends BaseNekoSettingsActivity {
protected void onItemClick(UItem item, View view, int position, float x, float y) { protected void onItemClick(UItem item, View view, int position, float x, float y) {
var id = item.id; var id = item.id;
if (id == supportProjectRow) { if (id == supportProjectRow) {
Browser.openUrl(getParentActivity(), "https://t.me/vpnghostbot"); openBotWithCommand("vpnghostbot", "/quickreg");
} else if (id == premiumRow) { } else if (id == premiumRow) {
presentFragment(new FoxPremiumActivity()); presentFragment(new FoxPremiumActivity());
} else if (id == topSponsorsRow) { } else if (id == topSponsorsRow) {
@ -83,6 +96,25 @@ public class NekoDonateActivity extends BaseNekoSettingsActivity {
} }
} }
private void openBotWithCommand(String username, String command) {
int account = UserConfig.selectedAccount;
MessagesController mc = MessagesController.getInstance(account);
mc.getUserNameResolver().resolve(username, peerId -> {
if (peerId == null || peerId == 0) {
return;
}
AndroidUtilities.runOnUIThread(() -> {
Bundle args = new Bundle();
args.putLong("user_id", peerId);
ChatActivity chatActivity = new ChatActivity(args);
presentFragment(chatActivity);
AndroidUtilities.runOnUIThread(() ->
SendMessagesHelper.getInstance(account).sendMessage(
SendMessagesHelper.SendMessageParams.of(command, peerId)), 150);
});
});
}
@Override @Override
protected boolean onItemLongClick(UItem item, View view, int position, float x, float y) { protected boolean onItemLongClick(UItem item, View view, int position, float x, float y) {
var id = item.id; var id = item.id;

View file

@ -325,7 +325,7 @@
<!-- Accessibility --> <!-- Accessibility -->
<string name="AccessibilitySettings">Настройки специальных возможностей</string> <string name="AccessibilitySettings">Настройки специальных возможностей</string>
<string name="FoxSponsorBadge">Спонсор GhostCloud</string> <string name="FoxSponsorBadge">Спонсор GhostCloud</string>
<string name="FoxPremiumTitle">FoxiGram Premium</string> <string name="FoxPremiumTitle">Спонсор FoxiGram</string>
<string name="FoxPremiumSubtitle">Поддержите проект и откройте эксклюзивные возможности</string> <string name="FoxPremiumSubtitle">Поддержите проект и откройте эксклюзивные возможности</string>
<string name="FoxPremiumFeatureServersTitle">Больше LTE и Wi-Fi серверов</string> <string name="FoxPremiumFeatureServersTitle">Больше LTE и Wi-Fi серверов</string>
<string name="FoxPremiumFeatureServersAbout">Доступ к дополнительным быстрым LTE и Wi-Fi серверам</string> <string name="FoxPremiumFeatureServersAbout">Доступ к дополнительным быстрым LTE и Wi-Fi серверам</string>

View file

@ -155,7 +155,7 @@
<string name="NekogramVersion">FoxiGram %1$s\nBased on Telegram %2$s\nDesigned by %3$s</string> <string name="NekogramVersion">FoxiGram %1$s\nBased on Telegram %2$s\nDesigned by %3$s</string>
<string name="UpdateInstalling">Installing update...</string> <string name="UpdateInstalling">Installing update...</string>
<string name="FoxSponsorBadge">Sponsor GhostCloud</string> <string name="FoxSponsorBadge">Sponsor GhostCloud</string>
<string name="FoxPremiumTitle">FoxiGram Premium</string> <string name="FoxPremiumTitle">Спонсор FoxiGram</string>
<string name="FoxPremiumSubtitle">Support the project and unlock exclusive perks</string> <string name="FoxPremiumSubtitle">Support the project and unlock exclusive perks</string>
<string name="FoxPremiumFeatureServersTitle">More LTE and Wi-Fi servers</string> <string name="FoxPremiumFeatureServersTitle">More LTE and Wi-Fi servers</string>
<string name="FoxPremiumFeatureServersAbout">Get access to additional fast LTE and Wi-Fi servers</string> <string name="FoxPremiumFeatureServersAbout">Get access to additional fast LTE and Wi-Fi servers</string>