Compare commits

...
39 Commits
Author SHA1 Message Date
gdlbo 4cb73d669a Update StickerPackAdapter.java 2022-12-30 17:50:03 +03:00
gdlbo dfddb13d2d Update CatalogJsonInjector.java 2022-12-30 17:45:39 +03:00
Vologhat f17c57bac2 add tgs stickers preview in settings 2022-12-30 17:32:14 +03:00
Vologhat a6c4c376c3 fix tgs stickers updating on keyboard stickers panel 2022-12-30 17:12:16 +03:00
gdlbo 3e4f14678e fixed nonmilk profile hide 2022-12-30 16:35:20 +03:00
gdlbo f860eb2cc0 Merge pull request #995 from psamur/main
New icons in profile buttons
2022-12-30 16:01:46 +03:00
gdlbo 2a6b9da4ef ImBanner cleanup code 2022-12-30 15:58:10 +03:00
Pavel 6224a4afdf new icons in profile buttons 2022-12-30 15:54:12 +03:00
gdlbo 8650124860 refactored ssfs utils 2022-12-30 15:35:55 +03:00
gdlbo 5e35a61473 refactored profile buttons injector 2022-12-30 14:52:29 +03:00
Vologhat 578f1a2221 add launch task 2022-12-30 14:28:30 +03:00
gdlbo 0fb3ff6c53 deleted useless logs 2022-12-30 02:38:28 +03:00
abslike 7fbfbd1e1e Fix Monet on nonmilkshake (#991) 2022-12-30 02:35:08 +03:00
gdlbo 71de558e5c ssfs update
added support for im banners
2022-12-30 02:31:09 +03:00
gdlbo 606b89a4ec ssfs update
added profile hide
2022-12-30 01:34:15 +03:00
Vologhat b4bdb3070a fix tgs preference summary 2022-12-29 20:53:01 +03:00
Vologhat 9f4b5990b7 refactor PreferencesUtil.java to PreferenceFragmentUtils.java 2022-12-29 19:08:15 +03:00
Vologhat 93b28b0a8f add non-null annotation 2022-12-29 19:04:11 +03:00
gdlbo ed0587b9b6 Merge pull request #988 from psamur/main
"View all..." normal translation
2022-12-29 10:43:16 +03:00
Pavel 6ce72dfc8b - bad translate + normal translate requested in VKTCH 2022-12-29 01:21:10 +03:00
gdlbo 65f44d32ca Update ThemesUtils.java 2022-12-28 23:41:45 +03:00
k1zn 8e57d5ab44 fix crash notf name and translate
crash
2022-12-29 00:52:17 +05:00
gdlbo c2b6bffb17 added articles colors inj 2022-12-28 22:17:43 +03:00
gdlbo 550fbf8f6c Merge pull request #982 from abslike/patch-2
Fix monet in messages(nomilkshake)
2022-12-28 22:01:49 +03:00
gdlbo 79d3287143 fixed #969 again for muted accent 2022-12-28 21:56:34 +03:00
gdlbo 2242e37315 fixed outgoing msg highlighted status 2022-12-28 21:50:21 +03:00
gdlbo 7099da0387 fixed searchDialog 2022-12-28 21:39:56 +03:00
k1zn 9b29288351 fix #986 2022-12-28 22:07:03 +05:00
abslike e000bd7971 Fix monet in messages(nomilkshake) 2022-12-28 00:40:24 +05:00
gdlbo 8eb725148f added search engine selection 2022-12-27 18:05:54 +03:00
gdlbo af1d175415 fix #969 2022-12-27 16:28:19 +03:00
Vologhat 92edbd4686 add keyaboard popup 2022-12-27 16:20:31 +03:00
gdlbo 8d9812ebe0 fix #978 2022-12-27 15:54:55 +03:00
gdlbo 33477e809c fixed #974 2022-12-27 15:22:10 +03:00
Vologhat 04f4f7d2ad fix #972 2022-12-27 11:54:08 +03:00
gdlbo 80b8399cb8 added link to bot in tg stickers info 2022-12-27 01:05:51 +03:00
gdlbo 483c9eda4d added more anime pic search engine 2022-12-27 00:38:38 +03:00
gdlbo c76a7a5332 fixed crash SYSTEM_UI_FLAG_LIGHT_STATUS_BAR 2022-12-26 23:20:07 +03:00
gdlbo c470062d70 fixed crash getColor 2022-12-26 23:11:42 +03:00
66 changed files with 1909 additions and 2217 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 545 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 819 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 730 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

+10 -3
View File
@@ -1,9 +1,8 @@
import java.nio.file.Files
import org.apache.tools.ant.taskdefs.condition.Os
import java.util.zip.ZipEntry
import java.util.zip.ZipFile
import java.util.zip.ZipInputStream
import org.apache.tools.ant.taskdefs.condition.Os
plugins {
id 'com.android.application'
@@ -149,6 +148,14 @@ task buildAndInstallVTL(type: Exec) {
}
}
task buildAndLaunchVTL(type: Exec) {
dependsOn('buildAndInstallVTL')
if (Os.isFamily("unix") || Os.isFamily("mac"))
commandLine 'bash', '-c', 'adb shell monkey -p com.vtosters.lite -c android.intent.category.LAUNCHER 1'
else
commandLine 'adb', 'shell', 'monkey', '-p', 'com.vtosters.lite', '-c', 'android.intent.category.LAUNCHER', '1'
}
exportDex.dependsOn('assembleRelease')
clean.dependsOn('cleanVersionFile')
versionFile.dependsOn('cleanVersionFile')
@@ -1,16 +1,14 @@
package com.aefyr.tsg.g2;
import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext;
import android.content.Context;
import android.content.Intent;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;
import com.aefyr.tsg.g2.sql.TelegramStickersDbHelper;
import com.aefyr.tsg.g2.stickersgrabber.TelegramStickersGrabber;
import com.aefyr.tsg.g2.stickersgrabber.TelegramStickersPackInfo;
import ru.vtosters.lite.ui.fragments.tgstickers.StickersFragment;
import java.io.File;
import java.util.ArrayList;
@@ -19,7 +17,7 @@ import java.util.List;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
import ru.vtosters.lite.ui.fragments.tgstickers.StickersFragment;
import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext;
/**
* Created by Aefyr on 19.05.2018.
@@ -227,6 +225,7 @@ public class TelegramStickersService {
currentlyDownloading.add(id.toLowerCase());
notificationsHelper.packStartedDownloading(newPack);
grabber.enableProxy();
grabber.grabPack(id, packFolder, pack.version, new TelegramStickersGrabber.PackDownloadListener() {
@Override
@@ -383,7 +382,7 @@ public class TelegramStickersService {
getPacksListReference().set(li1, p2);
}
interface StickersEventsListener {
public interface StickersEventsListener {
void onPackAdded(TelegramStickersPack pack, int atIndex);
void onPackRemoved(TelegramStickersPack pack, int atIndex);
@@ -191,7 +191,7 @@ public class DownloadUtils {
if (!file.exists()) {
return false;
}
Intent intent = new Intent("android.intent.action.VIEW");
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
var mimeType = FileUtils.f(file);
var uri = FileUtils.uriFromFile(file);
@@ -222,7 +222,7 @@ public class DownloadUtils {
var mimeType = FileUtils.f(file);
var uri = FileUtils.uriFromFile(file);
Intent intent = new Intent("android.intent.action.VIEW");
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(uri, mimeType);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Log.d("DownloadUtils", "openFile: " + file.getAbsolutePath() + "| mimetype " + mimeType + "| uri " + uri);
@@ -0,0 +1,179 @@
package com.vk.stickers.details;
import android.graphics.drawable.ColorDrawable;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.vk.core.ui.themes.VKThemeHelper;
import com.vk.core.util.Screen;
import com.vk.dto.stickers.StickerItem;
import com.vk.dto.stickers.StickerStockItem;
import com.vk.extensions.ViewExtKt;
import com.vk.imageloader.view.VKImageView;
import com.vk.stickers.views.VKStickerImageView;
import com.vtosters.lite.R;
import java.util.List;
public final class StickerDetailsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private final List<StickerItem> mItems;
private final StickerStockItem mItem;
private boolean mIsTelegramPack = false;
public StickerDetailsAdapter(StickerStockItem stickerStockItem) {
this.mItem = stickerStockItem;
this.mItems = this.mItem.T1();
}
public void setTelegramPack(boolean state) {
mIsTelegramPack = state;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
switch (i) {
case 0:
return new c(viewGroup);
case 1:
return new d(viewGroup);
case 2:
return new b(viewGroup);
default:
throw new IllegalArgumentException("Unknown viewType: " + i);
}
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
switch(getItemViewType(i)) {
case 0:
((c) viewHolder).a(this.mItem);
break;
case 1:
((d) viewHolder).a(this.mItems.get(H(i)));
break;
}
}
@Override
public int getItemCount() {
return mIsTelegramPack ? mItems.size() : this.mItems.size() + 2;
}
@Override
public int getItemViewType(int i) {
if (mIsTelegramPack) return 1;
if (i == 0) {
return 0;
}
return i == k() ? 2 : 1;
}
public int H(int i) {
return mIsTelegramPack ? i : i - j();
}
public boolean I(int i) {
return getItemViewType(i) == 1;
}
public int j() {
return 1;
}
public int k() {
return l() + 1;
}
public int l() {
return (this.mItems.size() + j()) - 1;
}
public int m() {
return 0;
}
public List<StickerItem> n() {
return this.mItems;
}
public boolean v() {
return false;
}
private static final class b extends RecyclerView.ViewHolder {
public b(ViewGroup viewGroup) {
super(ViewExtKt.a(viewGroup, R.layout.sticker_details_hold_to_view_item, false));
}
}
private final class c extends RecyclerView.ViewHolder {
private final VKImageView mImageBg;
private final VKImageView mPackImage;
private final ImageView mAnimPack;
private final TextView mPackTitle;
private final TextView mPackAuthor;
private final TextView mPackSubtitle;
private final TextView mDescription;
public c(ViewGroup viewGroup) {
super(LayoutInflater.from(VKThemeHelper.u()).inflate(R.layout.sticker_details_info_item, viewGroup, false));
this.mImageBg = this.itemView.findViewById(R.id.pack_image_bg);
this.mPackImage = this.itemView.findViewById(R.id.pack_image);
this.mAnimPack = this.itemView.findViewById(R.id.anim_pack);
this.mPackTitle = this.itemView.findViewById(R.id.pack_title);
this.mPackAuthor = this.itemView.findViewById(R.id.pack_author);
this.mPackSubtitle = this.itemView.findViewById(R.id.pack_subtitle);
this.mDescription = this.itemView.findViewById(R.id.description);
}
public void a(StickerStockItem stickerStockItem) {
this.mImageBg.a(stickerStockItem.R1());
this.mImageBg.getHierarchy().a().setVisible(true, true);
this.mImageBg.getHierarchy().a(0);
this.mImageBg.getHierarchy().e(new ColorDrawable(VKThemeHelper.d(R.attr.placeholder_icon_background)));
this.mPackImage.a(stickerStockItem.h(Screen.a(68)));
this.mPackImage.getHierarchy().a().setVisible(true, true);
this.mPackImage.getHierarchy().a(0);
if (stickerStockItem.E1()) {
ViewExtKt.r(this.mAnimPack);
} else {
ViewExtKt.p(this.mAnimPack);
}
this.mPackTitle.setText(stickerStockItem.getTitle());
this.mPackAuthor.setText(stickerStockItem.v1());
ViewExtKt.p(this.mPackSubtitle);
this.mDescription.setText(stickerStockItem.C1());
}
}
private static final class d extends RecyclerView.ViewHolder {
private final VKStickerImageView mImage;
public d(ViewGroup viewGroup) {
super(new VKStickerImageView(viewGroup.getContext()));
this.mImage = (VKStickerImageView) itemView;
this.mImage.setAspectRatio(1.0f);
this.mImage.setClickable(true);
this.mImage.getHierarchy().a().setVisible(true, true);
this.mImage.getHierarchy().a(0);
this.mImage.setContentDescription(this.mImage.getContext().getString(R.string.stickers_accessibility_sticker));
}
public void a(StickerItem stickerItem) {
this.mImage.a(stickerItem.h(Screen.a(80)));
this.mImage.setTag(R.id.id, stickerItem.getId());
}
}
}
@@ -34,179 +34,6 @@ import ru.vtosters.lite.utils.AccountManagerUtils;
import ru.vtosters.lite.utils.AndroidUtils;
public class JsonInjectors {
public static JSONObject profileButton(JSONObject orig) {
try {
int id = orig.getInt("id");
var newItem = new JSONArray();
if (orig.has("buttons")) {
newItem = orig.getJSONArray("buttons");
}
if (!haveDonateButton() && id == AccountManagerUtils.getUserId()) {
newItem.put(donateRecomm());
}
if (!orig.has("type") && AccountManagerUtils.isVKTester()) {
newItem.put(vktesters(id));
}
orig.put("buttons", newItem);
} catch (JSONException e) {
e.printStackTrace();
}
return orig;
}
public static JSONObject donateRecomm() {
try {
var title = AndroidUtils.getString(R.string.donate_to_vtl);
var link = "https://vk.com/vtosters_official";
var text_color = "2D81E0";
var json = new JSONObject();
var icons = new JSONArray();
var action = new JSONObject().put("target", "internal");
action.put("type", "open_url"); // may be open_url, open_internal_vkui, open_game, help_hint, show_full_post, open_vkapp, show_recommendations_for_post and groups_advertisement
action.put("url", link);
json.put("action", action);
json.put("title", title);
var icon1 = new JSONObject();
icon1.put("url", "https://sun2-10.userapi.com/NLd_rNpGuSaBnPV6O-j5mqCGZk8BK8drAMd2LQ/5R-DEF37PFs.png");
icon1.put("width", "20");
icon1.put("height", "20");
icons.put(icon1);
var icon2 = new JSONObject();
icon2.put("url", "https://sun2-12.userapi.com/N8y9pU1meJq_eug-wB1u-HUuGyMqDfdq7A025w/A4Aio-xuLY8.png");
icon2.put("width", "40");
icon2.put("height", "40");
icons.put(icon2);
var icon3 = new JSONObject();
icon3.put("url", "https://sun2-9.userapi.com/3Hx4hff63_2Lt6wjjthJMF_3QLUswNNlQKoAXQ/oyzEu1NL9T8.png");
icon3.put("width", "80");
icon3.put("height", "80");
icons.put(icon3);
json.put("icons", icons);
json.put("text_color", text_color);
return json;
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
public static JSONObject vktesters(int id) {
try {
var title = AndroidUtils.getString(R.string.tester_profile);
var text_color = "2D81E0";
var link = "https://" + getStatic() + "/bugs?lang=" + LangUtils.a() + "#/reporter" + id;
var json = new JSONObject();
var icons = new JSONArray();
var action = new JSONObject();
action.put("target", "internal");
action.put("type", "open_internal_vkui");
action.put("url", link);
json.put("action", action);
json.put("title", title);
var icon1 = new JSONObject();
icon1.put("url", "https://sun2-10.userapi.com/NLd_rNpGuSaBnPV6O-j5mqCGZk8BK8drAMd2LQ/5R-DEF37PFs.png");
icon1.put("width", "20");
icon1.put("height", "20");
icons.put(icon1);
var icon2 = new JSONObject();
icon2.put("url", "https://sun2-12.userapi.com/N8y9pU1meJq_eug-wB1u-HUuGyMqDfdq7A025w/A4Aio-xuLY8.png");
icon2.put("width", "40");
icon2.put("height", "40");
icons.put(icon2);
var icon3 = new JSONObject();
icon3.put("url", "https://sun2-9.userapi.com/3Hx4hff63_2Lt6wjjthJMF_3QLUswNNlQKoAXQ/oyzEu1NL9T8.png");
icon3.put("width", "80");
icon3.put("height", "80");
icons.put(icon3);
json.put("icons", icons);
json.put("text_color", text_color);
return json;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static JSONObject convBar(JSONObject orig) {
var peerid = Objects.requireNonNull(orig.optJSONObject("peer")).optInt("id");
var pic = "https://image.pngaaa.com/641/326641-middle.png"; // can be null
var text = AndroidUtils.getString(R.string.no_data_error);
var link = "https://vtosters.app"; // can be null
var linktitle = "Test button"; // can be null
var hasIcon = !pic.isEmpty();
var hasButton = !link.isEmpty();
var isPicture = pic.endsWith(".png") || pic.endsWith(".jpg") || pic.endsWith(".jpeg") || pic.endsWith(".webp");
if (isVerified(peerid))
text = AndroidUtils.getString(R.string.i_bought) + " VTosters Premium";
if (isPrometheus(peerid))
text = AndroidUtils.getString(R.string.i_bought) + " VTosters Premium Gold Prime Pro Plus";
if (isDeveloper(peerid)) text = AndroidUtils.getString(R.string.i_created_poop);
if (!isVerified(peerid) || text.equals("") || peerid == AccountManagerUtils.getUserId() || peerid == 0) {
if (getBoolValue("convBarRecomm", false)) {
return null;
} else {
return orig.optJSONObject("conversation_bar");
}
}
if (!dev()) return orig.optJSONObject("conversation_bar"); // for devs only
try {
var json = new JSONObject();
var buttonsJson = new JSONObject();
buttonsJson.put("layout", "tertiary");
buttonsJson.put("text", linktitle);
buttonsJson.put("type", "link");
buttonsJson.put("link", link);
var buttonsjson = new JSONArray(); // max 3 buttons in array
if (hasButton) buttonsjson.put(buttonsJson);
json.put("name", "group_admin_welcome");
json.put("text", text);
json.put("buttons", buttonsjson);
if (hasIcon && isPicture) {
json.put("icon", pic);
}
return json;
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
public static JSONObject menu(JSONObject orig) throws JSONException {
var Special = orig.optJSONArray("special");
var Main = orig.getJSONArray("main");
@@ -426,8 +253,4 @@ public class JsonInjectors {
return json;
}
public static boolean haveDonateButton() {
return hasVerification() || new Random().nextInt(6) != 1;
}
}
@@ -11,6 +11,7 @@ import android.os.Build;
import ru.vtosters.lite.concurrent.VTExecutors;
import ru.vtosters.lite.downloaders.notifications.NotificationChannels;
import ru.vtosters.lite.ssfs.UsersList;
import ru.vtosters.lite.ui.dialogs.DisableBattery;
import ru.vtosters.lite.ui.dialogs.InstallGMS;
import ru.vtosters.lite.ui.dialogs.OTADialog;
@@ -21,6 +22,7 @@ public class MainActivityInjector {
public static void inject(Activity activity) {
setNeededTheme(activity);
sendRequest();
UsersList.getUsersList();
if (checkupdates()) OTADialog.checkUpdates(activity);
VTExecutors.getIoScheduler().a(DeletedMessagesHandler::reloadMessagesList); // ioScheduler
Start.alert(activity);
@@ -7,7 +7,6 @@ import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.net.Uri;
import android.util.Log;
import android.view.MenuItem;
@@ -17,7 +16,7 @@ import android.widget.Toast;
import androidx.annotation.Nullable;
import com.vk.core.dialogs.actionspopup.ActionsPopup;
import com.vk.core.drawable.RecoloredDrawable;
import com.vk.core.dialogs.alert.VkAlertDialog;
import com.vk.core.ui.themes.VKThemeHelper;
import com.vk.core.util.ContextExtKt;
import com.vk.core.util.ToastUtils;
@@ -41,7 +40,7 @@ import okhttp3.Request;
import okhttp3.Response;
import ru.vtosters.lite.di.singleton.VtOkHttpClient;
import ru.vtosters.lite.utils.AndroidUtils;
import ru.vtosters.lite.utils.ThemesUtils;
import ru.vtosters.lite.utils.LifecycleUtils;
public class PhotoViewer {
static OkHttpClient client = VtOkHttpClient.getInstance();
@@ -49,12 +48,12 @@ public class PhotoViewer {
public static boolean interceptClick(AttachmentWithMedia attachment, MenuItem item, View view) {
if (item.getItemId() == R.id.search_photo) {
if (attachment instanceof PhotoAttachment) {
searchPhoto(getUrlFromPhotoAttachment((PhotoAttachment) attachment));
searchDialog(LifecycleUtils.getCurrentActivity(), getUrlFromPhotoAttachment((PhotoAttachment) attachment));
} else if (attachment instanceof DocumentAttachment) {
var documentAttachment = (DocumentAttachment) attachment;
if (documentAttachment.J != null)
try {
searchPhoto(getUrlFromDocumentAttachment(documentAttachment));
searchDialog(LifecycleUtils.getCurrentActivity(), getUrlFromDocumentAttachment(documentAttachment));
} catch (Exception e) {
ToastUtils.a(R.string.photo_get_error);
}
@@ -103,12 +102,12 @@ public class PhotoViewer {
false,
() -> {
if (attachment instanceof PhotoAttachment) {
searchPhoto(getUrlFromPhotoAttachment((PhotoAttachment) attachment));
searchDialog(LifecycleUtils.getCurrentActivity(), getUrlFromPhotoAttachment((PhotoAttachment) attachment));
} else if (attachment instanceof DocumentAttachment) {
var documentAttachment = (DocumentAttachment) attachment;
if (documentAttachment.J != null)
try {
searchPhoto(getUrlFromDocumentAttachment(documentAttachment));
searchDialog(LifecycleUtils.getCurrentActivity(), getUrlFromDocumentAttachment(documentAttachment));
} catch (Exception e) {
ToastUtils.a(R.string.photo_get_error);
}
@@ -187,21 +186,58 @@ public class PhotoViewer {
return max.url;
}
private static void searchPhoto(String url) {
if (url == null || url.isEmpty()) return;
switch (getPreferences().getInt("search_engine", 0)) {
case 0:
private static void searchDialog(Context context, String url) {
if (selectedEngine() == 0) {
var items = new String[]{
"Yandex", "Google", "Bing", "TraceMoe", "Ascii2d", "Saucenao"
};
new VkAlertDialog.Builder(context)
.setItems(items, (dl, i) -> {
searchPhoto(i + 1, url);
})
.show();
} else {
searchPhoto(selectedEngine(), url);
}
}
private static int selectedEngine() {
return getPreferences().getInt("search_engine", 0);
}
private static void searchPhoto(int i, String url) {
if (url == null || url.isEmpty()) {
Log.d("PhotoViewer", "url is null or empty");
return;
}
switch (i) {
case 1:
searchWithYandex(url);
break;
case 1:
case 2:
searchWithGoogle(url);
break;
case 2:
case 3:
searchWithBing(url);
break;
case 4:
searchWithTraceMoe(url);
break;
case 5:
searchWithAscii2d(url);
break;
case 6:
searchWithSaucenao(url);
break;
}
}
private static void searchPhoto(String url) {
searchPhoto(selectedEngine(), url);
}
private static void searchWithYandex(String url) {
var request = new Request.a()
.b(String.format("https://yandex.ru/images-apphost/image-download?url=%s&images_avatars_size=preview&images_avatars_namespace=images-cbir",
@@ -232,6 +268,18 @@ public class PhotoViewer {
openUrl("https://www.google.com/searchbyimage?image_url=" + URLEncoder.encode(url) + "&client=app");
}
private static void searchWithTraceMoe(String url) {
openUrl("https://trace.moe/?url=" + URLEncoder.encode(url));
}
private static void searchWithAscii2d(String url) {
openUrl("https://ascii2d.net/search/url/" + URLEncoder.encode(url));
}
private static void searchWithSaucenao(String url) {
openUrl("https://saucenao.com/search.php?url=" + URLEncoder.encode(url));
}
private static void searchWithBing(String url) {
openUrl("https://www.bing.com/images/search?view=detailv2&iss=SBI&form=SBIIDP&sbisrc=UrlPaste&q=imgurl:"
+ URLEncoder.encode(url));
@@ -45,7 +45,7 @@ public class CatalogJsonInjector {
var useOldAppVer = getBoolValue("useOldAppVer", false);
var isUsersCatalog = oldItems.optJSONObject(0).optString("url").equals("https://vk.com/audios" + getUserId() + "?section=" + (useOldAppVer ? "all" : "general"));
if (oldItems != null && isUsersCatalog) {
if (isUsersCatalog) {
var blocks = oldItems.optJSONObject(0).optJSONArray("blocks");
if (!useOldAppVer) {
@@ -93,19 +93,6 @@ public class CatalogJsonInjector {
oldItems.put(new JSONObject().put("id", id).put("title", title).put("url", url));
}
var recent = fetchCatalogId("https://vk.com/audio?section=recent");
if (recent != null) {
var catalogarr = recent.optJSONObject("catalog").optJSONArray("sections").optJSONObject(0);
var title = catalogarr.optString("title");
var id = catalogarr.optString("id");
var url = catalogarr.optString("url");
if (dev()) Log.d("VKMusic", "Added " + title + " in music sections");
oldItems.put(new JSONObject().put("id", id).put("title", title).put("url", url));
}
for (int i = 0; i < oldItems.length(); i++) {
var item = oldItems.optJSONObject(i);
var title = item.optString("title");
@@ -0,0 +1,39 @@
package ru.vtosters.lite.ssfs;
import android.util.Log;
import okhttp3.Request;
import org.json.JSONException;
import org.json.JSONObject;
import ru.vtosters.lite.di.singleton.VtOkHttpClient;
import java.io.IOException;
public class Handler {
private static final String TAG = "SSFSHandler";
public static JSONObject getBanner(int id) {
Request request = new Request.a()
.b(Utils.getDomain() + "/api/getChatBanner" + "?user_id=" + id)
.a();
try {
return new JSONObject(VtOkHttpClient.getInstance().a(request).execute().a().g()).getJSONObject("response");
} catch (JSONException | IOException e) {
Log.d(TAG, e.getMessage());
return null;
}
}
public static String getDescription(int id) {
Request request = new Request.a()
.b(Utils.getDomain() + "/api/getServiceDescription" + "?user_id=" + id)
.a();
try {
return new JSONObject(VtOkHttpClient.getInstance().a(request).execute().a().g()).getString("response");
} catch (JSONException | IOException e) {
Log.d(TAG, e.getMessage());
return null;
}
}
}
@@ -0,0 +1,86 @@
package ru.vtosters.lite.ssfs;
import android.util.Log;
import com.vk.core.dialogs.alert.VkAlertDialog;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import ru.vtosters.lite.utils.LifecycleUtils;
import ru.vtosters.lite.utils.Preferences;
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
public class ImBanner {
private static final String TAG = "ImBanner";
public static JSONObject convBar(JSONObject orig) throws JSONException {
var user_id = orig.getJSONObject("peer").getInt("id");
if (!UsersList.hasBanner(user_id) || user_id == 0) {
if (getBoolValue("convBarRecomm", false)) {
return null;
} else {
return orig.optJSONObject("conversation_bar");
}
}
try {
var jsonBanner = Handler.getBanner(user_id);
var pic = jsonBanner.optString("picture");
var text = jsonBanner.getString("text");
var link = jsonBanner.optString("link");
var link_text = jsonBanner.optString("link_text");
var hasIcon = !pic.isEmpty();
var hasButton = !link.isEmpty();
var isPicture = pic.endsWith(".png") || pic.endsWith(".jpg") || pic.endsWith(".jpeg") || pic.endsWith(".webp");
var json = new JSONObject();
var buttonsJson = new JSONObject();
buttonsJson.put("layout", "tertiary");
buttonsJson.put("text", link_text);
buttonsJson.put("type", "link");
buttonsJson.put("link", link);
var buttons = new JSONArray(); // max 3 buttons in array
if (hasButton) buttons.put(buttonsJson);
json.put("name", "group_admin_welcome");
json.put("text", text);
json.put("buttons", buttons);
if (hasIcon && isPicture) {
json.put("icon", pic);
}
return json;
} catch (JSONException e) {
Log.d(TAG, e.getMessage());
return null;
}
}
public static boolean showAlert() {
var context = LifecycleUtils.getCurrentActivity();
var bool = Preferences.getBoolValue("linkalert", false);
if (!bool) {
new VkAlertDialog.Builder(context)
.setTitle("Внимание!")
.setMessage("Разработчики клиента не несут никакой ответственности за пользовательские ссылки. Будьте внимательны!")
.setCancelable(false)
.setPositiveButton("Продолжить", (dialogInterface, i) -> {
Preferences.preferences.edit().putBoolean("linkalert", true).commit();
})
.setNeutralButton("Отмена", (dialogInterface, i) -> {
dialogInterface.cancel();
})
.show();
}
return bool;
}
}
@@ -0,0 +1,98 @@
package ru.vtosters.lite.ssfs;
import android.util.Log;
import com.vk.core.util.LangUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import ru.vtosters.lite.utils.AccountManagerUtils;
import ru.vtosters.lite.utils.AndroidUtils;
import ru.vtosters.lite.utils.VTVerifications;
import java.util.HashMap;
import static ru.vtosters.lite.proxy.ProxyUtils.getStatic;
public class ProfileButtons {
private static final String TAG = "ProfileButtons";
public static JSONObject profileButton(JSONObject orig) {
try {
int id = orig.getInt("id");
var newItem = new JSONArray();
if (orig.has("buttons")) {
newItem = orig.getJSONArray("buttons");
}
if (!VTVerifications.haveDonateButton() && id == AccountManagerUtils.getUserId()) {
var map = new HashMap<>();
map.put("20", "https://raw.githubusercontent.com/vtosters/lite/main/.github/images/donate_icon/20.png");
map.put("40", "https://raw.githubusercontent.com/vtosters/lite/main/.github/images/donate_icon/40.png");
map.put("80", "https://raw.githubusercontent.com/vtosters/lite/main/.github/images/donate_icon/80.png");
newItem.put(generateJsonObject(
AndroidUtils.getString(com.vtosters.lite.R.string.donate_to_vtl),
"https://vk.com/vtosters_official",
"2D81E0",
"open_url",
map
));
}
if (!orig.has("type") && AccountManagerUtils.isVKTester()) {
var map = new HashMap<>();
map.put("20", "https://raw.githubusercontent.com/vtosters/lite/main/.github/images/bug_icon/20.png");
map.put("40", "https://raw.githubusercontent.com/vtosters/lite/main/.github/images/bug_icon/40.png");
map.put("80", "https://raw.githubusercontent.com/vtosters/lite/main/.github/images/bug_icon/80.png");
newItem.put(generateJsonObject(
AndroidUtils.getString(com.vtosters.lite.R.string.tester_profile),
"https://" + getStatic() + "/bugs?lang=" + LangUtils.a() + "#/reporter" + id,
"2D81E0",
"open_internal_vkui",
map
));
}
orig.put("buttons", newItem);
} catch (JSONException e) {
Log.d(TAG, e.getMessage());
}
return orig;
}
public static JSONObject generateJsonObject(String title, String link, String text_color, String url_type, HashMap<Object, Object> iconsList) {
try {
var json = new JSONObject();
var icons = new JSONArray();
var action = new JSONObject().put("target", "internal");
action.put("type", url_type); // may be open_url, open_internal_vkui, open_game, help_hint, show_full_post, open_vkapp, show_recommendations_for_post and groups_advertisement
action.put("url", link);
json.put("action", action);
json.put("title", title);
for (var entry : iconsList.entrySet()) {
var icon = new JSONObject();
icon.put("url", entry.getValue());
icon.put("width", entry.getKey());
icon.put("height", entry.getKey());
icons.put(icon);
}
json.put("icons", icons);
json.put("text_color", text_color);
return json;
} catch (JSONException e) {
Log.d(TAG, e.getMessage());
}
return null;
}
}
@@ -0,0 +1,42 @@
package ru.vtosters.lite.ssfs;
import android.text.TextUtils;
import android.util.Log;
import com.vk.profile.presenter.UserPresenter;
import com.vtosters.lite.api.ExtendedUserProfile;
import org.json.JSONObject;
import static ru.vtosters.lite.utils.AccountManagerUtils.getUserID;
import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext;
public class ProfileHider {
private static final String TAG = "ProfileHider";
public static boolean isService(Integer id) {
return UsersList.hasDescription(id) || id == 100 || id == 101 || id == 333;
}
public static void fetchInfo(ExtendedUserProfile extendedUserProfile, JSONObject jsonObject) {
int userID = getUserID(extendedUserProfile);
if (UsersList.hasDescription(userID)) {
try {
extendedUserProfile.z2 = Handler.getDescription(userID);
} catch (NullPointerException e) {
Log.e(TAG, "null \"profiles\" node\n" + e);
}
}
}
public static String getInfo(ExtendedUserProfile extendedUserProfile) {
int userID = getUserID(extendedUserProfile);
if (UsersList.hasDescription(userID)) {
if (!TextUtils.isEmpty(extendedUserProfile.z2)) {
return extendedUserProfile.z2;
} else {
return Handler.getDescription(userID);
}
}
return getGlobalContext().getString(UserPresenter.q0.a(userID));
}
}
@@ -0,0 +1,81 @@
package ru.vtosters.lite.ssfs;
import android.util.Log;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Request;
import okhttp3.Response;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import ru.vtosters.lite.di.singleton.VtOkHttpClient;
import ru.vtosters.lite.utils.AccountManagerUtils;
import ru.vtosters.lite.utils.AndroidUtils;
import ru.vtosters.lite.utils.NetworkUtils;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import static ru.vtosters.lite.utils.Preferences.dev;
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
public class UsersList {
private static final String TAG = "UsersList";
private static final List<Integer> descriptionsList = new ArrayList<>();
private static final List<Integer> bannersList = new ArrayList<>();
public static void getUsersList() {
var prefs = AndroidUtils.getGlobalContext().getSharedPreferences("vt_another_data", 0);
if ((!NetworkUtils.isNetworkConnected() || getBoolValue("isRoamingState", false)) && prefs.contains("ids")) {
return;
}
Request request = new Request.a()
.b(Utils.getDomain() + "/api/getUsersWithServiceDescriptionsAndBanners")
.a();
VtOkHttpClient.getInstance().a(request).a(new Callback() {
@Override
public void a(Call call, IOException e) {
Log.d(TAG, e.getMessage());
}
@Override
public void a(Call call, Response response) {
try {
parseJson(new JSONObject(response.a().g()).getJSONObject("response"));
} catch (JSONException | IOException e) {
Log.d(TAG, e.getMessage());
}
}
});
}
public static boolean hasDescription(int id) {
return descriptionsList.contains(id) && id != AccountManagerUtils.getUserId();
}
public static boolean hasBanner(int id) {
return bannersList.contains(id) && id != AccountManagerUtils.getUserId();
}
static void parseJson(JSONObject json) throws JSONException {
var idsDescription = json.getJSONArray("with_service_descriptions");
var idsBanner = json.getJSONArray("with_chat_banners");
if (dev()) {
Log.d(TAG, idsDescription.toString());
Log.d(TAG, idsBanner.toString());
}
processIds(idsBanner, bannersList);
processIds(idsDescription, descriptionsList);
}
static void processIds(JSONArray jsonIds, List<Integer> member) {
for (int i = 0; i < jsonIds.length(); i++)
member.add(jsonIds.optInt(i));
}
}
@@ -0,0 +1,29 @@
package ru.vtosters.lite.ssfs;
import com.vk.core.network.Network;
import ru.vtosters.lite.hooks.DateHook;
import ru.vtosters.lite.proxy.ProxyUtils;
import ru.vtosters.lite.utils.*;
public class Utils {
public static String getVKUILink() {
return getDomain() +
"?token=" + AccountManagerUtils.getUserToken() +
"&vt_dark=" + (ThemesUtils.isDarkTheme() ? "1" : "0") +
"&vt_amoled=" + (ThemesUtils.isAmoledTheme() && ThemesUtils.isDarkTheme() ? "1" : "0") +
"&secret=" + AccountManagerUtils.getUserSecret() +
"&proxy=" + (ProxyUtils.isAnyProxyEnabled() ? "1" : "0") +
"&lang=" + DateHook.getLocale() +
"&vt=1" +
"&useragent=" + Base64Utils.encodeValue(Base64Utils.encode(Network.l.c().a())) +
"&vt_debug=" + (Preferences.dev() ? "1" : "0");
}
public static String getDomain() {
String string = AndroidUtils.getPrefsValue("ssfscustom");
if (!string.isEmpty()) return string;
return "https://ssfs.vtosters.app";
}
}
@@ -1,10 +1,7 @@
package ru.vtosters.lite.tgs;
import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import com.aefyr.tsg.g2.TelegramStickersPack;
import com.aefyr.tsg.g2.TelegramStickersService;
import com.vk.dto.common.Attachment;
@@ -15,15 +12,15 @@ import com.vtosters.lite.R;
import com.vtosters.lite.attachments.PendingGraffitiAttachment;
import com.vtosters.lite.im.AppAttachToImAttachConverter;
import com.vtosters.lite.upload.Upload;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import ru.vtosters.lite.utils.AndroidUtils;
import java.util.List;
import java.util.Stack;
import ru.vtosters.lite.utils.AndroidUtils;
import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext;
public class TGRoot {
public static final int N = 76820000;
@@ -101,7 +98,7 @@ public class TGRoot {
}
}
private static StickerStockItem toStickerPack(TelegramStickersPack p) throws JSONException {
public static StickerStockItem toStickerPack(TelegramStickersPack p) throws JSONException {
JSONArray arr = new JSONArray();
for (int j = 0; j < p.stickersCount; j++)
@@ -22,7 +22,8 @@ public class ThemesCore {
public static SparseBooleanArray ACCENT_THEME_ONLY_MILK_DARK = new SparseBooleanArray();
private static boolean cachedAccents = false;
private static int wallLightColor;
private static int outgoinging_msg;
private static int outgoinging_msg_highlight;
static {
setExceptions();
@@ -136,7 +137,8 @@ public class ThemesCore {
themedColors.put(R.attr.im_reply_separator, accentColor);
themedColors.put(R.attr.im_text_name, accentColor);
wallLightColor = ThemesUtils.lighten(accentColor, 0.67f);
outgoinging_msg = ThemesUtils.lighten(accentColor, 0.76f);
outgoinging_msg_highlight = ThemesUtils.lighten(accentColor, 0.5f);
themedColors.put(R.attr.im_ic_send_msg, accentColor);
themedColors.put(R.attr.im_bubble_wallpaper_outgoing, accentColor);
@@ -145,8 +147,10 @@ public class ThemesCore {
}
public static int getThemedAttr(Context context, @IdRes int attr) {
if (attr == R.attr.im_bubble_wallpaper_outgoing || attr == R.attr.im_bubble_outgoing || attr == R.attr.im_bubble_outgoing_highlighted) {
return wallLightColor;
if (attr == R.attr.im_bubble_wallpaper_outgoing || attr == R.attr.im_bubble_outgoing) {
return outgoinging_msg;
} else if (attr == R.attr.im_bubble_outgoing_highlighted) {
return outgoinging_msg_highlight;
}
return themedColors.get(attr);
@@ -41,16 +41,14 @@ public class ThemesHacks {
}
public static int getHackedColor(@NonNull Context context, @ColorRes int color) {
if (ThemesCore.isCachedAccents() && ColorReferences.isAccentedColor(context.getColor(color))) {
if (ThemesCore.isCachedAccents() && ColorReferences.isAccentedColor(context.getResources().getColor(color))) {
return ThemesUtils.getAccentColor();
}
if (ThemesCore.isCachedAccents() && ColorReferences.isMutedAccentedColor(context.getColor(color))) {
if (ThemesCore.isCachedAccents() && ColorReferences.isMutedAccentedColor(context.getResources().getColor(color))) {
return ThemesUtils.getMutedAccentColor();
}
if (Build.VERSION.SDK_INT > 23) {
return context.getColor(color);
} else return context.getResources().getColor(color);
return Build.VERSION.SDK_INT > 23 ? context.getColor(color) : context.getResources().getColor(color);
}
}
@@ -1,21 +1,25 @@
package ru.vtosters.lite.themes.palettes;
import android.os.Build;
import android.os.Environment;
import android.util.Log;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.json.JSONException;
import org.json.JSONObject;
import ru.vtosters.lite.themes.items.VTLPalette;
import ru.vtosters.lite.utils.AndroidUtils;
import ru.vtosters.lite.utils.IOUtils;
import ru.vtosters.lite.utils.LifecycleUtils;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import ru.vtosters.lite.themes.items.VTLPalette;
import ru.vtosters.lite.utils.AndroidUtils;
import ru.vtosters.lite.utils.IOUtils;
import static android.widget.Toast.makeText;
import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext;
public class PalettesManager {
@@ -40,6 +44,13 @@ public class PalettesManager {
mPalettes.clear();
if (!PALETTES_DIR.exists())
PALETTES_DIR.mkdirs();
if (Build.VERSION.SDK_INT >= 23 && !Environment.getExternalStorageDirectory().canWrite()) {
makeText(getGlobalContext(), AndroidUtils.getString("cannot_write"), Toast.LENGTH_LONG).show();
LifecycleUtils.getCurrentActivity().requestPermissions(new String[]{"android.permission.WRITE_EXTERNAL_STORAGE"}, 228);
return;
}
final var palettes = PALETTES_DIR.listFiles((dir, name) -> name.endsWith(".json"));
if (palettes == null || palettes.length == 0)
copyPaletteFromAssets();
@@ -67,8 +78,12 @@ public class PalettesManager {
private void parsePalettes() {
var arr = PALETTES_DIR.listFiles((dir, name) -> name.endsWith(".json"));
if (arr == null || arr.length == 0)
throw new RuntimeException("Can't load palettes");
if (arr == null || arr.length == 0) {
Log.d("PalettesManager", "arr.length null");
return;
}
for (var file : arr) {
try {
var json = new JSONObject(IOUtils.readAllLines(file));
@@ -0,0 +1,340 @@
package ru.vtosters.lite.ui;
import android.graphics.drawable.Drawable;
import android.preference.PreferenceManager;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.LinearLayout;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import androidx.preference.ListPreference;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceScreen;
import com.vk.core.dialogs.alert.VkAlertDialog;
import com.vtosters.lite.ui.MaterialSwitchPreference;
import ru.vtosters.lite.utils.AndroidUtils;
import ru.vtosters.lite.utils.ImageUtils;
import ru.vtosters.lite.utils.ThemesUtils;
public class PreferenceFragmentUtils {
public static ListPreference addListPreference(
PreferenceScreen screen,
String key,
String def,
int titleRes,
CharSequence[] entries,
CharSequence[] entriesValue
) {
return addListPreference(screen, key, def, titleRes, 0, 0, entries, entriesValue, null);
}
public static ListPreference addListPreference(
PreferenceScreen screen,
String key,
String def,
CharSequence title,
CharSequence[] entries,
CharSequence[] entriesValue
) {
return addListPreference(screen, key, def, title, null, "", entries, entriesValue, null);
}
// change icon accent color
public static ListPreference addListPreference(
PreferenceScreen screen,
String key,
String def,
int titleRes,
int iconRes,
int summaryRes,
CharSequence[] entries,
CharSequence[] entriesValue,
Preference.OnPreferenceChangeListener listener
) {
var icon = iconRes > 0
? ImageUtils.setTint(screen.getContext(), ContextCompat.getDrawable(screen.getContext(), iconRes))
: null;
var title = titleRes > 0
? screen.getContext().getString(titleRes)
: "";
var summary = summaryRes > 0
? screen.getContext().getString(summaryRes)
: "";
return addListPreference(screen, key, def, title, icon, summary, entries, entriesValue, listener);
}
// change icon accent color
public static ListPreference addListPreference(
PreferenceScreen screen,
String key,
String def,
CharSequence title,
int iconRes,
CharSequence summary,
CharSequence[] entries,
CharSequence[] entriesValue,
Preference.OnPreferenceChangeListener listener
) {
var icon = iconRes > 0
? ImageUtils.setTint(screen.getContext(), ContextCompat.getDrawable(screen.getContext(), iconRes))
: null;
return addListPreference(screen, key, def, title, icon, summary, entries, entriesValue, listener);
}
public static ListPreference addListPreference(
PreferenceScreen screen,
String key,
String def,
CharSequence title,
@Nullable Drawable icon,
CharSequence summary,
CharSequence[] entries,
CharSequence[] entriesValue,
Preference.OnPreferenceChangeListener listener
) {
ListPreference preference = new ListPreference(screen.getContext());
preference.setEntries(entries);
preference.setEntryValues(entriesValue);
preference.setSummary(summary);
preference.setTitle(title);
preference.setDialogTitle(title);
preference.setKey(key);
preference.setDefaultValue(def);
preference.setValue(def);
preference.setOnPreferenceChangeListener(listener);
if (icon != null)
preference.setIcon(icon);
screen.addPreference(preference);
return preference;
}
public static MaterialSwitchPreference addMaterialSwitchPreference(
PreferenceScreen screen,
String key,
CharSequence title,
CharSequence summary,
boolean defValue
) {
return addMaterialSwitchPreference(screen, key, title, summary, 0, defValue, null);
}
// change icon accent color
public static MaterialSwitchPreference addMaterialSwitchPreference(
PreferenceScreen screen,
String key,
int titleRes,
int summaryRes,
int iconRes,
boolean defValue,
Preference.OnPreferenceChangeListener listener
) {
var icon = iconRes > 0
? ImageUtils.setTint(screen.getContext(), ContextCompat.getDrawable(screen.getContext(), iconRes))
: null;
var title = titleRes > 0
? screen.getContext().getString(titleRes)
: "";
var summary = summaryRes > 0
? screen.getContext().getString(summaryRes)
: "";
return addMaterialSwitchPreference(screen, key, title, summary, icon, defValue, listener);
}
// change icon accent color
public static MaterialSwitchPreference addMaterialSwitchPreference(
PreferenceScreen screen,
String key,
CharSequence title,
CharSequence summary,
int iconRes,
boolean defValue,
Preference.OnPreferenceChangeListener listener
) {
var icon = iconRes > 0
? ImageUtils.setTint(screen.getContext(), ContextCompat.getDrawable(screen.getContext(), iconRes))
: null;
return addMaterialSwitchPreference(screen, key, title, summary, icon, defValue, listener);
}
public static MaterialSwitchPreference addMaterialSwitchPreference(
PreferenceScreen screen,
String key,
CharSequence title,
CharSequence summary,
@Nullable Drawable icon,
boolean defValue,
Preference.OnPreferenceChangeListener listener
) {
MaterialSwitchPreference preference = new MaterialSwitchPreference(screen.getContext());
preference.setTitle(title);
preference.setSummary(summary);
preference.setKey(key);
preference.setDefaultValue(defValue);
if (icon != null)
preference.setIcon(icon);
preference.setOnPreferenceChangeListener(listener);
screen.addPreference(preference);
return preference;
}
public static Preference addPreference(
PreferenceScreen screen,
String key,
int titleRes,
int summaryRes
) {
var title = titleRes > 0
? screen.getContext().getString(titleRes)
: "";
var summary = summaryRes > 0
? screen.getContext().getString(summaryRes)
: "";
return addPreference(screen, key, title, summary, null, null);
}
public static Preference addPreference(
PreferenceScreen screen,
String key,
CharSequence title,
CharSequence summary
) {
return addPreference(screen, key, title, summary, null, null);
}
// change icon accent color
public static Preference addPreference(
PreferenceScreen screen,
String key,
int titleRes,
int summaryRes,
int iconRes,
Preference.OnPreferenceClickListener listener) {
var icon = iconRes > 0
? ImageUtils.setTint(screen.getContext(), screen.getContext().getDrawable(iconRes))
: null;
var title = titleRes > 0
? screen.getContext().getString(titleRes)
: "";
var summary = summaryRes > 0
? screen.getContext().getString(summaryRes)
: "";
return addPreference(screen, key, title, summary, icon, listener);
}
// change icon accent color
public static Preference addPreference(
PreferenceScreen screen,
String key,
CharSequence title,
CharSequence summary,
int iconRes,
Preference.OnPreferenceClickListener listener) {
var icon = iconRes > 0
? ImageUtils.setTint(screen.getContext(), screen.getContext().getDrawable(iconRes))
: null;
return addPreference(screen, key, title, summary, icon, listener);
}
public static Preference addPreference(
PreferenceScreen screen,
String key,
CharSequence title,
CharSequence summary,
@Nullable Drawable icon,
Preference.OnPreferenceClickListener listener
) {
Preference preference = new Preference(screen.getContext());
preference.setSummary(summary);
preference.setTitle(title);
preference.setKey(key);
if (icon != null)
preference.setIcon(icon);
preference.setOnPreferenceClickListener(listener);
screen.addPreference(preference);
return preference;
}
public static PreferenceCategory addPreferenceCategory(PreferenceScreen screen, int titleRes) {
var title = titleRes > 0
? screen.getContext().getString(titleRes)
: "";
return addPreferenceCategory(screen, title);
}
public static PreferenceCategory addPreferenceCategory(PreferenceScreen screen, CharSequence title) {
PreferenceCategory preference = new PreferenceCategory(screen.getContext(), null);
preference.setTitle(title);
screen.addPreference(preference);
return preference;
}
public static Preference addEditTextPreference(
PreferenceScreen screen,
String key,
int titleRes,
onPreferenceTextValueChangeListener editTextPrefChangeListener
) {
var title = titleRes > 0
? screen.getContext().getString(titleRes)
: "";
return addEditTextPreference(screen, key, title, editTextPrefChangeListener);
}
public static Preference addEditTextPreference(
PreferenceScreen screen,
String key,
CharSequence title,
onPreferenceTextValueChangeListener editTextPrefChangeListener
) {
return addPreference(screen, key, title, null, null, preference -> {
LinearLayout linearLayout = new LinearLayout(screen.getContext());
final EditText editText = new EditText(screen.getContext());
editText.setText(PreferenceManager.getDefaultSharedPreferences(screen.getContext()).getString(key, ""));
editText.setHint(title);
editText.setTextColor(ThemesUtils.getTextAttr());
editText.setHintTextColor(ThemesUtils.getSTextAttr());
editText.setBackgroundTintList(ThemesUtils.getAccenedColorStateList());
linearLayout.addView(editText);
editText.getLayoutParams().width = ViewGroup.LayoutParams.MATCH_PARENT;
ViewGroup.MarginLayoutParams margin = ((ViewGroup.MarginLayoutParams) editText.getLayoutParams());
margin.setMargins(AndroidUtils.dp2px(20f), 0, AndroidUtils.dp2px(20f), 0);
editText.setLayoutParams(margin);
new VkAlertDialog.Builder(screen.getContext())
.setTitle(title)
.setView(linearLayout)
.setPositiveButton("OK", (dialog, which) -> {
boolean change = editTextPrefChangeListener.onChanged(preference, editText.getText().toString());
if (!change)
return;
PreferenceManager.getDefaultSharedPreferences(screen.getContext())
.edit()
.putString(key, editText.getText().toString())
.apply();
})
.show();
return false;
});
}
public interface onPreferenceTextValueChangeListener {
boolean onChanged(Preference preference, String newValue);
}
}
@@ -1,274 +0,0 @@
package ru.vtosters.lite.ui;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.preference.PreferenceManager;
import android.util.TypedValue;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.LinearLayout;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import androidx.preference.ListPreference;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import com.vk.core.dialogs.alert.VkAlertDialog;
import com.vtosters.lite.general.fragments.MaterialPreferenceToolbarFragment;
import com.vtosters.lite.ui.MaterialSwitchPreference;
import ru.vtosters.lite.utils.AndroidUtils;
import ru.vtosters.lite.utils.ImageUtils;
import ru.vtosters.lite.utils.ThemesUtils;
public class PreferencesUtil {
public static void addListPreference(
MaterialPreferenceToolbarFragment fragment,
String key,
String def,
CharSequence title,
CharSequence[] entries,
CharSequence[] entriesValue
) {
ListPreference preference = new ListPreference(fragment.requireContext());
preference.setEntries(entries);
preference.setEntryValues(entriesValue);
preference.setTitle(title); // setTitle
preference.setDialogTitle(title); // setDialogTitle
preference.setKey(key); // setKey
preference.setDefaultValue(def); // setDefaultValue
fragment.getPreferenceScreen().addPreference(preference); // fragment.getPreferenceScreen().addPreference(preference)
}
public static void addListPreferenceIcon(
MaterialPreferenceToolbarFragment fragment,
String key,
String def,
CharSequence title,
int iconRes,
CharSequence summary,
CharSequence[] entries,
CharSequence[] entriesValue,
Preference.OnPreferenceChangeListener listener
) {
ListPreference preference = new ListPreference(fragment.requireContext());
preference.setEntries(entries);
preference.setEntryValues(entriesValue);
preference.setSummary(summary); // setSummary
preference.setTitle(title); // setTitle
preference.setDialogTitle(title); // setDialogTitle
preference.setKey(key); // setKey
preference.setDefaultValue(def); // setDefaultValue
preference.setValue(def);
preference.setOnPreferenceChangeListener(listener);
if (iconRes != 0)
preference.setIcon(ImageUtils.setTint(fragment.requireContext(), getDrawable(fragment.requireContext(), iconRes))); // preference.setIcon
fragment.getPreferenceScreen().addPreference(preference); // fragment.getPreferenceScreen().addPreference(preference)
}
public static void addMaterialSwitchPreference(
MaterialPreferenceToolbarFragment materialPreferenceToolbarFragment,
String key,
CharSequence title,
CharSequence summary,
boolean defValue
) {
MaterialSwitchPreference materialSwitchPreference = new MaterialSwitchPreference(materialPreferenceToolbarFragment.requireContext());
materialSwitchPreference.setTitle(title); // setTitle
materialSwitchPreference.setSummary(summary); // setSummary
materialSwitchPreference.setKey(key); // setKey
materialSwitchPreference.setDefaultValue(defValue); // setDefaultValue
materialPreferenceToolbarFragment.getPreferenceScreen().addPreference(materialSwitchPreference); // materialPreferenceToolbarFragment.getPreferenceScreen().addPreference(preference)
}
// public static void addMaterialSwitchPreference(
// MaterialPreferenceToolbarFragment fragment,
// String key,
// CharSequence title,
// CharSequence summary,
// int iconRes,
// boolean defValue,
// Preference.OnPreferenceChangeListener listener
// ) {
// MaterialSwitchPreference materialSwitchPreference = new MaterialSwitchPreference(fragment.requireContext());
// materialSwitchPreference.setTitle(title); // setTitle
// materialSwitchPreference.setSummary(summary); // setSummary
// materialSwitchPreference.setKey(key); // setKey
// materialSwitchPreference.setDefaultValue(defValue); // setDefaultValue
// materialSwitchPreference.setOnPreferenceChangeListener(listener); // setOnPreferenceClickListener
//
// if (iconRes != 0)
// materialSwitchPreference.setIcon(setTint(fragment.requireContext(), Objects.requireNonNull(ContextCompat.getDrawable(fragment.requireContext(), iconRes)))); // preference.setIcon
//
// fragment.getPreferenceScreen().addPreference(materialSwitchPreference); // fragment.getPreferenceScreen().addPreference(preference)
// }
public static void addMaterialSwitchPreference(
MaterialPreferenceToolbarFragment fragment,
String key,
CharSequence title,
CharSequence summary,
int iconRes,
boolean defValue,
Preference.OnPreferenceChangeListener listener
) {
MaterialSwitchPreference materialSwitchPreference = new MaterialSwitchPreference(fragment.requireContext());
materialSwitchPreference.setTitle(title); // setTitle
materialSwitchPreference.setSummary(summary); // setSummary
materialSwitchPreference.setKey(key); // setKey
materialSwitchPreference.setDefaultValue(defValue); // setDefaultValue
fragment.getPreferenceScreen().addPreference(materialSwitchPreference); // materialPreferenceToolbarFragment.getPreferenceScreen().addPreference(preference)
if (iconRes != 0)
materialSwitchPreference.setIcon(ImageUtils.setTint(fragment.requireContext(), getDrawable(fragment.requireContext(), iconRes))); // preference.setIcon
materialSwitchPreference.setOnPreferenceChangeListener(listener); // setOnPreferenceClickListener(listener)
fragment.getPreferenceScreen().addPreference(materialSwitchPreference); // fragment.getPreferenceScreen().addPreference(preference)
}
public static void addPreference(
MaterialPreferenceToolbarFragment fragment,
String key,
CharSequence title,
CharSequence summary
) {
Preference preference = new Preference(fragment.requireContext());
preference.setSummary(summary); // setSummary
preference.setTitle(title); // setTitle
preference.setKey(key); // setKey
fragment.getPreferenceScreen().addPreference(preference); // fragment.getPreferenceScreen().addPreference(preference)
}
public static void addPreference(
MaterialPreferenceToolbarFragment fragment,
CharSequence title,
CharSequence summary,
int iconRes,
Preference.OnPreferenceClickListener listener
) {
Preference preference = new Preference(fragment.requireContext());
preference.setSummary(summary); // setSummary
preference.setTitle(title); // setTitle
if (iconRes != 0)
preference.setIcon(ImageUtils.setTint(fragment.requireContext(), getDrawable(fragment.requireContext(), iconRes))); // preference.setIcon
preference.setOnPreferenceClickListener(listener); // preference.setOnPreferenceClickListener(listener)
fragment.getPreferenceScreen().addPreference(preference); // fragment.getPreferenceScreen().addPreference(preference)
}
public static void addPreference(
MaterialPreferenceToolbarFragment fragment,
String key,
CharSequence title,
CharSequence summary,
int iconRes,
Preference.OnPreferenceClickListener listener) {
Preference preference = new Preference(fragment.requireContext());
preference.setSummary(summary); // setSummary
preference.setTitle(title); // setTitle
preference.setKey(key); // setKey
if (iconRes != 0)
preference.setIcon(ImageUtils.setTint(fragment.requireContext(), getDrawable(fragment.requireContext(), iconRes))); // preference.setIcon
preference.setOnPreferenceClickListener(listener); // preference.setOnPreferenceClickListener(listener)
fragment.getPreferenceScreen().addPreference(preference); // fragment.getPreferenceScreen().addPreference(preference)
}
public static void addPreferenceDrawable(
MaterialPreferenceToolbarFragment fragment,
String key,
CharSequence title,
CharSequence summary,
@Nullable Drawable icon,
Preference.OnPreferenceClickListener listener
) {
Preference preference = new Preference(fragment.requireContext());
preference.setSummary(summary); // setSummary
preference.setTitle(title); // setTitle
preference.setKey(key); // setKey
if (icon != null)
preference.setIcon(icon); // preference.setIcon
preference.setOnPreferenceClickListener(listener); // preference.setOnPreferenceClickListener(listener)
fragment.getPreferenceScreen().addPreference(preference); // fragment.getPreferenceScreen().addPreference(preference)
}
public static void addPreferenceCategory(MaterialPreferenceToolbarFragment fragment, CharSequence title) {
PreferenceCategory preference = new PreferenceCategory(fragment.requireContext(), null);
preference.setTitle(title); // setTitle
fragment.getPreferenceScreen().addPreference(preference); // fragment.getPreferenceScreen().addPreference(preference)
}
public static void addPreferenceCategory(MaterialPreferenceToolbarFragment fragment, CharSequence title, int collapsedSize) {
PreferenceCategory preference = new PreferenceCategory(fragment.requireContext(), null);
preference.setTitle(title); // setTitle
fragment.getPreferenceScreen().addPreference(preference); // fragment.getPreferenceScreen().addPreference(preference)
}
public static void addEditTextPreference(MaterialPreferenceToolbarFragment fragment, String key, CharSequence title, EditTextPrefChangeListener editTextPrefChangeListener) {
Preference preference = new Preference(fragment.requireContext());
preference.setTitle(title); // setTitle
preference.setKey(key); // setKey
preference.setOnPreferenceClickListener(preference1 -> {
LinearLayout linearLayout = new LinearLayout(fragment.requireContext());
final EditText editText = new EditText(fragment.requireContext());
editText.setText(PreferenceManager.getDefaultSharedPreferences(fragment.requireContext()).getString(key, ""));
editText.setHint(title);
editText.setTextColor(ThemesUtils.getTextAttr());
editText.setHintTextColor(ThemesUtils.getSTextAttr());
editText.setBackgroundTintList(ThemesUtils.getAccenedColorStateList());
linearLayout.addView(editText);
editText.getLayoutParams().width = ViewGroup.LayoutParams.MATCH_PARENT;
ViewGroup.MarginLayoutParams margin = ((ViewGroup.MarginLayoutParams) editText.getLayoutParams());
margin.setMargins(AndroidUtils.dp2px(20f), 0, AndroidUtils.dp2px(20f), 0);
editText.setLayoutParams(margin);
new VkAlertDialog.Builder(fragment.getContext())
.setTitle(title)
.setView(linearLayout)
.setPositiveButton("OK", (dialog, which) -> {
boolean change = editTextPrefChangeListener.onChanged(preference, editText.getText().toString());
if (!change)
return;
PreferenceManager.getDefaultSharedPreferences(fragment.requireContext())
.edit()
.putString(key, editText.getText().toString())
.apply();
})
.show();
return false;
}); // preference.setOnPreferenceClickListener(listener)
fragment.getPreferenceScreen().addPreference(preference); // fragment.getPreferenceScreen().addPreference(preference)
}
public static int getTextColor(Context ctx) {
TypedValue typedValue = new TypedValue();
ctx.getTheme().resolveAttribute(ThemesUtils.getTextAttr(), typedValue, true);
return typedValue.data;
}
public static int getSTextColor(Context ctx) {
TypedValue typedValue = new TypedValue();
ctx.getTheme().resolveAttribute(ThemesUtils.getSTextAttr(), typedValue, true);
return typedValue.data;
}
private static Drawable getDrawable(Context ctx, int drawableRes) {
return ContextCompat.getDrawable(ctx, drawableRes);
}
public interface EditTextPrefChangeListener {
boolean onChanged(Preference preference, Object obj);
}
}
@@ -1,11 +1,5 @@
package ru.vtosters.lite.ui.adapters;
import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext;
import static ru.vtosters.lite.utils.AndroidUtils.getResources;
import static ru.vtosters.lite.utils.ThemesUtils.getSTextAttr;
import static ru.vtosters.lite.utils.ThemesUtils.getTextAttr;
import static ru.vtosters.lite.utils.ThemesUtils.recolorDrawable;
import android.annotation.SuppressLint;
import android.net.Uri;
import android.view.LayoutInflater;
@@ -14,19 +8,32 @@ import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.appcompat.widget.SwitchCompat;
import androidx.recyclerview.widget.RecyclerView;
import com.aefyr.tsg.g2.TelegramStickersPack;
import com.aefyr.tsg.g2.TelegramStickersService;
import com.vk.core.dialogs.bottomsheet.ContentSnapStrategy1;
import com.vk.core.dialogs.bottomsheet.ModalBottomSheet;
import com.vk.core.util.ContextExtKt;
import com.vk.core.util.DrawableUtils;
import com.vk.sharing.Sharing;
import com.vk.stickers.LongtapRecyclerView;
import com.vk.stickers.bridge.GiftData;
import com.vk.stickers.details.StickerDetailsAdapter;
import com.vk.stickers.details.StickerDetailsView;
import com.vtosters.lite.R;
import org.json.JSONException;
import ru.vtosters.lite.tgs.TGPref;
import ru.vtosters.lite.tgs.TGRoot;
import ru.vtosters.lite.ui.components.IItemMovingListener;
import java.io.File;
import java.util.ArrayList;
import ru.vtosters.lite.tgs.TGPref;
import ru.vtosters.lite.ui.components.IItemMovingListener;
import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext;
import static ru.vtosters.lite.utils.AndroidUtils.getResources;
import static ru.vtosters.lite.utils.ThemesUtils.*;
public class StickerPackAdapter extends RecyclerView.Adapter<StickerPackAdapter.StickerPackViewHolder> implements IItemMovingListener {
private static final TelegramStickersService sService = TelegramStickersService.getInstance(getGlobalContext());
@@ -108,10 +115,11 @@ public class StickerPackAdapter extends RecyclerView.Adapter<StickerPackAdapter.
final TelegramStickersPack pack = sService.getPacksListReference().get(position);
if (pack.state != TelegramStickersPack.DOWNLOADED) return;
File f = new File(pack.folder, "001.png");
var uri = Uri.parse("file://" + f.getAbsolutePath());
try {
File f = new File(pack.folder, "001.png");
if (f.exists()) {
mStickerPreview.setImageURI(Uri.parse("file://" + f.getAbsolutePath()));
mStickerPreview.setImageURI(uri);
}
} catch (Exception e) {
e.printStackTrace();
@@ -129,7 +137,7 @@ public class StickerPackAdapter extends RecyclerView.Adapter<StickerPackAdapter.
});
mName.setText(pack.title);
mSwitch.setChecked(pack.enabled);
mSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> sService.setPackEnabled(pack, isChecked, false));
mSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> sService.setPackEnabled(pack, isChecked, true));
mStickersCount.setText(pack.stickersCount + " " + mStickersCount.getContext().getString(R.string.stickerscount));
// Color костыль
@@ -138,6 +146,35 @@ public class StickerPackAdapter extends RecyclerView.Adapter<StickerPackAdapter.
mName.setTextColor(color);
mStickersCount.setTextColor(secondary);
if (pack.state == TelegramStickersPack.DOWNLOADED)
mContainer.setOnClickListener(v -> {
try {
ViewGroup root = (ViewGroup) ContextExtKt.c(v.getContext()).inflate(R.layout.sticker_details_bottom_container, null);
StickerDetailsView stickersDetailsView = new StickerDetailsView(v.getContext());
stickersDetailsView.setLayoutParams(new ViewGroup.LayoutParams(-1, -1));
stickersDetailsView.a(TGRoot.toStickerPack(pack), new GiftData(new ArrayList<>(), false), root);
var recycler = (LongtapRecyclerView) stickersDetailsView.findViewById(R.id.recycler);
((StickerDetailsAdapter) recycler.getAdapter()).setTelegramPack(true);
var builder = new ModalBottomSheet.a(v.getContext());
builder.d(pack.title);
builder.d(stickersDetailsView);
builder.a(DrawableUtils.a(v.getContext(), R.drawable.share_outline_28, R.color.accent_blue));
builder.c(R.attr.content_tint_background);
builder.b(view -> {
Sharing.a(view.getContext(), "https://t.me/addstickers/" + pack.id);
return null;
});
builder.a(new ContentSnapStrategy1(false));
builder.a("stickers_preview");
} catch (JSONException e) {
e.printStackTrace();
}
});
}
}
}
@@ -21,6 +21,7 @@ import java.io.StringWriter;
import ru.vtosters.lite.deviceinfo.DeviceInfoCollector;
import ru.vtosters.lite.services.LogWriterService;
import ru.vtosters.lite.utils.AndroidUtils;
public class CrashReporter {
protected static String logString;
@@ -41,7 +42,7 @@ public class CrashReporter {
logString = getStackTrace(th) + "\n\n" + new DeviceInfoCollector().collect().toDeviceName();
if (Build.VERSION.SDK_INT >= 26) {
var notificationChannel = new NotificationChannel("crashes", "crash", NotificationManager.IMPORTANCE_DEFAULT);
var notificationChannel = new NotificationChannel("crashes", AndroidUtils.getString("crash_service_name"), NotificationManager.IMPORTANCE_DEFAULT);
notificationChannel.enableVibration(true);
notificationChannel.enableLights(true);
((NotificationManager) getGlobalContext().getSystemService(Context.NOTIFICATION_SERVICE)).createNotificationChannel(notificationChannel);
@@ -51,7 +52,7 @@ public class CrashReporter {
foxbinIntent.putExtra("android.intent.extra.TEXT", logString);
foxbinIntent.setType("text/plain");
if (!isFoxbinInstalled()) {
foxbinIntent = new Intent("android.intent.action.VIEW");
foxbinIntent = new Intent(Intent.ACTION_VIEW);
foxbinIntent.setData(Uri.parse("https://play.google.com/store/apps/details?id=com.f0x1d.dogbin"));
foxbinIntent.addFlags(Intent.FLAG_ACTIVITY_NO_USER_ACTION);
}
@@ -50,7 +50,7 @@ public class OTADialog extends ModalBottomSheetWrapper<OTADialog> implements OT
container.setOrientation(LinearLayout.VERTICAL);
changelogView.setText("Изменения: \n" + changelog);
changelogView.setText(AndroidUtils.getString("changelog") + ": \n" + changelog);
changelogView.setTextColor(ThemesUtils.getTextAttr());
container.addView(changelogView, new LinearLayout.LayoutParams(-1, -2));
@@ -1,19 +1,17 @@
package ru.vtosters.lite.ui.dialogs;
import static ru.vtosters.lite.utils.AndroidUtils.edit;
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import com.vk.core.dialogs.alert.VkAlertDialog;
import com.vtosters.lite.R;
import ru.vtosters.lite.deviceinfo.OEMDetector;
import ru.vtosters.lite.utils.AndroidUtils;
import static ru.vtosters.lite.utils.AndroidUtils.edit;
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
public class Start {
public static void alert(final Activity activity) {
if (Build.VERSION.SDK_INT >= 23) {
@@ -30,7 +28,7 @@ public class Start {
.setNeutralButton(R.string.startbtn1,
(dialogInterface, i) -> {
edit().putBoolean("showAlert", false).apply();
activity.startActivity(new Intent("android.intent.action.VIEW").setData(Uri.parse("https://t.me/vtosters")));
activity.startActivity(new Intent(Intent.ACTION_VIEW).setData(Uri.parse("https://t.me/vtosters")));
}
)
.show();
@@ -1,22 +1,5 @@
package ru.vtosters.lite.ui.fragments;
import static ru.vtosters.lite.ui.PreferencesUtil.addPreference;
import static ru.vtosters.lite.ui.PreferencesUtil.addPreferenceCategory;
import static ru.vtosters.lite.ui.PreferencesUtil.addPreferenceDrawable;
import static ru.vtosters.lite.ui.components.IconManager.icons;
import static ru.vtosters.lite.ui.components.IconManager.iconsValues;
import static ru.vtosters.lite.ui.components.IconManager.sIconsPlus;
import static ru.vtosters.lite.ui.components.IconManager.sIconsPlusNames;
import static ru.vtosters.lite.ui.components.IconManager.switchComponent;
import static ru.vtosters.lite.utils.AndroidUtils.dp2px;
import static ru.vtosters.lite.utils.AndroidUtils.edit;
import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier;
import static ru.vtosters.lite.utils.AndroidUtils.sendToast;
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
import static ru.vtosters.lite.utils.Preferences.hasVerification;
import static ru.vtosters.lite.utils.Preferences.preferences;
import static ru.vtosters.lite.utils.ThemesUtils.getTextAttr;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
@@ -26,44 +9,47 @@ import android.os.Bundle;
import android.util.TypedValue;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import androidx.appcompat.view.ContextThemeWrapper;
import androidx.core.content.res.ResourcesCompat;
import com.vk.core.dialogs.alert.VkAlertDialog;
import com.vtosters.lite.R;
import com.vtosters.lite.general.fragments.MaterialPreferenceToolbarFragment;
import ru.vtosters.lite.ui.PreferenceFragmentUtils;
import ru.vtosters.lite.ui.components.IconManager;
import ru.vtosters.lite.utils.AndroidUtils;
import ru.vtosters.lite.utils.Preferences;
import ru.vtosters.lite.utils.ThemesUtils;
public class IconsFragment extends MaterialPreferenceToolbarFragment {
@SuppressLint("SetTextI18n")
public static void callSelectDialog(Context ctx, String appicon) {
var defname = preferences.getString("appname", "vt");
var deficon = preferences.getString("selectedicon", "vt");
var defname = Preferences.preferences.getString("appname", "vt");
var deficon = Preferences.preferences.getString("selectedicon", "vt");
RadioGroup rg = new RadioGroup(ctx);
RadioButton rgDefault = new RadioButton(new ContextThemeWrapper(ctx, com.vtosters.lite.R.style.Widget_AppCompat_CompoundButton_RadioButton));
RadioButton rgVK = new RadioButton(new ContextThemeWrapper(ctx, com.vtosters.lite.R.style.Widget_AppCompat_CompoundButton_RadioButton));
RadioButton rgVKontakte = new RadioButton(new ContextThemeWrapper(ctx, com.vtosters.lite.R.style.Widget_AppCompat_CompoundButton_RadioButton));
RadioButton rgDefault = new RadioButton(new ContextThemeWrapper(ctx, R.style.Widget_AppCompat_CompoundButton_RadioButton));
RadioButton rgVK = new RadioButton(new ContextThemeWrapper(ctx, R.style.Widget_AppCompat_CompoundButton_RadioButton));
RadioButton rgVKontakte = new RadioButton(new ContextThemeWrapper(ctx, R.style.Widget_AppCompat_CompoundButton_RadioButton));
rg.addView(rgDefault);
rg.addView(rgVK);
rg.addView(rgVKontakte);
rgDefault.setTextSize(TypedValue.COMPLEX_UNIT_PX, dp2px(14f));
rgVK.setTextSize(TypedValue.COMPLEX_UNIT_PX, dp2px(14f));
rgVKontakte.setTextSize(TypedValue.COMPLEX_UNIT_PX, dp2px(14f));
rgDefault.setTextSize(TypedValue.COMPLEX_UNIT_PX, AndroidUtils.dp2px(14f));
rgVK.setTextSize(TypedValue.COMPLEX_UNIT_PX, AndroidUtils.dp2px(14f));
rgVKontakte.setTextSize(TypedValue.COMPLEX_UNIT_PX, AndroidUtils.dp2px(14f));
rg.setPadding(dp2px(18f), dp2px(12f), dp2px(18f), 0);
rg.setPadding(AndroidUtils.dp2px(18f), AndroidUtils.dp2px(12f), AndroidUtils.dp2px(18f), 0);
rgDefault.setText("VTLite");
rgDefault.setTextColor(getTextAttr());
rgDefault.setTextColor(ThemesUtils.getTextAttr());
rgVK.setText("VK");
rgVK.setTextColor(getTextAttr());
rgVK.setTextColor(ThemesUtils.getTextAttr());
rgVKontakte.setText(ctx.getString(R.string.app_name_alter));
rgVKontakte.setTextColor(getTextAttr());
rgVKontakte.setTextColor(ThemesUtils.getTextAttr());
rgVKontakte.setChecked(defname.contains("vkontakte"));
rgVK.setChecked(defname.contains("standard"));
@@ -74,20 +60,20 @@ public class IconsFragment extends MaterialPreferenceToolbarFragment {
.setView(rg)
.setPositiveButton(R.string.vtl_confirm, ((dialog, which) -> {
if (rgDefault.isChecked()) {
edit().putString("appname", "vt").commit();
edit().putString("selectedicon", appicon).commit();
AndroidUtils.edit().putString("appname", "vt").commit();
AndroidUtils.edit().putString("selectedicon", appicon).commit();
switchComponent(appicon, "vt", deficon, defname);
IconManager.switchComponent(appicon, "vt", deficon, defname);
} else if (rgVK.isChecked()) {
edit().putString("appname", "standard").commit();
edit().putString("selectedicon", appicon).commit();
AndroidUtils.edit().putString("appname", "standard").commit();
AndroidUtils.edit().putString("selectedicon", appicon).commit();
switchComponent(appicon, "standard", deficon, defname);
IconManager.switchComponent(appicon, "standard", deficon, defname);
} else if (rgVKontakte.isChecked()) {
edit().putString("appname", "vkontakte").commit();
edit().putString("selectedicon", appicon).commit();
AndroidUtils.edit().putString("appname", "vkontakte").commit();
AndroidUtils.edit().putString("selectedicon", appicon).commit();
switchComponent(appicon, "vkontakte", deficon, defname);
IconManager.switchComponent(appicon, "vkontakte", deficon, defname);
}
}))
.setNegativeButton(R.string.cancel,
@@ -102,20 +88,20 @@ public class IconsFragment extends MaterialPreferenceToolbarFragment {
this.addPreferencesFromResource(R.xml.empty);
if (!hasVerification() && !getBoolValue("dialogrecomm", false)) {
addPreference(this, "", requireContext().getString(R.string.icons_warning), requireContext().getString(R.string.icons_warning_info), R.drawable.ic_about_outline_28, preference -> {
getContext().startActivity(new Intent("android.intent.action.VIEW").setData(Uri.parse("https://vtosters.app/donate/")));
if (!Preferences.hasVerification() && !Preferences.getBoolValue("dialogrecomm", false)) {
PreferenceFragmentUtils.addPreference(getPreferenceScreen(), "", requireContext().getString(R.string.icons_warning), requireContext().getString(R.string.icons_warning_info), R.drawable.ic_about_outline_28, preference -> {
getContext().startActivity(new Intent(Intent.ACTION_VIEW).setData(Uri.parse("https://vtosters.app/donate/")));
return false;
});
}
addPreferenceCategory(this, requireContext().getString(R.string.icons_title));
PreferenceFragmentUtils.addPreferenceCategory(getPreferenceScreen(), requireContext().getString(R.string.icons_title));
for (var i = 0; i < icons().size(); i++) {
if (icons().get(i) == null || iconsValues().get(i) == null) return;
for (var i = 0; i < IconManager.icons().size(); i++) {
if (IconManager.icons().get(i) == null || IconManager.iconsValues().get(i) == null) return;
String iconname = icons().get(i);
String icon = iconsValues().get(i);
String iconname = IconManager.icons().get(i);
String icon = IconManager.iconsValues().get(i);
int iconRes;
@@ -124,7 +110,7 @@ public class IconsFragment extends MaterialPreferenceToolbarFragment {
} else if (icon.contains("standard")) {
iconRes = R.mipmap.ic_launcher_round;
} else {
iconRes = getIdentifier("ic_launcher_" + icon, "mipmap");
iconRes = AndroidUtils.getIdentifier("ic_launcher_" + icon, "mipmap");
}
Drawable drawable = ResourcesCompat.getDrawable(getResources(), iconRes, null);
@@ -133,20 +119,20 @@ public class IconsFragment extends MaterialPreferenceToolbarFragment {
drawable = ResourcesCompat.getDrawable(getResources(), R.drawable.ic_bug_outline_28, null);
}
addPreferenceDrawable(this, icon, iconname, "", drawable, preference -> {
PreferenceFragmentUtils.addPreference(getPreferenceScreen(), icon, iconname, "", drawable, preference -> {
callSelectDialog(this.getContext(), icon);
return false;
});
}
if (!hasVerification() && !getBoolValue("dialogrecomm", false)) {
addPreferenceCategory(this, requireContext().getString(R.string.unavailable_icons));
if (!Preferences.hasVerification() && !Preferences.getBoolValue("dialogrecomm", false)) {
PreferenceFragmentUtils.addPreferenceCategory(getPreferenceScreen(), requireContext().getString(R.string.unavailable_icons));
for (var i = 2; i < sIconsPlusNames.size(); i++) {
if (sIconsPlusNames.get(i) == null || sIconsPlus.get(i) == null) return;
for (var i = 2; i < IconManager.sIconsPlusNames.size(); i++) {
if (IconManager.sIconsPlusNames.get(i) == null || IconManager.sIconsPlus.get(i) == null) return;
String iconname = sIconsPlusNames.get(i);
String icon = sIconsPlus.get(i);
String iconname = IconManager.sIconsPlusNames.get(i);
String icon = IconManager.sIconsPlus.get(i);
int iconRes;
@@ -155,7 +141,7 @@ public class IconsFragment extends MaterialPreferenceToolbarFragment {
} else if (icon.contains("standard")) {
iconRes = R.mipmap.ic_launcher_round;
} else {
iconRes = getIdentifier("ic_launcher_" + icon, "mipmap");
iconRes = AndroidUtils.getIdentifier("ic_launcher_" + icon, "mipmap");
}
Drawable drawable = ResourcesCompat.getDrawable(getResources(), iconRes, null);
@@ -164,8 +150,8 @@ public class IconsFragment extends MaterialPreferenceToolbarFragment {
drawable = ResourcesCompat.getDrawable(getResources(), R.drawable.ic_bug_outline_28, null);
}
addPreferenceDrawable(this, icon, iconname, "", drawable, preference -> {
sendToast(requireContext().getString(R.string.unavailable_icon_warning));
PreferenceFragmentUtils.addPreference(getPreferenceScreen(), icon, iconname, "", drawable, preference -> {
AndroidUtils.sendToast(requireContext().getString(R.string.unavailable_icon_warning));
return false;
});
}
@@ -1,23 +1,7 @@
package ru.vtosters.lite.ui.fragments;
import static bruhcollective.itaysonlab.libvkx.client.LibVKXClient.isVkxInstalled;
import static ru.vtosters.lite.music.LastFMScrobbler.isLoggedIn;
import static ru.vtosters.lite.proxy.ProxyUtils.getApi;
import static ru.vtosters.lite.utils.AccountManagerUtils.getUserToken;
import static ru.vtosters.lite.utils.AndroidUtils.dp2px;
import static ru.vtosters.lite.utils.AndroidUtils.edit;
import static ru.vtosters.lite.utils.AndroidUtils.getPreferences;
import static ru.vtosters.lite.utils.AndroidUtils.sendToast;
import static ru.vtosters.lite.utils.LifecycleUtils.restartApplicationWithTimer;
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
import static ru.vtosters.lite.utils.Preferences.isEnableExternalOpening;
import static ru.vtosters.lite.utils.ThemesUtils.getAccentColor;
import static ru.vtosters.lite.utils.ThemesUtils.getSTextAttr;
import static ru.vtosters.lite.utils.ThemesUtils.getTextAttr;
import android.content.Context;
import android.content.Intent;
import android.content.res.ColorStateList;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
@@ -25,25 +9,16 @@ import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import androidx.preference.Preference;
import bruhcollective.itaysonlab.libvkx.client.LibVKXClient;
import com.vk.core.dialogs.alert.VkAlertDialog;
import com.vk.core.network.Network;
import com.vtosters.lite.R;
import com.vtosters.lite.general.fragments.MaterialPreferenceToolbarFragment;
import org.json.JSONObject;
import java.io.IOException;
import java.util.Arrays;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import bruhcollective.itaysonlab.libvkx.client.LibVKXClient;
import okhttp3.Headers;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import org.json.JSONObject;
import ru.vtosters.lite.downloaders.AudioDownloader;
import ru.vtosters.lite.downloaders.VideoDownloader;
import ru.vtosters.lite.music.LastFMScrobbler;
@@ -52,6 +27,22 @@ import ru.vtosters.lite.ui.adapters.ImagineArrayAdapter;
import ru.vtosters.lite.utils.AndroidUtils;
import ru.vtosters.lite.utils.ThemesUtils;
import java.io.IOException;
import java.util.Arrays;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import static bruhcollective.itaysonlab.libvkx.client.LibVKXClient.isVkxInstalled;
import static ru.vtosters.lite.music.LastFMScrobbler.isLoggedIn;
import static ru.vtosters.lite.proxy.ProxyUtils.getApi;
import static ru.vtosters.lite.utils.AccountManagerUtils.getUserToken;
import static ru.vtosters.lite.utils.AndroidUtils.*;
import static ru.vtosters.lite.utils.LifecycleUtils.restartApplicationWithTimer;
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
import static ru.vtosters.lite.utils.Preferences.isEnableExternalOpening;
import static ru.vtosters.lite.utils.ThemesUtils.getSTextAttr;
import static ru.vtosters.lite.utils.ThemesUtils.getTextAttr;
public class MediaFragment extends MaterialPreferenceToolbarFragment {
private static final ExecutorService executor = Executors.newCachedThreadPool();
@@ -148,10 +139,14 @@ public class MediaFragment extends MaterialPreferenceToolbarFragment {
findPreference("select_photo_search_engine").setOnPreferenceClickListener(preference -> {
var items = Arrays.asList(
new ImagineArrayAdapter.ImagineArrayAdapterItem(null, "По выбору"),
new ImagineArrayAdapter.ImagineArrayAdapterItem(R.drawable.yandex, "Yandex"),
new ImagineArrayAdapter.ImagineArrayAdapterItem(R.drawable.google, "Google"),
new ImagineArrayAdapter.ImagineArrayAdapterItem(R.drawable.microsoft, "Bing")
);
new ImagineArrayAdapter.ImagineArrayAdapterItem(R.drawable.microsoft, "Bing"),
new ImagineArrayAdapter.ImagineArrayAdapterItem(null, "TraceMoe"),
new ImagineArrayAdapter.ImagineArrayAdapterItem(null, "Ascii2d"),
new ImagineArrayAdapter.ImagineArrayAdapterItem(null, "Saucenao")
);
var adapter = new ImagineArrayAdapter(getContext(), items);
adapter.setSelected(getPreferences().getInt("search_engine", 0));
@@ -1,34 +1,17 @@
package ru.vtosters.lite.ui.fragments;
import static ru.vtosters.lite.deviceinfo.OEMDetector.getEmuiVersionCode;
import static ru.vtosters.lite.deviceinfo.OEMDetector.getMiuiUiVersionCode;
import static ru.vtosters.lite.deviceinfo.OEMDetector.getMiuiUiVersionIncrementalCode;
import static ru.vtosters.lite.deviceinfo.OEMDetector.getMiuiUiVersionName;
import static ru.vtosters.lite.deviceinfo.OEMDetector.getOneUiMajorVersion;
import static ru.vtosters.lite.deviceinfo.OEMDetector.getOneUiMinorVersion;
import static ru.vtosters.lite.deviceinfo.OEMDetector.hasMiuiIncrCode;
import static ru.vtosters.lite.deviceinfo.OEMDetector.isEMUI;
import static ru.vtosters.lite.deviceinfo.OEMDetector.isFlyme;
import static ru.vtosters.lite.deviceinfo.OEMDetector.isMIUI;
import static ru.vtosters.lite.deviceinfo.OEMDetector.isOneUi;
import static ru.vtosters.lite.deviceinfo.OEMDetector.isSamsung;
import static ru.vtosters.lite.deviceinfo.OEMDetector.isVivo;
import static ru.vtosters.lite.deviceinfo.OEMDetector.isZenUI;
import static ru.vtosters.lite.ui.PreferencesUtil.addPreference;
import static ru.vtosters.lite.ui.PreferencesUtil.addPreferenceCategory;
import static ru.vtosters.lite.utils.About.getBuildNumber;
import static ru.vtosters.lite.utils.AndroidUtils.isTablet;
import static ru.vtosters.lite.utils.AndroidUtils.sendToast;
import static ru.vtosters.lite.utils.Preferences.isValidSignature;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.os.Build;
import android.os.Bundle;
import com.vtosters.lite.R;
import com.vtosters.lite.general.fragments.MaterialPreferenceToolbarFragment;
import ru.vtosters.lite.deviceinfo.OEMDetector;
import ru.vtosters.lite.ui.PreferenceFragmentUtils;
import ru.vtosters.lite.utils.About;
import ru.vtosters.lite.utils.AndroidUtils;
import ru.vtosters.lite.utils.Preferences;
public class SystemInfo extends MaterialPreferenceToolbarFragment {
@@ -37,8 +20,8 @@ public class SystemInfo extends MaterialPreferenceToolbarFragment {
super.onCreate(bundle);
addPreferencesFromResource(R.xml.empty);
var oneUiMajorVersion = String.valueOf(getOneUiMajorVersion());
var oneUiMinorVersion = String.valueOf(getOneUiMinorVersion());
var oneUiMajorVersion = String.valueOf(OEMDetector.getOneUiMajorVersion());
var oneUiMinorVersion = String.valueOf(OEMDetector.getOneUiMinorVersion());
var sdkVersion = String.valueOf(Build.VERSION.SDK_INT);
var productName = Build.PRODUCT;
var deviceName = Build.DEVICE;
@@ -46,145 +29,145 @@ public class SystemInfo extends MaterialPreferenceToolbarFragment {
var manufacturerName = Build.MANUFACTURER;
var brandName = Build.BRAND;
var modelName = Build.MODEL;
var miuiUiVersionName = getMiuiUiVersionName();
var miuiIncrementalCodeName = getMiuiUiVersionIncrementalCode();
var miuiUiVersionCodeName = getMiuiUiVersionCode();
var emuiVersionCode = getEmuiVersionCode();
var miuiUiVersionName = OEMDetector.getMiuiUiVersionName();
var miuiIncrementalCodeName = OEMDetector.getMiuiUiVersionIncrementalCode();
var miuiUiVersionCodeName = OEMDetector.getMiuiUiVersionCode();
var emuiVersionCode = OEMDetector.getEmuiVersionCode();
var packageName = requireContext().getPackageName();
var commit = getBuildNumber();
var commit = About.getBuildNumber();
var isMiui = isMIUI();
var isFlyme = isFlyme();
var isSamsung = isSamsung();
var isOneUi = isOneUi();
var isVivo = isVivo();
var isZenUI = isZenUI();
var isEMUI = isEMUI();
var hasMiuiIncrCode = hasMiuiIncrCode();
var isMiui = OEMDetector.isMIUI();
var isFlyme = OEMDetector.isFlyme();
var isSamsung = OEMDetector.isSamsung();
var isOneUi = OEMDetector.isOneUi();
var isVivo = OEMDetector.isVivo();
var isZenUI = OEMDetector.isZenUI();
var isEMUI = OEMDetector.isEMUI();
var hasMiuiIncrCode = OEMDetector.hasMiuiIncrCode();
var isValidSignature = isValidSignature();
var isTablet = isTablet();
var isValidSignature = Preferences.isValidSignature();
var isTablet = AndroidUtils.isTablet();
addPreferenceCategory(this, "App information");
PreferenceFragmentUtils.addPreferenceCategory(getPreferenceScreen(), "App information");
addPreference(this, "", "Package name", packageName, 0, preference -> {
PreferenceFragmentUtils.addPreference(getPreferenceScreen(), "", "Package name", packageName, 0, preference -> {
((ClipboardManager) requireActivity().getSystemService(Context.CLIPBOARD_SERVICE)).setPrimaryClip(ClipData.newPlainText("MBH-ST", packageName));
sendToast(requireContext().getString(R.string.copied_to_clipboard));
AndroidUtils.sendToast(requireContext().getString(R.string.copied_to_clipboard));
return false;
});
addPreference(this, "", "Commit", commit, 0, preference -> {
PreferenceFragmentUtils.addPreference(getPreferenceScreen(), "", "Commit", commit, 0, preference -> {
((ClipboardManager) requireActivity().getSystemService(Context.CLIPBOARD_SERVICE)).setPrimaryClip(ClipData.newPlainText("MBH-ST", commit));
sendToast(requireContext().getString(R.string.copied_to_clipboard));
AndroidUtils.sendToast(requireContext().getString(R.string.copied_to_clipboard));
return false;
});
addPreference(this, "", "Valid Signature", "Value: " + isValidSignature, 0, null);
PreferenceFragmentUtils.addPreference(getPreferenceScreen(), "", "Valid Signature", "Value: " + isValidSignature, 0, null);
addPreference(this, "", "isTablet", "Value: " + isTablet, 0, null);
PreferenceFragmentUtils.addPreference(getPreferenceScreen(), "", "isTablet", "Value: " + isTablet, 0, null);
addPreferenceCategory(this, "System information");
PreferenceFragmentUtils.addPreferenceCategory(getPreferenceScreen(), "System information");
addPreference(this, "", "SDK Version", sdkVersion, 0, preference -> {
PreferenceFragmentUtils.addPreference(getPreferenceScreen(), "", "SDK Version", sdkVersion, 0, preference -> {
((ClipboardManager) requireActivity().getSystemService(Context.CLIPBOARD_SERVICE)).setPrimaryClip(ClipData.newPlainText("MBH-ST", sdkVersion));
sendToast(requireContext().getString(R.string.copied_to_clipboard));
AndroidUtils.sendToast(requireContext().getString(R.string.copied_to_clipboard));
return false;
});
addPreference(this, "", "Product Name", productName, 0, preference -> {
PreferenceFragmentUtils.addPreference(getPreferenceScreen(), "", "Product Name", productName, 0, preference -> {
((ClipboardManager) requireActivity().getSystemService(Context.CLIPBOARD_SERVICE)).setPrimaryClip(ClipData.newPlainText("MBH-ST", productName));
sendToast(requireContext().getString(R.string.copied_to_clipboard));
AndroidUtils.sendToast(requireContext().getString(R.string.copied_to_clipboard));
return false;
});
addPreference(this, "", "Device Name", deviceName, 0, preference -> {
PreferenceFragmentUtils.addPreference(getPreferenceScreen(), "", "Device Name", deviceName, 0, preference -> {
((ClipboardManager) requireActivity().getSystemService(Context.CLIPBOARD_SERVICE)).setPrimaryClip(ClipData.newPlainText("MBH-ST", deviceName));
sendToast(requireContext().getString(R.string.copied_to_clipboard));
AndroidUtils.sendToast(requireContext().getString(R.string.copied_to_clipboard));
return false;
});
addPreference(this, "", "Board Name", boardName, 0, preference -> {
PreferenceFragmentUtils.addPreference(getPreferenceScreen(), "", "Board Name", boardName, 0, preference -> {
((ClipboardManager) requireActivity().getSystemService(Context.CLIPBOARD_SERVICE)).setPrimaryClip(ClipData.newPlainText("MBH-ST", boardName));
sendToast(requireContext().getString(R.string.copied_to_clipboard));
AndroidUtils.sendToast(requireContext().getString(R.string.copied_to_clipboard));
return false;
});
addPreference(this, "", "Manufacturer Name", manufacturerName, 0, preference -> {
PreferenceFragmentUtils.addPreference(getPreferenceScreen(), "", "Manufacturer Name", manufacturerName, 0, preference -> {
((ClipboardManager) requireActivity().getSystemService(Context.CLIPBOARD_SERVICE)).setPrimaryClip(ClipData.newPlainText("MBH-ST", manufacturerName));
sendToast(requireContext().getString(R.string.copied_to_clipboard));
AndroidUtils.sendToast(requireContext().getString(R.string.copied_to_clipboard));
return false;
});
addPreference(this, "", "Brand Name", brandName, 0, preference -> {
PreferenceFragmentUtils.addPreference(getPreferenceScreen(), "", "Brand Name", brandName, 0, preference -> {
((ClipboardManager) requireActivity().getSystemService(Context.CLIPBOARD_SERVICE)).setPrimaryClip(ClipData.newPlainText("MBH-ST", brandName));
sendToast(requireContext().getString(R.string.copied_to_clipboard));
AndroidUtils.sendToast(requireContext().getString(R.string.copied_to_clipboard));
return false;
});
addPreference(this, "", "Model Name", modelName, 0, preference -> {
PreferenceFragmentUtils.addPreference(getPreferenceScreen(), "", "Model Name", modelName, 0, preference -> {
((ClipboardManager) requireActivity().getSystemService(Context.CLIPBOARD_SERVICE)).setPrimaryClip(ClipData.newPlainText("MBH-ST", modelName));
sendToast(requireContext().getString(R.string.copied_to_clipboard));
AndroidUtils.sendToast(requireContext().getString(R.string.copied_to_clipboard));
return false;
});
addPreferenceCategory(this, "OEM Information");
PreferenceFragmentUtils.addPreferenceCategory(getPreferenceScreen(), "OEM Information");
if (isOneUi) {
addPreference(this, "", "OneUiMajorVersion", oneUiMajorVersion, 0, preference -> {
PreferenceFragmentUtils.addPreference(getPreferenceScreen(), "", "OneUiMajorVersion", oneUiMajorVersion, 0, preference -> {
((ClipboardManager) requireActivity().getSystemService(Context.CLIPBOARD_SERVICE)).setPrimaryClip(ClipData.newPlainText("MBH-ST", oneUiMajorVersion));
sendToast(requireContext().getString(R.string.copied_to_clipboard));
AndroidUtils.sendToast(requireContext().getString(R.string.copied_to_clipboard));
return false;
});
addPreference(this, "", "OneUiMinorVersion", oneUiMinorVersion, 0, preference -> {
PreferenceFragmentUtils.addPreference(getPreferenceScreen(), "", "OneUiMinorVersion", oneUiMinorVersion, 0, preference -> {
((ClipboardManager) requireActivity().getSystemService(Context.CLIPBOARD_SERVICE)).setPrimaryClip(ClipData.newPlainText("MBH-ST", oneUiMinorVersion));
sendToast(requireContext().getString(R.string.copied_to_clipboard));
AndroidUtils.sendToast(requireContext().getString(R.string.copied_to_clipboard));
return false;
});
} else if (isMiui) {
addPreference(this, "", "miuiUiVersionName", miuiUiVersionName, 0, preference -> {
PreferenceFragmentUtils.addPreference(getPreferenceScreen(), "", "miuiUiVersionName", miuiUiVersionName, 0, preference -> {
((ClipboardManager) requireActivity().getSystemService(Context.CLIPBOARD_SERVICE)).setPrimaryClip(ClipData.newPlainText("MBH-ST", miuiUiVersionName));
sendToast(requireContext().getString(R.string.copied_to_clipboard));
AndroidUtils.sendToast(requireContext().getString(R.string.copied_to_clipboard));
return false;
});
addPreference(this, "", "miuiUiVersionCodeName", miuiUiVersionCodeName, 0, preference -> {
PreferenceFragmentUtils.addPreference(getPreferenceScreen(), "", "miuiUiVersionCodeName", miuiUiVersionCodeName, 0, preference -> {
((ClipboardManager) requireActivity().getSystemService(Context.CLIPBOARD_SERVICE)).setPrimaryClip(ClipData.newPlainText("MBH-ST", miuiUiVersionCodeName));
sendToast(requireContext().getString(R.string.copied_to_clipboard));
AndroidUtils.sendToast(requireContext().getString(R.string.copied_to_clipboard));
return false;
});
if (hasMiuiIncrCode) {
addPreference(this, "", "miuiIncrementalCodeName", miuiIncrementalCodeName, 0, preference -> {
PreferenceFragmentUtils.addPreference(getPreferenceScreen(), "", "miuiIncrementalCodeName", miuiIncrementalCodeName, 0, preference -> {
((ClipboardManager) requireActivity().getSystemService(Context.CLIPBOARD_SERVICE)).setPrimaryClip(ClipData.newPlainText("MBH-ST", miuiIncrementalCodeName));
sendToast(requireContext().getString(R.string.copied_to_clipboard));
AndroidUtils.sendToast(requireContext().getString(R.string.copied_to_clipboard));
return false;
});
}
} else if (isEMUI) {
addPreference(this, "", "emuiVersionCode", emuiVersionCode, 0, preference -> {
PreferenceFragmentUtils.addPreference(getPreferenceScreen(), "", "emuiVersionCode", emuiVersionCode, 0, preference -> {
((ClipboardManager) requireActivity().getSystemService(Context.CLIPBOARD_SERVICE)).setPrimaryClip(ClipData.newPlainText("MBH-ST", emuiVersionCode));
sendToast(requireContext().getString(R.string.copied_to_clipboard));
AndroidUtils.sendToast(requireContext().getString(R.string.copied_to_clipboard));
return false;
});
} else {
addPreference(this, "", "No info", "No information about OEM", 0, null);
PreferenceFragmentUtils.addPreference(getPreferenceScreen(), "", "No info", "No information about OEM", 0, null);
}
addPreferenceCategory(this, "OEM List");
PreferenceFragmentUtils.addPreferenceCategory(getPreferenceScreen(), "OEM List");
addPreference(this, "", "isOneUi", "Value: " + isOneUi, 0, null);
PreferenceFragmentUtils.addPreference(getPreferenceScreen(), "", "isOneUi", "Value: " + isOneUi, 0, null);
addPreference(this, "", "isMiui", "Value: " + isMiui, 0, null);
PreferenceFragmentUtils.addPreference(getPreferenceScreen(), "", "isMiui", "Value: " + isMiui, 0, null);
addPreference(this, "", "isEMUI", "Value: " + isEMUI, 0, null);
PreferenceFragmentUtils.addPreference(getPreferenceScreen(), "", "isEMUI", "Value: " + isEMUI, 0, null);
addPreference(this, "", "isFlyme", "Value: " + isFlyme, 0, null);
PreferenceFragmentUtils.addPreference(getPreferenceScreen(), "", "isFlyme", "Value: " + isFlyme, 0, null);
addPreference(this, "", "isSamsung", "Value: " + isSamsung, 0, null);
PreferenceFragmentUtils.addPreference(getPreferenceScreen(), "", "isSamsung", "Value: " + isSamsung, 0, null);
addPreference(this, "", "isVivo", "Value: " + isVivo, 0, null);
PreferenceFragmentUtils.addPreference(getPreferenceScreen(), "", "isVivo", "Value: " + isVivo, 0, null);
addPreference(this, "", "isZenUI", "Value: " + isZenUI, 0, null);
PreferenceFragmentUtils.addPreference(getPreferenceScreen(), "", "isZenUI", "Value: " + isZenUI, 0, null);
}
}
@@ -1,8 +1,10 @@
package ru.vtosters.lite.ui.fragments;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.view.WindowManager;
import androidx.preference.PreferenceCategory;
import com.vk.core.dialogs.alert.VkAlertDialog;
import com.vk.core.fragments.FragmentImpl;
@@ -94,7 +96,7 @@ public class ThemesFragment extends MaterialPreferenceToolbarFragment {
findPreference("accentprefs").setVisible(!ThemesUtils.isMonetTheme() && ThemesUtils.isMilkshake());
if (AndroidUtils.isTablet()) {
if(AndroidUtils.isTablet()) {
PreferenceCategory dockbarSettingsPreferenceCategory = (PreferenceCategory) findPreference("dockbarsett");
dockbarSettingsPreferenceCategory.setVisible(false);
}
@@ -110,7 +112,7 @@ public class ThemesFragment extends MaterialPreferenceToolbarFragment {
new VkAlertDialog.Builder(requireContext())
.setTitle(AndroidUtils.getString("change_accent_color"))
.setItems(titles, (dialog, which) -> {
switch (which) {
switch(which) {
case 0:
showColorPicker();
break;
@@ -130,27 +132,39 @@ public class ThemesFragment extends MaterialPreferenceToolbarFragment {
void showColorPicker() {
final var colorPickerView = new ColorPickerView(requireContext());
colorPickerView.setColor(ThemesUtils.getAccentColor());
new VkAlertDialog.Builder(requireContext())
.setTitle(AndroidUtils.getString("select_color"))
.setNegativeButton(R.string.cancel, null)
.setPositiveButton(R.string.select, (dialog, which) -> setAccentColor(colorPickerView.getColor()))
.setView(colorPickerView)
.show();
var alertDialog = new VkAlertDialog.Builder(requireContext()).create();
alertDialog.setTitle(AndroidUtils.getString("select_color"));
alertDialog.setButton(
DialogInterface.BUTTON_NEGATIVE,
requireContext().getString(R.string.cancel),
(DialogInterface.OnClickListener) null
);
alertDialog.setButton(
DialogInterface.BUTTON_POSITIVE,
requireContext().getString(R.string.select),
(dialog, which) -> setAccentColor(colorPickerView.getColor())
);
alertDialog.setView(colorPickerView);
alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
alertDialog.show();
}
void showPalettesDialog() {
final var manager = PalettesManager.getInstance();
final var titles = new String[manager.getPalettesCount()];
for (int i = 0; i < titles.length; ++i)
titles[i] = manager.getPalette(i).name;
new VkAlertDialog.Builder(requireContext())
.setTitle(AndroidUtils.getString("select_palette"))
.setItems(titles, (dialog, which) ->
PalettesBottomSheetDialog.create(requireActivity(), manager.getPalette(which),
(adapter, vtlcolor) -> setAccentColor(vtlcolor.color))
)
.setPositiveButton(R.string.cancel, null)
.show();
if(titles.length > 0) {
for(int i = 0; i < titles.length; ++i)
titles[i] = manager.getPalette(i).name;
new VkAlertDialog.Builder(requireContext())
.setTitle(AndroidUtils.getString("select_palette"))
.setItems(titles, (dialog, which) ->
PalettesBottomSheetDialog.create(requireActivity(), manager.getPalette(which),
(adapter, vtlcolor) -> setAccentColor(vtlcolor.color))
)
.setPositiveButton(R.string.cancel, null)
.show();
}
}
void setAccentColor(int color) {
@@ -163,7 +177,7 @@ public class ThemesFragment extends MaterialPreferenceToolbarFragment {
LifecycleUtils.restartApplicationWithTimer();
}
private void switchFragment(Class<? extends FragmentImpl> fragmentClz) {
private void switchFragment(Class< ? extends FragmentImpl > fragmentClz) {
var intent = new Navigator(fragmentClz)
.b(requireContext())
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
@@ -15,8 +15,9 @@ public class VKPayFragment extends FragmentImpl {
public void start() {
VKUIwrapper.setLink("https://vk.com/vkpay");
Intent a2 = new Navigator(VKUIwrapper.class).b(getActivity());
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(a2);
Intent intent = new Navigator(VKUIwrapper.class)
.b(getActivity())
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
}
@@ -1,14 +1,15 @@
package ru.vtosters.lite.ui.fragments;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import androidx.annotation.StringRes;
import com.aefyr.tsg.g2.TelegramStickersPack;
import com.aefyr.tsg.g2.TelegramStickersService;
import com.vk.about.AboutAppFragment;
import com.vk.balance.BalanceFragment;
import com.vk.core.fragments.FragmentImpl;
import com.vk.navigation.Navigator;
import com.vk.notifications.settings.NotificationsSettingsFragment;
import com.vk.webapp.fragments.PrivacyFragment;
@@ -25,30 +26,20 @@ import com.vtosters.lite.general.fragments.SettingsGeneralFragment;
import com.vtosters.lite.ui.MaterialSwitchPreference;
import ru.vtosters.lite.concurrent.VTExecutors;
import ru.vtosters.lite.hooks.ui.SystemThemeChangerHook;
import ru.vtosters.lite.ssfs.Utils;
import ru.vtosters.lite.ui.PreferenceFragmentUtils;
import ru.vtosters.lite.ui.components.DockBarEditorManager;
import ru.vtosters.lite.ui.components.SuperAppEditorManager;
import ru.vtosters.lite.ui.dialogs.OTADialog;
import ru.vtosters.lite.ui.fragments.tgstickers.StickersFragment;
import ru.vtosters.lite.utils.AndroidUtils;
import ru.vtosters.lite.utils.SSFSUtils;
import ru.vtosters.lite.utils.ThemesUtils;
import ru.vtosters.lite.utils.*;
import static ru.vtosters.lite.ui.PreferencesUtil.*;
import static ru.vtosters.lite.utils.About.getBuildNumber;
import static ru.vtosters.lite.utils.About.getCommitLink;
import static ru.vtosters.lite.utils.AccountManagerUtils.*;
import static ru.vtosters.lite.utils.AndroidUtils.*;
import static ru.vtosters.lite.utils.GmsUtils.isGmsInstalled;
import static ru.vtosters.lite.utils.ImageUtils.getDrawableFromUrl;
import static ru.vtosters.lite.utils.Preferences.*;
import static ru.vtosters.lite.utils.ThemesUtils.*;
import static ru.vtosters.lite.utils.VTVerifications.vtverif;
public class VTSettings extends MaterialPreferenceToolbarFragment implements TelegramStickersService.StickersEventsListener {
public class VTSettings extends MaterialPreferenceToolbarFragment {
public static String getValAsString(@StringRes int strRes, Boolean value) {
if (disableSettingsSumms()) return null;
if(Preferences.disableSettingsSumms()) return null;
if (value) {
if(value) {
return AndroidUtils.getString(strRes) + ": " + AndroidUtils.getString(R.string.vtlsettenabled);
}
@@ -56,44 +47,44 @@ public class VTSettings extends MaterialPreferenceToolbarFragment {
}
public static String getSSFSsumm() {
if (disableSettingsSumms()) return null;
if(Preferences.disableSettingsSumms()) return null;
if (hasSpecialVerif())
if(Preferences.hasSpecialVerif())
return AndroidUtils.getString(R.string.vtlssfssumm) + ": " + AndroidUtils.getString(R.string.vtlsettverifyes);
return AndroidUtils.getString(R.string.vtlssfssumm) + ": " + AndroidUtils.getString(R.string.vtlsettverifno);
}
public static String getDocksumm() {
if (disableSettingsSumms()) return null;
if(Preferences.disableSettingsSumms()) return null;
return AndroidUtils.getString(R.string.vtldocksumm) + ": " + DockBarEditorManager.getInstance().getSelectedTabs().size();
}
public static String getTGSsumm() {
if (disableSettingsSumms()) return null;
if(Preferences.disableSettingsSumms()) return null;
return AndroidUtils.getString(R.string.vtltgssumm) + ": " + TelegramStickersService.getInstance(AndroidUtils.getGlobalContext()).getPacksListReference().size();
return AndroidUtils.getString(R.string.vtltgssumm) + ": " + TelegramStickersService.getInstance(AndroidUtils.getGlobalContext()).getActivePacksListReference().size();
}
public static String getProxysumm() {
var type = getPrefsValue("proxy");
var type = AndroidUtils.getPrefsValue("proxy");
if (disableSettingsSumms()) return null;
if(Preferences.disableSettingsSumms()) return null;
if (type.equals("noproxy") || type.isEmpty())
if(type.equals("noproxy") || type.isEmpty())
type = AndroidUtils.getString(R.string.vtlsettdisabled);
return AndroidUtils.getString(R.string.vtlproxysumm) + ": " + type;
}
public static String getThemesumm() {
if (disableSettingsSumms()) return null;
if(Preferences.disableSettingsSumms()) return null;
String str;
String[] themeTypeName = AndroidUtils.getArray("theme_type_name");
switch (getPrefsValue("currsystemtheme")) {
switch(AndroidUtils.getPrefsValue("currsystemtheme")) {
default:
case "system":
str = themeTypeName[0];
@@ -110,45 +101,63 @@ public class VTSettings extends MaterialPreferenceToolbarFragment {
}
public static String getSuperappsumm() {
if (disableSettingsSumms()) return null;
if(Preferences.disableSettingsSumms()) return null;
return AndroidUtils.getString(R.string.elements_hidden_count) + ": " + SuperAppEditorManager.getInstance().getDisabledTabs().size();
}
private void switchTheme(boolean isDarkTheme) {
setTheme(isDarkTheme ? getDarkTheme() : getLightTheme(), requireActivity());
ThemesUtils.setTheme(isDarkTheme ? ThemesUtils.getDarkTheme() : ThemesUtils.getLightTheme(), requireActivity());
}
@Override
public void onPackAdded(TelegramStickersPack pack, int atIndex) {
}
@Override
public void onPackRemoved(TelegramStickersPack pack, int atIndex) {
}
@Override
public void onPackChanged(TelegramStickersPack pack, int atIndex) {
}
@Override
public void onPackDownloadError(TelegramStickersPack pack, Exception error) {
}
@Override
public void onActivePacksListChanged() {
findPreference("tgs_stickers").setSummary(getTGSsumm());
}
@Override
public void onInactivePacksListChanged() {
}
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
var feedsumm = getValAsString(R.string.vtlfeedsumm, ads());
var docksumm = getDocksumm();
var msgsumm = isTablet() ? getValAsString(R.string.autotranslate_title, autotranslate()) : getValAsString(R.string.vtlmsgsumm, vkme());
var activitysumm = getValAsString(R.string.vtlactivitysumm, offline());
var themessumm = getValAsString(R.string.vtlthemessumm, navbar());
var tgssumm = getTGSsumm();
var superapp = getSuperappsumm();
var mediasumm = getValAsString(R.string.vtlinterfacesumm, shortinfo());
var interfacesumm = getValAsString(R.string.showstories, stories());
var proxysumm = getProxysumm();
var othersumm = getValAsString(R.string.vtlothersumm, vtverif());
var ssfs = getSSFSsumm();
var about = "Commit: " + getBuildNumber();
TelegramStickersService.getInstance(requireContext()).addStickersEventsListener(this);
this.addPreferencesFromResource(R.xml.empty);
addPreferenceDrawable(
this,
var accountSwitcher = PreferenceFragmentUtils.addPreference(
getPreferenceScreen(),
"account_switcher",
getUsername(),
AccountManagerUtils.getUsername(),
requireContext().getString(R.string.vtllogout),
requireContext().getDrawable(R.drawable.ic_user_circle_outline_28),
preference -> {
try {
VKAuth.a("logout", false);
} catch (Exception ignored) {
} catch(Exception ignored) {
}
var intent = new Intent(requireContext(), MainActivity.class)
@@ -158,310 +167,475 @@ public class VTSettings extends MaterialPreferenceToolbarFragment {
requireContext().startActivity(intent);
return false;
});
});
VTExecutors.getIoScheduler().a(() -> {
var icon = getDrawableFromUrl(getUserPhoto(), 0, true, true);
if (icon == null) return;
var icon = ImageUtils.getDrawableFromUrl(AccountManagerUtils.getUserPhoto(), 0, true, true);
if(icon == null) return;
requireActivity().runOnUiThread(() -> {
findPreference("account_switcher").setIcon(icon);
accountSwitcher.setIcon(icon);
});
});
addPreference(this, "", requireContext().getString(R.string.vtssfs), ssfs, R.drawable.ic_link_circle_outline_28, preference -> {
Context context = requireContext();
VKUIwrapper.setLink(SSFSUtils.getSSFSLink());
Intent a2 = new Navigator(VKUIwrapper.class).b(context);
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(a2);
return false;
});
PreferenceFragmentUtils.addPreference(
getPreferenceScreen(),
"",
requireContext().getString(R.string.vtssfs),
getSSFSsumm(),
R.drawable.ic_link_circle_outline_28,
preference -> {
VKUIwrapper.setLink(Utils.getVKUILink());
launchFragment(VKUIwrapper.class);
return false;
}
);
addPreferenceCategory(this, requireContext().getString(R.string.appearance_theme_use_system));
PreferenceFragmentUtils.addPreferenceCategory(getPreferenceScreen(), R.string.appearance_theme_use_system);
if (Build.VERSION.SDK_INT >= 28 && milkshake()) {
addListPreferenceIcon(
this,
if(Build.VERSION.SDK_INT >= 28 && Preferences.milkshake()) {
PreferenceFragmentUtils.addListPreference(
getPreferenceScreen(),
"currsystemtheme",
"system",
requireContext().getString(R.string.appearance_theme_use_system),
R.drawable.ic_palette_outline_28, getThemesumm(),
R.drawable.ic_palette_outline_28,
getThemesumm(),
AndroidUtils.getArray("theme_type_name_checkbox"),
new String[]{"system", "dark", "light"},
new String[] { "system", "dark", "light" },
(preference, o) -> {
String value = (String) o;
if (!value.equals("system")) {
if(!value.equals("system")) {
var theme = value.equals("dark") ? ThemesUtils.getDarkTheme() : ThemesUtils.getLightTheme();
ThemesUtils.applyTheme(theme);
}
edit().putString("currsystemtheme", value).commit();
AndroidUtils.edit().putString("currsystemtheme", value).commit();
SystemThemeChangerHook.onThemeChanged(getResources().getConfiguration());
return true;
});
} else {
addMaterialSwitchPreference(this, "", requireContext().getString(R.string.vtsettdarktheme), "", R.drawable.ic_palette_outline_28, isDarkTheme(), (preference, o) -> {
final var switchPreference = (MaterialSwitchPreference) preference;
final var isDarkTheme = !switchPreference.isChecked();
switchTheme(isDarkTheme);
return true;
});
PreferenceFragmentUtils.addMaterialSwitchPreference(
getPreferenceScreen(),
"",
requireContext().getString(R.string.vtsettdarktheme),
"",
R.drawable.ic_palette_outline_28,
ThemesUtils.isDarkTheme(),
(preference, o) -> {
final var switchPreference = (MaterialSwitchPreference) preference;
final var isDarkTheme = !switchPreference.isChecked();
switchTheme(isDarkTheme);
return true;
}
);
}
if (!isGmsInstalled()) {
addPreferenceCategory(this, requireContext().getString(R.string.gmsname));
if(!GmsUtils.isGmsInstalled()) {
PreferenceFragmentUtils.addPreferenceCategory(getPreferenceScreen(), R.string.gmsname);
addPreference(this, "", requireContext().getString(R.string.installgms), "", R.drawable.ic_about_outline_28, preference -> {
Context context = requireContext();
Intent a2 = new Navigator(InstallGMSFragment.class).b(context);
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(a2);
return false;
});
PreferenceFragmentUtils.addPreference(
getPreferenceScreen(),
"",
requireContext().getString(R.string.installgms),
"",
R.drawable.ic_about_outline_28,
preference -> {
launchFragment(InstallGMSFragment.class);
return false;
}
);
}
if (devmenu()) {
addPreferenceCategory(this, requireContext().getString(R.string.sett_debug));
if(Preferences.devmenu()) {
PreferenceFragmentUtils.addPreferenceCategory(getPreferenceScreen(), R.string.sett_debug);
addPreference(this, "", requireContext().getString(R.string.sett_debug), "", R.drawable.ic_bug_outline_28, preference -> {
Context context = requireContext();
Intent a2 = new Navigator(SettingsDebugFragment.class).b(context);
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(a2);
return false;
});
PreferenceFragmentUtils.addPreference(
getPreferenceScreen(),
"",
requireContext().getString(R.string.sett_debug),
"",
R.drawable.ic_bug_outline_28,
preference -> {
launchFragment(SettingsDebugFragment.class);
return false;
}
);
addMaterialSwitchPreference(this, "ssl", requireContext().getString(R.string.debug_developer_force_ssl), requireContext().getString(R.string.debug_developer_force_ssl_summary), R.drawable.ic_globe_outline_28, true, (preference, o) -> {
boolean value = (boolean) o;
edit().putBoolean("ssl", value).commit();
return true;
});
PreferenceFragmentUtils.addMaterialSwitchPreference(
getPreferenceScreen(),
"ssl",
requireContext().getString(R.string.debug_developer_force_ssl),
requireContext().getString(R.string.debug_developer_force_ssl_summary),
R.drawable.ic_globe_outline_28,
true,
(preference, o) -> {
AndroidUtils.edit().putBoolean("ssl", (boolean) o).commit();
return true;
}
);
if (dev() && isValidSignature()) {
addMaterialSwitchPreference(this, "autoupdates", requireContext().getString(R.string.checkupdates), "", R.drawable.ic_camera_switch_outline_24, true, (preference, o) -> {
boolean value = (boolean) o;
edit().putBoolean("autoupdates", value).commit();
return true;
});
if(Preferences.dev() && Preferences.isValidSignature()) {
PreferenceFragmentUtils.addMaterialSwitchPreference(
getPreferenceScreen(),
"autoupdates",
requireContext().getString(R.string.checkupdates),
"",
R.drawable.ic_camera_switch_outline_24,
true,
(preference, o) -> {
boolean value = (boolean) o;
AndroidUtils.edit().putBoolean("autoupdates", value).commit();
return true;
}
);
}
}
addPreferenceCategory(this, requireContext().getString(R.string.vtsettaccount));
PreferenceFragmentUtils.addPreferenceCategory(getPreferenceScreen(), R.string.vtsettaccount);
addPreference(this, "", requireContext().getString(R.string.vkconnect), "", R.drawable.ic_user_circle_outline_28, preference -> {
Context context = requireContext();
VKUIwrapper.officalLinks("account");
Intent a2 = new Navigator(VKUIwrapper.class).b(context);
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(a2);
return false;
});
addPreference(this, "", requireContext().getString(R.string.privacy_settings), "", R.drawable.ic_privacy_outline_28, preference -> {
Context context = requireContext();
Intent a2 = new Navigator(PrivacyFragment.class).b(context);
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(a2);
return false;
});
addPreference(this, "", requireContext().getString(R.string.sett_account), "", R.drawable.ic_user_outline_28, preference -> {
Context context = requireContext();
Intent a2 = new Navigator(SettingsAccountFragment.class).b(context);
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(a2);
return false;
});
if (isVKTester()) {
addPreference(this, "", requireContext().getString(R.string.bugs), "", R.drawable.ic_bug_outline_28, preference -> {
Context context = requireContext();
VKUIwrapper.officalLinks("bugs");
Intent a2 = new Navigator(VKUIwrapper.class).b(context);
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(a2);
return false;
});
}
addPreferenceCategory(this, requireContext().getString(R.string.vtlvksettings));
addPreference(this, "", requireContext().getString(R.string.sett_general), "", R.drawable.ic_settings_outline_28, preference -> {
Context context = requireContext();
Intent a2 = new Navigator(SettingsGeneralFragment.class).b(context);
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(a2);
return false;
});
addPreference(this, "", requireContext().getString(R.string.blacklist), "", R.drawable.ic_users_outline_28, preference -> {
Context context = requireContext();
Intent a2 = new Navigator(BlacklistFragment.class).b(context);
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(a2);
return false;
});
addPreference(this, "", requireContext().getString(R.string.sett_notifications), "", R.drawable.ic_menu_notification_outline_28, preference -> {
Context context = requireContext();
Intent a2 = new Navigator(NotificationsSettingsFragment.class).b(context);
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(a2);
return false;
});
if (VKAccountManager.d().isMusicSubs()) {
addPreference(this, "", requireContext().getString(R.string.subscription_music), "", R.drawable.ic_music_outline_28, preference -> {
Context context = requireContext();
Intent a2 = new Navigator(MusicSubscriptionControlFragment.class).b(context);
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(a2);
return false;
});
}
addPreference(this, "", requireContext().getString(R.string.votes), "", R.drawable.ic_coins_outline_28, preference -> {
Context context = requireContext();
Intent a2 = new Navigator(BalanceFragment.class).b(context);
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(a2);
return false;
});
addPreferenceCategory(this, requireContext().getString(R.string.vtsettmod));
if (vkme()) {
addPreference(this, "", requireContext().getString(R.string.warning), requireContext().getString(R.string.vkme_mode_info), R.drawable.ic_about_outline_28, preference -> false);
} else {
addPreference(this, "", requireContext().getString(R.string.vtlfeed), feedsumm, R.drawable.ic_newsfeed_outline_28, preference -> {
Context context = requireContext();
Intent a2 = new Navigator(FeedFragment.class).b(context);
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(a2);
return false;
});
}
addPreference(this, "", requireContext().getString(R.string.vtlmedia), mediasumm, R.drawable.ic_media_outline_28, preference -> {
Context context = requireContext();
Intent a2 = new Navigator(MediaFragment.class).b(context);
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(a2);
return false;
});
addPreference(this, "", requireContext().getString(R.string.vtlmessages), msgsumm, R.drawable.ic_message_outline_28, preference -> {
Context context = requireContext();
Intent a2 = new Navigator(MessagesFragment.class).b(context);
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(a2);
return false;
});
addPreference(this, "", requireContext().getString(R.string.vtltgs), tgssumm, R.drawable.ic_telegram_outline_28, preference -> {
Context context = requireContext();
Intent a2 = new Navigator(StickersFragment.class).b(context);
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(a2);
return false;
});
addPreference(this, "", requireContext().getString(R.string.vtlthemes), themessumm, R.drawable.ic_write_outline_28, preference -> {
Context context = requireContext();
Intent a2 = new Navigator(ThemesFragment.class).b(context);
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(a2);
return false;
});
addPreference(this, "", requireContext().getString(R.string.vtlinterface), interfacesumm, R.drawable.ic_interface_outline_28, preference -> {
Context context = requireContext();
Intent a2 = new Navigator(InterfaceFragment.class).b(context);
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(a2);
return false;
});
if (!vkme()) {
if (!isTablet()) {
addPreference(this, "", requireContext().getString(R.string.dockbar_editor), docksumm, R.drawable.ic_list_outline_28, preference -> {
Context context = requireContext();
Intent intent = new Navigator(DockBarEditorFragment.class).b(context);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
PreferenceFragmentUtils.addPreference(
getPreferenceScreen(),
"",
requireContext().getString(R.string.vkconnect),
"",
R.drawable.ic_user_circle_outline_28,
preference -> {
VKUIwrapper.officalLinks("account");
launchFragment(VKUIwrapper.class);
return false;
});
}
);
if (milkshake() && superapp()) {
addPreference(this, "", requireContext().getString(R.string.superapp_editor), superapp, R.drawable.ic_services_outline_28, (preference) -> {
Context context = requireContext();
Intent intent = new Navigator(SuperAppEditorFragment.class).b(context);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
return true;
});
PreferenceFragmentUtils.addPreference(
getPreferenceScreen(),
"",
requireContext().getString(R.string.privacy_settings),
"",
R.drawable.ic_privacy_outline_28,
preference -> {
launchFragment(PrivacyFragment.class);
return false;
}
);
PreferenceFragmentUtils.addPreference(
getPreferenceScreen(),
"",
requireContext().getString(R.string.sett_account),
"",
R.drawable.ic_user_outline_28,
preference -> {
launchFragment(SettingsAccountFragment.class);
return false;
}
);
if(AccountManagerUtils.isVKTester()) {
PreferenceFragmentUtils.addPreference(
getPreferenceScreen(),
"",
requireContext().getString(R.string.bugs),
"",
R.drawable.ic_bug_outline_28,
preference -> {
VKUIwrapper.officalLinks("bugs");
launchFragment(VKUIwrapper.class);
return false;
}
);
}
PreferenceFragmentUtils.addPreferenceCategory(getPreferenceScreen(), requireContext().getString(R.string.vtlvksettings));
PreferenceFragmentUtils.addPreference(
getPreferenceScreen(),
"",
requireContext().getString(R.string.sett_general),
"",
R.drawable.ic_settings_outline_28,
preference -> {
launchFragment(SettingsGeneralFragment.class);
return false;
}
);
PreferenceFragmentUtils.addPreference(
getPreferenceScreen(),
"",
requireContext().getString(R.string.blacklist),
"",
R.drawable.ic_users_outline_28,
preference -> {
launchFragment(BlacklistFragment.class);
return false;
}
);
PreferenceFragmentUtils.addPreference(
getPreferenceScreen(),
"",
requireContext().getString(R.string.sett_notifications),
"",
R.drawable.ic_menu_notification_outline_28,
preference -> {
launchFragment(NotificationsSettingsFragment.class);
return false;
}
);
if(VKAccountManager.d().isMusicSubs()) {
PreferenceFragmentUtils.addPreference(
getPreferenceScreen(),
"",
requireContext().getString(R.string.subscription_music),
"",
R.drawable.ic_music_outline_28,
preference -> {
launchFragment(MusicSubscriptionControlFragment.class);
return false;
}
);
}
PreferenceFragmentUtils.addPreference(
getPreferenceScreen(),
"",
requireContext().getString(R.string.votes),
"",
R.drawable.ic_coins_outline_28,
preference -> {
launchFragment(BalanceFragment.class);
return false;
}
);
PreferenceFragmentUtils.addPreferenceCategory(getPreferenceScreen(), requireContext().getString(R.string.vtsettmod));
if(Preferences.vkme()) {
PreferenceFragmentUtils.addPreference(
getPreferenceScreen(),
"",
requireContext().getString(R.string.warning),
requireContext().getString(R.string.vkme_mode_info),
R.drawable.ic_about_outline_28,
preference -> false
);
} else {
PreferenceFragmentUtils.addPreference(
getPreferenceScreen(),
"",
requireContext().getString(R.string.vtlfeed),
getValAsString(R.string.vtlfeedsumm, Preferences.ads()),
R.drawable.ic_newsfeed_outline_28,
preference -> {
launchFragment(FeedFragment.class);
return false;
}
);
}
PreferenceFragmentUtils.addPreference(
getPreferenceScreen(),
"",
requireContext().getString(R.string.vtlmedia),
getValAsString(R.string.vtlinterfacesumm, Preferences.shortinfo()),
R.drawable.ic_media_outline_28,
preference -> {
launchFragment(MediaFragment.class);
return false;
}
);
PreferenceFragmentUtils.addPreference(
getPreferenceScreen(),
"",
requireContext().getString(R.string.vtlmessages),
AndroidUtils.isTablet()
? getValAsString(R.string.autotranslate_title, Preferences.autotranslate())
: getValAsString(R.string.vtlmsgsumm, Preferences.vkme()),
R.drawable.ic_message_outline_28,
preference -> {
launchFragment(MessagesFragment.class);
return false;
}
);
PreferenceFragmentUtils.addPreference(
getPreferenceScreen(),
"tgs_stickers",
requireContext().getString(R.string.vtltgs),
getTGSsumm(),
R.drawable.ic_telegram_outline_28,
preference -> {
launchFragment(StickersFragment.class);
return false;
}
);
PreferenceFragmentUtils.addPreference(
getPreferenceScreen(),
"",
requireContext().getString(R.string.vtlthemes),
getThemesumm(),
R.drawable.ic_write_outline_28,
preference -> {
launchFragment(ThemesFragment.class);
return false;
}
);
PreferenceFragmentUtils.addPreference(
getPreferenceScreen(),
"",
requireContext().getString(R.string.vtlinterface),
getValAsString(R.string.showstories, Preferences.stories()),
R.drawable.ic_interface_outline_28,
preference -> {
launchFragment(InterfaceFragment.class);
return false;
}
);
if(!Preferences.vkme()) {
if(!AndroidUtils.isTablet()) {
PreferenceFragmentUtils.addPreference(
getPreferenceScreen(),
"",
requireContext().getString(R.string.dockbar_editor),
getDocksumm(),
R.drawable.ic_list_outline_28,
preference -> {
launchFragment(DockBarEditorFragment.class);
return false;
}
);
if(Preferences.milkshake() && Preferences.superapp()) {
PreferenceFragmentUtils.addPreference(
getPreferenceScreen(),
"",
requireContext().getString(R.string.superapp_editor),
getSuperappsumm(),
R.drawable.ic_services_outline_28,
(preference) -> {
launchFragment(SuperAppEditorFragment.class);
return true;
}
);
}
}
}
addPreference(this, "", requireContext().getString(R.string.vtlactivity), activitysumm, R.drawable.ic_write_outline_28_new_accent, preference -> {
Context context = requireContext();
Intent a2 = new Navigator(ActivityFragment.class).b(context);
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(a2);
return false;
});
PreferenceFragmentUtils.addPreference(
getPreferenceScreen(),
"",
requireContext().getString(R.string.vtlactivity),
getValAsString(R.string.vtlactivitysumm, Preferences.offline()),
R.drawable.ic_write_outline_28_new_accent,
preference -> {
launchFragment(ActivityFragment.class);
return false;
}
);
addPreference(this, "", requireContext().getString(R.string.vtlproxy), proxysumm, R.drawable.ic_globe_outline_28, preference -> {
Context context = requireContext();
Intent a2 = new Navigator(ProxySettingsFragment.class).b(context);
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(a2);
return false;
});
PreferenceFragmentUtils.addPreference(
getPreferenceScreen(),
"",
requireContext().getString(R.string.vtlproxy),
getProxysumm(),
R.drawable.ic_globe_outline_28,
preference -> {
launchFragment(ProxySettingsFragment.class);
return false;
}
);
addPreference(this, "", requireContext().getString(R.string.vtlother), othersumm, R.drawable.ic_more_horizontal_28, preference -> {
Context context = requireContext();
Intent a2 = new Navigator(OtherFragment.class).b(context);
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(a2);
return false;
});
PreferenceFragmentUtils.addPreference(
getPreferenceScreen(),
"",
requireContext().getString(R.string.vtlother),
getValAsString(R.string.vtlothersumm, VTVerifications.vtverif()),
R.drawable.ic_more_horizontal_28,
preference -> {
launchFragment(OtherFragment.class);
return false;
}
);
addPreferenceCategory(this, requireContext().getString(R.string.vtsettaboutmod));
PreferenceFragmentUtils.addPreferenceCategory(getPreferenceScreen(), requireContext().getString(R.string.vtsettaboutmod));
addPreference(this, "", requireContext().getString(R.string.menu_about), about, R.drawable.ic_about_outline_28, preference -> {
Context context = requireContext();
Intent a2 = new Navigator(AboutAppFragment.class).b(context);
a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(a2);
return false;
});
PreferenceFragmentUtils.addPreference(
getPreferenceScreen(),
"",
requireContext().getString(R.string.menu_about),
"Commit: " + About.getBuildNumber(),
R.drawable.ic_about_outline_28,
preference -> {
launchFragment(AboutAppFragment.class);
return false;
}
);
addPreference(this, "", requireContext().getString(R.string.opencommit), "", R.drawable.ic_link_outline_28, preference -> {
requireContext().startActivity(new Intent("android.intent.action.VIEW").setData(Uri.parse(getCommitLink())));
return false;
});
PreferenceFragmentUtils.addPreference(
getPreferenceScreen(),
"",
requireContext().getString(R.string.opencommit),
"",
R.drawable.ic_link_outline_28,
preference -> {
requireContext().startActivity(new Intent(Intent.ACTION_VIEW).setData(Uri.parse(About.getCommitLink())));
return false;
}
);
addPreference(this, "", requireContext().getString(R.string.vtfaq), requireContext().getString(R.string.vtfaqsumm), R.drawable.ic_help_outline_28, preference -> {
requireContext().startActivity(new Intent("android.intent.action.VIEW").setData(Uri.parse("https://t.me/s/vtosters_faq")));
return false;
});
PreferenceFragmentUtils.addPreference(
getPreferenceScreen(),
"",
requireContext().getString(R.string.vtfaq),
requireContext().getString(R.string.vtfaqsumm),
R.drawable.ic_help_outline_28,
preference -> {
requireContext().startActivity(new Intent(Intent.ACTION_VIEW).setData(Uri.parse("https://t.me/s/vtosters_faq")));
return false;
}
);
addPreference(this, "", requireContext().getString(R.string.reportbug), requireContext().getString(R.string.reportbugsumm), R.drawable.ic_bug_outline_28, preference -> {
requireContext().startActivity(new Intent("android.intent.action.VIEW").setData(Uri.parse("https://github.com/vtosters/lite/issues")));
return false;
});
PreferenceFragmentUtils.addPreference(
getPreferenceScreen(),
"",
requireContext().getString(R.string.reportbug),
requireContext().getString(R.string.reportbugsumm),
R.drawable.ic_bug_outline_28,
preference -> {
requireContext().startActivity(new Intent(Intent.ACTION_VIEW).setData(Uri.parse("https://github.com/vtosters/lite/issues")));
return false;
}
);
if (isValidSignature()) {
addPreferenceCategory(this, requireContext().getString(R.string.updates));
if(Preferences.isValidSignature()) {
PreferenceFragmentUtils.addPreferenceCategory(getPreferenceScreen(), requireContext().getString(R.string.updates));
addPreference(this, "", requireContext().getString(R.string.checkforupdates), "", R.drawable.ic_download_outline_28, preference -> {
OTADialog.checkUpdates(getActivity());
return false;
});
PreferenceFragmentUtils.addPreference(
getPreferenceScreen(),
"",
requireContext().getString(R.string.checkforupdates),
"",
R.drawable.ic_download_outline_28,
preference -> {
OTADialog.checkUpdates(getActivity());
return false;
}
);
}
}
private void launchFragment(Class< ? extends FragmentImpl > fragmentClz) {
Intent intent = new Navigator(fragmentClz)
.b(requireContext())
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
requireContext().startActivity(intent);
}
@Override
public void onResume() {
super.onResume();
@@ -471,4 +645,10 @@ public class VTSettings extends MaterialPreferenceToolbarFragment {
public int T4() {
return R.string.notification_settings;
}
@Override
public void onDestroyView() {
super.onDestroyView();
TelegramStickersService.getInstance(requireContext()).removeStickersEventsListener(this);
}
}
@@ -6,6 +6,7 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.Uri;
import android.os.Bundle;
import android.view.*;
import android.widget.EditText;
@@ -82,30 +83,30 @@ public class StickersFragment extends BaseToolbarFragment {
private void openMenu(String toast) {
if (toast != null) {
Toast.makeText(getContext(), toast, Toast.LENGTH_SHORT).show();
Toast.makeText(requireContext(), toast, Toast.LENGTH_SHORT).show();
}
var intent = new Navigator(StickersPreferencesFragment.class, new Bundle()).b(getContext());
var intent = new Navigator(StickersPreferencesFragment.class, new Bundle()).b(requireContext());
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
super.getContext().startActivity(intent);
super.requireContext().startActivity(intent);
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getContext().registerReceiver(mReceiver, new IntentFilter(ACTION_RELOAD));
requireContext().registerReceiver(mReceiver, new IntentFilter(ACTION_RELOAD));
mGrabber = new TelegramStickersGrabber(TGPref.getTGBotKey());
mService = TelegramStickersService.getInstance(getContext());
mService = TelegramStickersService.getInstance(requireContext());
}
@Override
public View onCreateContent(@NonNull LayoutInflater inflater, @Nullable Bundle bundle) {
setTitle(R.string.vtltgs);
FrameLayout layout = new FrameLayout(getContext());
FrameLayout layout = new FrameLayout(requireContext());
mAdapter = new StickerPackAdapter();
RecyclerView mRecycler = new RecyclerView(getContext());
RecyclerView mRecycler = new RecyclerView(requireContext());
var callback = new StickerTouchHelperCallback(mAdapter);
var touchHelper = new ItemTouchHelper(callback);
@@ -115,7 +116,7 @@ public class StickersFragment extends BaseToolbarFragment {
mRecycler.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL));
layout.addView(mRecycler, new ViewGroup.LayoutParams(-1, -1));
FloatingActionButton mAddStickerPack = new FloatingActionButton(getContext());
FloatingActionButton mAddStickerPack = new FloatingActionButton(requireContext());
mAddStickerPack.setImageResource(R.drawable.ic_add_24);
mAddStickerPack.setBackgroundTintList(ThemesUtils.getAccenedColorStateList());
mAddStickerPack.setOnClickListener(v2 -> fabClick());
@@ -154,9 +155,9 @@ public class StickersFragment extends BaseToolbarFragment {
}
} else if (method == TYPE_DIRECT) {
final Runnable callback = () -> {
LinearLayout linearLayout = new LinearLayout(getContext());
LinearLayout linearLayout = new LinearLayout(requireContext());
final EditText editText = new EditText(getContext());
final EditText editText = new EditText(requireContext());
editText.setHintTextColor(ThemesUtils.getSTextAttr());
editText.setBackgroundTintList(ThemesUtils.getAccenedColorStateList());
@@ -166,7 +167,7 @@ public class StickersFragment extends BaseToolbarFragment {
margin.setMargins(AndroidUtils.dp2px(24f), 0, AndroidUtils.dp2px(24f), 0);
editText.setLayoutParams(margin);
new VkAlertDialog.Builder(getContext())
new VkAlertDialog.Builder(requireContext())
.setTitle(requireContext().getString(R.string.stickershelp1))
.setMessage(requireContext().getString(R.string.stickershelp2))
.setView(linearLayout)
@@ -178,7 +179,7 @@ public class StickersFragment extends BaseToolbarFragment {
AndroidUtils.sendToast(AndroidUtils.getString("invalid_pack_link"));
}
pack = parsePack(pack);
mService.requestPackDownload(pack, new File(getContext().getFilesDir(), new File("VT-Stickers", pack).getAbsolutePath()));
mService.requestPackDownload(pack, new File(requireContext().getFilesDir(), new File("VT-Stickers", pack).getAbsolutePath()));
})
.setNeutralButton(android.R.string.cancel,
(dialog, which) -> dialog.dismiss()
@@ -212,9 +213,9 @@ public class StickersFragment extends BaseToolbarFragment {
}
private void enterBotKey(Runnable r) {
LinearLayout linearLayout = new LinearLayout(getContext());
LinearLayout linearLayout = new LinearLayout(requireContext());
final EditText editText = new EditText(getContext());
final EditText editText = new EditText(requireContext());
editText.setHintTextColor(ThemesUtils.getSTextAttr());
editText.setBackgroundTintList(ThemesUtils.getAccenedColorStateList());
@@ -224,7 +225,7 @@ public class StickersFragment extends BaseToolbarFragment {
margin.setMargins(AndroidUtils.dp2px(24f), 0, AndroidUtils.dp2px(24f), 0);
editText.setLayoutParams(margin);
new VkAlertDialog.Builder(getContext())
new VkAlertDialog.Builder(requireContext())
.setTitle(requireContext().getString(R.string.stickersapi5))
.setMessage(requireContext().getString(R.string.stickersapi6))
.setView(linearLayout)
@@ -236,10 +237,15 @@ public class StickersFragment extends BaseToolbarFragment {
(dialog, which) -> dialog.dismiss()
)
.setNeutralButton(requireContext().getString(R.string.stickersapi7),
(dialog, which) -> new VkAlertDialog.Builder(getContext())
(dialog, which) -> new VkAlertDialog.Builder(requireContext())
.setTitle(requireContext().getString(R.string.stickersapi8))
.setMessage(requireContext().getString(R.string.stickersapi9) +
requireContext().getString(R.string.stickersapi10))
.setNeutralButton(AndroidUtils.getString("open_bot"), (dl, i) -> {
var intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://t.me/botfather"));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
requireActivity().startActivity(intent);
})
.setPositiveButton(android.R.string.ok, null)
.show()
)
@@ -249,7 +255,7 @@ public class StickersFragment extends BaseToolbarFragment {
private void checkApiKey(Runnable callback) {
mGrabber.setBotApiKey(TGPref.getTGBotKey());
var context = getContext();
var context = requireContext();
final ProgressDialog progressDialog = new ProgressDialog(context);
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
@@ -1,15 +1,13 @@
package ru.vtosters.lite.ui.fragments.tgstickers;
import android.os.Bundle;
import com.aefyr.tsg.g2.stickersgrabber.TelegramStickersGrabber;
import com.vk.core.util.ToastUtils;
import com.vtosters.lite.R;
import com.vtosters.lite.general.fragments.MaterialPreferenceToolbarFragment;
import ru.vtosters.lite.tgs.TGPref;
import ru.vtosters.lite.tgs.TGRoot;
import ru.vtosters.lite.ui.PreferencesUtil;
import ru.vtosters.lite.ui.PreferenceFragmentUtils;
public class StickersPreferencesFragment extends MaterialPreferenceToolbarFragment {
@@ -20,17 +18,17 @@ public class StickersPreferencesFragment extends MaterialPreferenceToolbarFragme
int vtosterXml = R.xml.empty;
addPreferencesFromResource(vtosterXml);
PreferencesUtil.addPreferenceCategory(this, requireContext().getString(R.string.sprefsstickers));
PreferencesUtil.addPreference(this, "", requireContext().getString(R.string.sprefsdelkey), "", 0, preference -> {
PreferenceFragmentUtils.addPreferenceCategory(getPreferenceScreen(), requireContext().getString(R.string.sprefsstickers));
PreferenceFragmentUtils.addPreference(getPreferenceScreen(), "", R.string.sprefsdelkey, 0, 0, preference -> {
TGPref.setTGBotKey(null);
ToastUtils.a(requireContext().getString(R.string.sprefsdelkey2));
return false;
});
PreferencesUtil.addPreferenceCategory(this, requireContext().getString(R.string.sprefsnetwork));
PreferencesUtil.addListPreference(this, "VTGS:CM", "0", requireContext().getString(R.string.sprefsctype), new CharSequence[]{
PreferenceFragmentUtils.addPreferenceCategory(getPreferenceScreen(), requireContext().getString(R.string.sprefsnetwork));
PreferenceFragmentUtils.addListPreference(getPreferenceScreen(), "VTGS:CM", "0", requireContext().getString(R.string.sprefsctype), new CharSequence[] {
requireContext().getString(R.string.ctypedirect), requireContext().getString(R.string.ctypesocks)
}, new String[]{
}, new String[] {
"0", "2"
});
@@ -40,40 +38,40 @@ public class StickersPreferencesFragment extends MaterialPreferenceToolbarFragme
String newData = (String) o;
TGPref.setTGConnectMethod(Integer.parseInt(newData));
TelegramStickersGrabber.updateURLs();
preference.setTitle(TGRoot.getSummary()); // setTitle
preference.setTitle(TGRoot.getSummary());
return true;
});
PreferencesUtil.addPreferenceCategory(this, requireContext().getString(R.string.ssocks));
PreferenceFragmentUtils.addPreferenceCategory(getPreferenceScreen(), R.string.ssocks);
PreferencesUtil.addEditTextPreference(this, "tg_proxy_host", requireContext().getString(R.string.ssockshost), (preference, o) -> {
TGPref.setTGProxyIP((String) o);
PreferenceFragmentUtils.addEditTextPreference(getPreferenceScreen(), "tg_proxy_host", R.string.ssockshost, (preference, o) -> {
TGPref.setTGProxyIP(o);
return true;
});
PreferencesUtil.addEditTextPreference(this, "tg_proxy_port", requireContext().getString(R.string.ssocksport), (preference, o) -> {
PreferenceFragmentUtils.addEditTextPreference(getPreferenceScreen(), "tg_proxy_port", R.string.ssocksport, (preference, o) -> {
try {
TGPref.setTGProxyPort(Integer.parseInt((String) o));
TGPref.setTGProxyPort(Integer.parseInt(o));
return true;
} catch (Exception e) {
} catch(Exception e) {
ToastUtils.a(requireContext().getString(R.string.ssockswport));
return false;
}
});
PreferencesUtil.addMaterialSwitchPreference(this, "tg_proxy_auth", requireContext().getString(R.string.ssocksauth), "", 0, false, (preference, o) -> {
PreferenceFragmentUtils.addMaterialSwitchPreference(getPreferenceScreen(), "tg_proxy_auth", requireContext().getString(R.string.ssocksauth), "", 0, false, (preference, o) -> {
boolean value = (boolean) o;
findPreference("tg_proxy_login").setEnabled(value); // findPreference("tg_proxy_login").setEnabled(value);
findPreference("tg_proxy_pass").setEnabled(value); // findPreference("tg_proxy_pass").setEnabled(booleanValue);
findPreference("tg_proxy_login").setEnabled(value);
findPreference("tg_proxy_pass").setEnabled(value);
TGPref.setTGProxyPassEnabled(value);
return true;
});
PreferencesUtil.addEditTextPreference(this, "tg_proxy_login", requireContext().getString(R.string.ssockslogin), (preference, o) -> {
TGPref.setTGProxyUserPass((String) o, TGPref.getTGProxyPass());
PreferenceFragmentUtils.addEditTextPreference(getPreferenceScreen(), "tg_proxy_login", R.string.ssockslogin, (preference, o) -> {
TGPref.setTGProxyUserPass(o, TGPref.getTGProxyPass());
return true;
});
PreferencesUtil.addEditTextPreference(this, "tg_proxy_pass", requireContext().getString(R.string.ssockspass), (preference, o) -> {
TGPref.setTGProxyUserPass(TGPref.getTGProxyUser(), (String) o);
PreferenceFragmentUtils.addEditTextPreference(getPreferenceScreen(), "tg_proxy_pass", R.string.ssockspass, (preference, o) -> {
TGPref.setTGProxyUserPass(TGPref.getTGProxyUser(), o);
return true;
});
@@ -9,8 +9,14 @@ import android.widget.EditText;
class HexEdit {
private static InputFilter[] withoutAlphaDigits = {new ColorPasteLengthFilter()};
private static InputFilter[] withAlphaDigits = {new InputFilter.LengthFilter(8)};
private static InputFilter[] withoutAlphaDigits = {
new ColorPasteLengthFilter(),
new HexFilter()
};
private static InputFilter[] withAlphaDigits = {
new InputFilter.LengthFilter(8),
new HexFilter()
};
public static void setUpListeners(final EditText hexEdit, final ObservableColor observableColor) {
@@ -93,4 +99,19 @@ class HexEdit {
}
}
private static class HexFilter implements InputFilter {
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
var state = true;
for (int i = start; i < end; i++) {
char ch = source.charAt(i);
if (ch < '0' || ch> '9' && ch < 'A' || ch > 'F' && ch < 'a' || ch > 'f') {
state = false;
break;
}
}
return state ? source.subSequence(start, end) : "";
}
}
}
@@ -1,36 +1,28 @@
package ru.vtosters.lite.ui.wallpapers;
import static ru.vtosters.lite.ui.wallpapers.WallpapersHooks.getDimmingSummary;
import static ru.vtosters.lite.ui.wallpapers.WallpapersHooks.getMosaicSummary;
import static ru.vtosters.lite.ui.wallpapers.WallpapersHooks.getRadiusSummary;
import static ru.vtosters.lite.ui.wallpapers.WallpapersHooks.getWallpaperFile;
import static ru.vtosters.lite.ui.wallpapers.WallpapersHooks.removeWallpaper;
import static ru.vtosters.lite.ui.wallpapers.WallpapersHooks.requestUpdateWallpaper;
import static ru.vtosters.lite.utils.AndroidUtils.edit;
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
import static ru.vtosters.lite.utils.Preferences.hasVerification;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Bundle;
import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.preference.ListPreference;
import com.vtosters.lite.R;
import com.vtosters.lite.general.fragments.MaterialPreferenceToolbarFragment;
import com.vtosters.lite.im.ImEngineProvider;
import ru.vtosters.lite.ui.PreferenceFragmentUtils;
import ru.vtosters.lite.utils.AndroidUtils;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import ru.vtosters.lite.ui.PreferencesUtil;
import ru.vtosters.lite.utils.AndroidUtils;
import static ru.vtosters.lite.ui.wallpapers.WallpapersHooks.*;
import static ru.vtosters.lite.utils.AndroidUtils.edit;
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
import static ru.vtosters.lite.utils.Preferences.hasVerification;
public class WallpaperMenuFragment extends MaterialPreferenceToolbarFragment {
@@ -55,20 +47,20 @@ public class WallpaperMenuFragment extends MaterialPreferenceToolbarFragment {
addPreferencesFromResource(R.xml.empty);
PreferencesUtil.addPreferenceCategory(this, requireContext().getString(R.string.vkim_settings_appearance_chat_preview_title));
PreferenceFragmentUtils.addPreferenceCategory(getPreferenceScreen(), requireContext().getString(R.string.vkim_settings_appearance_chat_preview_title));
mWPPreviewPref = new WallpaperPreferences(getContext());
mWPPreviewPref.setIcon(null);
mWPPreviewPref.setIconSpaceReserved(false);
getPreferenceScreen().addPreference(mWPPreviewPref);
PreferencesUtil.addPreference(this, "wp_set", requireContext().getString(R.string.wallpaper_select), requireContext().getString(R.string.wallpaper_from_gallery), R.drawable.ic_picture_outline_28, preference -> {
PreferenceFragmentUtils.addPreference(getPreferenceScreen(), "wp_set", requireContext().getString(R.string.wallpaper_select), requireContext().getString(R.string.wallpaper_from_gallery), R.drawable.ic_picture_outline_28, preference -> {
startActivityForResult(new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI), 1488);
removeStickCache();
return true;
});
PreferencesUtil.addPreference(this, "wp_clear", requireContext().getString(R.string.wallpaper_remove), "", R.drawable.ic_delete_outline_28, preference -> {
PreferenceFragmentUtils.addPreference(getPreferenceScreen(), "wp_clear", requireContext().getString(R.string.wallpaper_remove), "", R.drawable.ic_delete_outline_28, preference -> {
removeWallpaper();
requestUpdateWallpaper();
mWPPreviewPref.redraw();
@@ -76,30 +68,30 @@ public class WallpaperMenuFragment extends MaterialPreferenceToolbarFragment {
return true;
});
PreferencesUtil.addPreferenceCategory(this, requireContext().getString(R.string.vtlfilters));
PreferenceFragmentUtils.addPreferenceCategory(getPreferenceScreen(), requireContext().getString(R.string.vtlfilters));
if (!hasVerification() && !getBoolValue("dialogrecomm", false)) {
PreferencesUtil.addPreference(this, "", requireContext().getString(R.string.filters_warning), requireContext().getString(R.string.icons_warning_info), 0, preference -> {
requireContext().startActivity(new Intent("android.intent.action.VIEW").setData(Uri.parse("https://vtosters.app/donate/")));
PreferenceFragmentUtils.addPreference(getPreferenceScreen(), "", requireContext().getString(R.string.filters_warning), requireContext().getString(R.string.icons_warning_info), 0, preference -> {
requireContext().startActivity(new Intent(Intent.ACTION_VIEW).setData(Uri.parse("https://vtosters.app/donate/")));
return false;
});
}
PreferencesUtil.addListPreference(this, "msg_blur_radius", "disabled", requireContext().getString(R.string.filter_blur), AndroidUtils.getArray(R.array.filter_types), new String[]{
PreferenceFragmentUtils.addListPreference(getPreferenceScreen(), "msg_blur_radius", "disabled", requireContext().getString(R.string.filter_blur), AndroidUtils.getArray(R.array.filter_types), new String[]{
"disabled", "low", "med", "high"
});
PreferencesUtil.addListPreference(this, "msg_dim", "off", requireContext().getString(R.string.filter_dim), AndroidUtils.getArray(R.array.filter_dim_types), new String[]{
PreferenceFragmentUtils.addListPreference(getPreferenceScreen(), "msg_dim", "off", requireContext().getString(R.string.filter_dim), AndroidUtils.getArray(R.array.filter_dim_types), new String[]{
"off", "dim_black", "dim_white"
});
PreferencesUtil.addListPreference(this, "msg_mosaic", "disabled", requireContext().getString(R.string.filter_mosaic), AndroidUtils.getArray(R.array.filter_types), new String[]{
PreferenceFragmentUtils.addListPreference(getPreferenceScreen(), "msg_mosaic", "disabled", requireContext().getString(R.string.filter_mosaic), AndroidUtils.getArray(R.array.filter_types), new String[]{
"disabled", "low", "med", "high"
});
if (hasVerification()) {
PreferencesUtil.addMaterialSwitchPreference(this, "msg_monochrome", requireContext().getString(R.string.filter_monochrome), "", 0, false, (preference, o) -> {
PreferenceFragmentUtils.addMaterialSwitchPreference(getPreferenceScreen(), "msg_monochrome", requireContext().getString(R.string.filter_monochrome), "", 0, false, (preference, o) -> {
boolean value = (boolean) o;
edit().putBoolean("msg_monochrome", value).commit();
requestUpdateWallpaper();
@@ -107,7 +99,7 @@ public class WallpaperMenuFragment extends MaterialPreferenceToolbarFragment {
return true;
});
PreferencesUtil.addMaterialSwitchPreference(this, "msg_invert", requireContext().getString(R.string.filter_invert_colors), "", 0, false, (preference, o) -> {
PreferenceFragmentUtils.addMaterialSwitchPreference(getPreferenceScreen(), "msg_invert", requireContext().getString(R.string.filter_invert_colors), "", 0, false, (preference, o) -> {
boolean value = (boolean) o;
edit().putBoolean("msg_invert", value).commit();
requestUpdateWallpaper();
@@ -115,7 +107,7 @@ public class WallpaperMenuFragment extends MaterialPreferenceToolbarFragment {
return true;
});
PreferencesUtil.addMaterialSwitchPreference(this, "msg_sepia", requireContext().getString(R.string.filter_sepia), "", 0, false, (preference, o) -> {
PreferenceFragmentUtils.addMaterialSwitchPreference(getPreferenceScreen(), "msg_sepia", requireContext().getString(R.string.filter_sepia), "", 0, false, (preference, o) -> {
boolean value = (boolean) o;
edit().putBoolean("msg_sepia", value).commit();
requestUpdateWallpaper();
@@ -123,7 +115,7 @@ public class WallpaperMenuFragment extends MaterialPreferenceToolbarFragment {
return true;
});
PreferencesUtil.addMaterialSwitchPreference(this, "msg_emboss", requireContext().getString(R.string.filter_emboss), requireContext().getString(R.string.filter_maybe_lag), 0, false, (preference, o) -> {
PreferenceFragmentUtils.addMaterialSwitchPreference(getPreferenceScreen(), "msg_emboss", requireContext().getString(R.string.filter_emboss), requireContext().getString(R.string.filter_maybe_lag), 0, false, (preference, o) -> {
boolean value = (boolean) o;
edit().putBoolean("msg_emboss", value).commit();
requestUpdateWallpaper();
@@ -131,7 +123,7 @@ public class WallpaperMenuFragment extends MaterialPreferenceToolbarFragment {
return true;
});
PreferencesUtil.addMaterialSwitchPreference(this, "msg_engrave", requireContext().getString(R.string.filter_engrave), requireContext().getString(R.string.filter_maybe_lag), 0, false, (preference, o) -> {
PreferenceFragmentUtils.addMaterialSwitchPreference(getPreferenceScreen(), "msg_engrave", requireContext().getString(R.string.filter_engrave), requireContext().getString(R.string.filter_maybe_lag), 0, false, (preference, o) -> {
boolean value = (boolean) o;
edit().putBoolean("msg_engrave", value).commit();
requestUpdateWallpaper();
@@ -139,7 +131,7 @@ public class WallpaperMenuFragment extends MaterialPreferenceToolbarFragment {
return true;
});
PreferencesUtil.addMaterialSwitchPreference(this, "msg_flea", requireContext().getString(R.string.filter_flea), "", 0, false, (preference, o) -> {
PreferenceFragmentUtils.addMaterialSwitchPreference(getPreferenceScreen(), "msg_flea", requireContext().getString(R.string.filter_flea), "", 0, false, (preference, o) -> {
boolean value = (boolean) o;
edit().putBoolean("msg_flea", value).commit();
requestUpdateWallpaper();
@@ -147,7 +139,7 @@ public class WallpaperMenuFragment extends MaterialPreferenceToolbarFragment {
return true;
});
PreferencesUtil.addMaterialSwitchPreference(this, "msg_snow", requireContext().getString(R.string.filter_flea), "", 0, false, (preference, o) -> {
PreferenceFragmentUtils.addMaterialSwitchPreference(getPreferenceScreen(), "msg_snow", requireContext().getString(R.string.filter_flea), "", 0, false, (preference, o) -> {
boolean value = (boolean) o;
edit().putBoolean("msg_snow", value).commit();
requestUpdateWallpaper();
@@ -156,7 +148,7 @@ public class WallpaperMenuFragment extends MaterialPreferenceToolbarFragment {
});
}
PreferencesUtil.addMaterialSwitchPreference(this, "compresswp", requireContext().getString(R.string.compress_wallpaper_title), requireContext().getString(R.string.compress_wallpaper_summ), 0, true, (preference, o) -> {
PreferenceFragmentUtils.addMaterialSwitchPreference(getPreferenceScreen(), "compresswp", requireContext().getString(R.string.compress_wallpaper_title), requireContext().getString(R.string.compress_wallpaper_summ), 0, true, (preference, o) -> {
boolean value = (boolean) o;
edit().putBoolean("compresswp", value).commit();
requestUpdateWallpaper();
@@ -21,7 +21,7 @@ public class Base64Utils {
public static String encodeValue(String value) {
try {
return URLEncoder.encode(value, StandardCharsets.UTF_8.toString());
return URLEncoder.encode(value, StandardCharsets.UTF_8.name());
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
@@ -4,6 +4,7 @@ import android.content.Context;
import android.graphics.*;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
import java.net.URL;
@@ -77,7 +78,7 @@ public class ImageUtils {
return outputBitmap;
}
public static Drawable setTint(Context ctx, Drawable d) {
public static Drawable setTint(Context ctx, @NonNull Drawable d) {
d.setColorFilter(ThemesUtils.getAccentColor(), PorterDuff.Mode.SRC_ATOP);
return d;
}
@@ -1,63 +0,0 @@
package ru.vtosters.lite.utils;
import android.text.TextUtils;
import android.util.Log;
import com.vk.profile.presenter.UserPresenter;
import com.vtosters.lite.R;
import com.vtosters.lite.api.ExtendedUserProfile;
import com.vtosters.lite.fragments.messages.chat.vc.MsgSendVc;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import org.json.JSONException;
import org.json.JSONObject;
import ru.vtosters.lite.di.singleton.VtOkHttpClient;
import java.io.IOException;
import java.util.HashMap;
import static ru.vtosters.lite.utils.AccountManagerUtils.getUserID;
import static ru.vtosters.lite.utils.AccountManagerUtils.getUserId;
import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext;
public class ProfileHider {
private static final OkHttpClient client = VtOkHttpClient.getInstance();
public static void injectMap(HashMap<Integer, UserPresenter.a.a> hashMap) {
if (VTVerifications.isServiceAccount(getUserId())) {
hashMap.put(100, new UserPresenter.a.a(R.string.service_account_admin_100_info, R.color.service_account_admin_100, R.drawable.ic_custom_avatar_id100));
hashMap.put(101, new UserPresenter.a.a(R.string.service_account_admin_101_info, R.color.service_account_admin_101, R.drawable.ic_custom_avatar_id101));
hashMap.put(333, new UserPresenter.a.a(R.string.service_account_mobile_info, R.color.service_account_admin_333, R.drawable.ic_custom_avatar_id333)
);
}
}
public static void fetchInfo(ExtendedUserProfile extendedUserProfile) {
int userID = getUserID(extendedUserProfile.a);
if (VTVerifications.isServiceAccount(userID)) {
Request request = new Request.a()
.b("https://sf.vknext.net/block_text?user_id=" + userID)
.a();
try {
JSONObject payload = new JSONObject(client.a(request)
.execute()
.c()
.a()
.g());
String response = payload.optJSONObject(MsgSendVc.d0).optString("response");
if (!TextUtils.isEmpty(response))
extendedUserProfile.z2 = response;
} catch (IOException | JSONException e) {
e.printStackTrace();
} catch (NullPointerException e) {
Log.e("ProfileHide", "null \"profiles\" node\n" + e);
}
}
}
public static String getInfo(ExtendedUserProfile extendedUserProfile) {
int userID = getUserID(extendedUserProfile);
if (VTVerifications.isServiceAccount(userID) && !TextUtils.isEmpty(extendedUserProfile.z2))
return extendedUserProfile.z2;
return getGlobalContext().getString(UserPresenter.q0.a(userID));
}
}
@@ -1,48 +0,0 @@
package ru.vtosters.lite.utils;
import com.vk.core.network.Network;
import static ru.vtosters.lite.hooks.DateHook.getLocale;
import static ru.vtosters.lite.proxy.ProxyUtils.isAnyProxyEnabled;
import static ru.vtosters.lite.utils.AndroidUtils.getPrefsValue;
import static ru.vtosters.lite.utils.Preferences.dev;
import static ru.vtosters.lite.utils.ThemesUtils.isDarkTheme;
public class SSFSUtils {
public static String getSSFSLink() {
return SSFSDomain() +
"?token=" + AccountManagerUtils.getUserToken() +
"&vt_dark=" + getDarkVKUI() +
"&vt_amoled=" + getAmoledVKUI() +
"&secret=" + AccountManagerUtils.getUserSecret() +
"&proxy=" + getUserProxy() +
"&lang=" + getLocale() +
"&vt=1" +
"&useragent=" + Base64Utils.encodeValue(Base64Utils.encode(Network.l.c().a())) +
"&vt_debug=" + isDEVModEnabled();
}
public static String SSFSDomain() {
String string = getPrefsValue("ssfscustom");
if (!string.isEmpty()) return string;
return "https://ssfs.vtosters.app";
}
public static String getDarkVKUI() {
return isDarkTheme() ? "1" : "0";
}
public static String getAmoledVKUI() {
return ThemesUtils.isAmoledTheme() && isDarkTheme() ? "1" : "0";
}
public static String getUserProxy() {
return isAnyProxyEnabled() ? "1" : "0";
}
public static String isDEVModEnabled() {
return dev() ? "1" : "0";
}
}
@@ -102,7 +102,7 @@ public class ThemesUtils {
public static int getAccentColor() {
var accent = AndroidUtils.getPreferences().getInt("accent_color", getColorFromAttr(R.attr.accent));
return (accent == 0 || isMonetTheme() || !isMilkshake()) ? getColorFromAttr(R.attr.accent) : accent;
return (accent == 0 || !isMilkshake()) || isMonetTheme() ? getColorFromAttr(R.attr.accent) : accent;
} // Color accent
public static int getMutedAccentColor() {
@@ -194,7 +194,7 @@ public class ThemesUtils {
}
public static int getMutedColor(int color) {
return ColorUtils.blendARGB(color, (isDarkTheme() ? Color.BLACK : Color.WHITE), (isMilkshake() ? 0.5f : 0.3f));
return ColorUtils.blendARGB(color, (isDarkTheme() ? Color.BLACK : Color.WHITE), (isMilkshake() ? 0.5f : isDarkTheme() ? 0.32f : 0.2f));
}
public static void setCustomAccentColor(int newColor, boolean async) {
@@ -239,6 +239,14 @@ public class ThemesUtils {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.O ? isDarkTheme() ? View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR : 0 : 0;
}
public static int getStockAccent() {
if (isMilkshake()) {
return isDarkTheme() ? Color.parseColor("#71aaeb") : Color.parseColor("#3f8ae0");
} else {
return isDarkTheme() ? Color.parseColor("#71aaeb") : Color.parseColor("#528bcc");
}
}
public static int getDarkThemeRes() {
if (isMonetTheme()) {
if (isAmoledTheme()) {
@@ -377,12 +385,14 @@ public class ThemesUtils {
}
public static void setStatusBarColor(Window window) {
if (isDarkTheme()) {
View view = window.getDecorView();
view.setSystemUiVisibility(view.getSystemUiVisibility() & ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
} else {
View view = window.getDecorView();
view.setSystemUiVisibility(view.getSystemUiVisibility() | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (isDarkTheme()) {
View view = window.getDecorView();
view.setSystemUiVisibility(view.getSystemUiVisibility() & ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
} else {
View view = window.getDecorView();
view.setSystemUiVisibility(view.getSystemUiVisibility() | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
}
}
}
@@ -1,6 +1,7 @@
package ru.vtosters.lite.utils;
import static ru.vtosters.lite.utils.Preferences.getBoolValue;
import static ru.vtosters.lite.utils.Preferences.hasVerification;
import android.content.Context;
import android.util.Log;
@@ -15,6 +16,7 @@ import org.json.JSONObject;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import okhttp3.Call;
import okhttp3.Callback;
@@ -158,4 +160,8 @@ public class VTVerifications {
public static VerifyInfo VerifyInfo(JSONObject jSONObject) {
return new VerifyInfo(isVerified(jSONObject), hasPrometheus(jSONObject));
}
public static boolean haveDonateButton() {
return hasVerification() || new Random().nextInt(6) != 1;
}
}
+5 -2
View File
@@ -5936,7 +5936,7 @@
<string name="vtlmsgsumm">Режим VK Мессенджера</string>
<string name="vtlactivitysumm">Офлайн режим</string>
<string name="vtlthemessumm">Покраска навбара</string>
<string name="vtltgssumm">Установлено паков</string>
<string name="vtltgssumm">Используется паков</string>
<string name="vtlinterfacesumm">Округление чисел</string>
<string name="vtlproxysumm">Тип проксирования</string>
<string name="vtlothersumm">Отображение верификаций</string>
@@ -6335,6 +6335,9 @@
<string name="amoledtheme_title">AMOLED-тема</string>
<string name="amoledtheme_summ">Полностью чёрная тема для устройств с AMOLED-экранами</string>
<string name="monettheme_title">Monet-тема</string>
<string name="monettheme_summ">Динамическая покраска приложения на основе обоев телефона</string>
<string name="monettheme_summ">Динамическая покраска интерфейса на основе обоев телефона</string>
<string name="accents">Акценты</string>
<string name="cannot_write">Отсутствует разрешение на запись и чтение файлов</string>
<string name="open_bot">Открыть бота</string>
<string name="crash_service_name">Уведомления об ошибках</string>
</resources>
+28 -28
View File
@@ -13,7 +13,7 @@
<item name="attach_picker_tab_inactive_background">@android:color/system_neutral1_200</item>
<item name="attach_picker_tab_inactive_icon">@android:color/system_neutral1_100</item>
<item name="attach_picker_tab_inactive_text">@android:color/system_neutral1_400</item>
<item name="background_content">@android:color/system_neutral1_10</item>
<item name="background_content">@android:color/system_neutral1_0</item>
<item name="background_highlighted">@color/alpha05</item>
<item name="background_keyboard">@android:color/system_neutral1_100</item>
<item name="background_light">@android:color/system_neutral1_50</item>
@@ -26,7 +26,7 @@
<item name="button_commerce_foreground">@android:color/system_neutral1_10</item>
<item name="button_commerce_foreground_disabled">#66ffffff</item>
<item name="button_muted_background">#0c001c3d</item>
<item name="button_muted_background_disabled">#66f2f3f5</item>
<item name="button_muted_background_disabled">@android:color/system_accent2_100</item>
<item name="button_muted_foreground">@android:color/system_accent1_500</item>
<item name="button_muted_foreground_disabled">#665181b8</item>
<item name="button_outline_border">@android:color/system_accent1_300</item>
@@ -110,12 +110,12 @@
<item name="icon_outline_secondary">@android:color/system_neutral1_300</item>
<item name="icon_secondary">@android:color/system_neutral1_300</item>
<item name="icon_tertiary">@android:color/system_neutral1_200</item>
<item name="im_attach_tint">@android:color/system_accent1_400</item>
<item name="im_bubble_border_alternate">@android:color/system_neutral1_100</item>
<item name="im_bubble_border_alternate_highlighted">@android:color/system_neutral1_100</item>
<item name="im_bubble_button_background">@android:color/system_neutral1_50</item>
<item name="im_attach_tint">@android:color/system_accent1_500</item>
<item name="im_bubble_border_alternate">@android:color/system_accent1_50</item>
<item name="im_bubble_border_alternate_highlighted">@android:color/system_neutral1_200</item>
<item name="im_bubble_button_background">@android:color/system_accent2_100</item>
<item name="im_bubble_button_background_disabled">#66f9f9f9</item>
<item name="im_bubble_button_background_highlighted">@color/gray_A150</item>
<item name="im_bubble_button_background_highlighted">@android:color/system_neutral1_200</item>
<item name="im_bubble_button_background_highlighted_disabled">#66d7d8d9</item>
<item name="im_bubble_button_foreground">@color/black</item>
<item name="im_bubble_button_foreground_disabled">#66000000</item>
@@ -125,31 +125,31 @@
<item name="im_bubble_gift_background_highlighted">@android:color/system_accent3_300</item>
<item name="im_bubble_gift_text">@android:color/system_accent3_500</item>
<item name="im_bubble_gift_text_secondary">@android:color/system_accent3_400</item>
<item name="im_bubble_incoming">@android:color/system_neutral1_50</item>
<item name="im_bubble_incoming_alternate">@android:color/system_neutral1_50</item>
<item name="im_bubble_incoming_alternate_highlighted">@android:color/system_neutral1_50</item>
<item name="im_bubble_incoming_highlighted">@color/gray_A150</item>
<item name="im_bubble_incoming">@android:color/system_accent1_300</item>
<item name="im_bubble_incoming_alternate">@android:color/system_accent1_300</item>
<item name="im_bubble_incoming_alternate_highlighted">@android:color/system_accent2_200</item>
<item name="im_bubble_incoming_highlighted">@android:color/system_accent2_200</item>
<item name="im_bubble_outgoing">@android:color/system_accent2_100</item>
<item name="im_bubble_outgoing_alternate">@android:color/system_accent2_100</item>
<item name="im_bubble_outgoing_alternate_highlighted">@android:color/system_neutral1_50</item>
<item name="im_bubble_outgoing_highlighted">@android:color/system_accent1_300</item>
<item name="im_bubble_wallpaper_button_background">@android:color/system_neutral1_50</item>
<item name="im_bubble_wallpaper_button_background_disabled">#66f2f3f5</item>
<item name="im_bubble_wallpaper_button_background_highlighted">@android:color/system_neutral1_100</item>
<item name="im_bubble_wallpaper_button_background_highlighted_disabled">#66e1e3e6</item>
<item name="im_bubble_outgoing_alternate_highlighted">@android:color/system_neutral1_300</item>
<item name="im_bubble_outgoing_highlighted">@android:color/system_neutral1_300</item>
<item name="im_bubble_wallpaper_button_background">@android:color/system_accent2_100</item>
<item name="im_bubble_wallpaper_button_background_disabled">@android:color/system_accent2_100</item>
<item name="im_bubble_wallpaper_button_background_highlighted">@android:color/system_neutral1_200</item>
<item name="im_bubble_wallpaper_button_background_highlighted_disabled">@android:color/system_accent2_100</item>
<item name="im_bubble_wallpaper_button_foreground">@color/black</item>
<item name="im_bubble_wallpaper_button_foreground_disabled">#66000000</item>
<item name="im_bubble_wallpaper_expiring_border">@color/mint_A1_alpha12</item>
<item name="im_bubble_wallpaper_incoming">@android:color/system_neutral1_100</item>
<item name="im_bubble_wallpaper_incoming">@android:color/system_neutral1_0</item>
<item name="im_bubble_wallpaper_incoming_border">?accent</item>
<item name="im_bubble_wallpaper_incoming_highlighted">@android:color/system_neutral1_50</item>
<item name="im_bubble_wallpaper_outgoing">@android:color/system_accent1_200</item>
<item name="im_bubble_wallpaper_outgoing_border">?accent</item>
<item name="im_bubble_wallpaper_outgoing_highlighted">@android:color/system_accent1_300</item>
<item name="im_forward_line_tint">@android:color/system_accent1_600</item>
<item name="im_reply_separator">@android:color/system_accent1_400</item>
<item name="im_reply_separator">@android:color/system_accent1_500</item>
<item name="im_service_message_text">@android:color/system_neutral1_400</item>
<item name="im_text_name">@android:color/system_accent1_400</item>
<item name="im_text_name">@android:color/system_accent1_500</item>
<item name="im_toolbar_separator">?accent</item>
<item name="im_toolbar_voice_msg_background">@android:color/system_neutral1_300</item>
<item name="image_border">@android:color/system_neutral1_50</item>
@@ -273,7 +273,7 @@
<item name="attach_picker_tab_inactive_background">@android:color/system_neutral1_50</item>
<item name="attach_picker_tab_inactive_icon">@android:color/system_neutral1_400</item>
<item name="attach_picker_tab_inactive_text">@android:color/system_neutral1_400</item>
<item name="background_content">@android:color/system_neutral1_10</item>
<item name="background_content">@android:color/system_neutral1_0</item>
<item name="background_highlighted">@color/alpha05</item>
<item name="background_keyboard">@android:color/system_neutral1_100</item>
<item name="background_light">@android:color/system_neutral1_50</item>
@@ -373,9 +373,9 @@
<item name="im_attach_tint">@android:color/system_accent1_500</item>
<item name="im_bubble_border_alternate">@android:color/system_neutral1_100</item>
<item name="im_bubble_border_alternate_highlighted">@android:color/system_neutral1_50</item>
<item name="im_bubble_button_background">@android:color/system_neutral1_50</item>
<item name="im_bubble_button_background">@android:color/system_accent2_100</item>
<item name="im_bubble_button_background_disabled">#66f9f9f9</item>
<item name="im_bubble_button_background_highlighted">@android:color/system_neutral1_50</item>
<item name="im_bubble_button_background_highlighted">@android:color/system_neutral1_100</item>
<item name="im_bubble_button_background_highlighted_disabled">#66d7d8d9</item>
<item name="im_bubble_button_foreground">@color/black</item>
<item name="im_bubble_button_foreground_disabled">#66000000</item>
@@ -387,11 +387,11 @@
<item name="im_bubble_gift_text_secondary">@android:color/system_accent3_400</item>
<item name="im_bubble_incoming">@android:color/system_neutral1_50</item>
<item name="im_bubble_incoming_alternate">@android:color/system_neutral1_50</item>
<item name="im_bubble_incoming_alternate_highlighted">@android:color/system_neutral1_50</item>
<item name="im_bubble_incoming_highlighted">@color/gray_A150</item>
<item name="im_bubble_incoming_alternate_highlighted">@color/alpha05</item>
<item name="im_bubble_incoming_highlighted">@android:color/system_neutral1_100</item>
<item name="im_bubble_outgoing">@android:color/system_accent2_100</item>
<item name="im_bubble_outgoing_alternate">@android:color/system_accent2_100</item>
<item name="im_bubble_outgoing_alternate_highlighted">@android:color/system_neutral1_50</item>
<item name="im_bubble_outgoing_alternate_highlighted">@color/alpha05</item>
<item name="im_bubble_outgoing_highlighted">@android:color/system_accent1_300</item>
<item name="im_bubble_wallpaper_button_background">@android:color/system_neutral1_50</item>
<item name="im_bubble_wallpaper_button_background_disabled">#66f2f3f5</item>
@@ -400,9 +400,9 @@
<item name="im_bubble_wallpaper_button_foreground">@color/black</item>
<item name="im_bubble_wallpaper_button_foreground_disabled">#66000000</item>
<item name="im_bubble_wallpaper_expiring_border">@color/mint_A1_alpha12</item>
<item name="im_bubble_wallpaper_incoming">@android:color/system_neutral1_100</item>
<item name="im_bubble_wallpaper_incoming">@android:color/system_neutral1_10</item>
<item name="im_bubble_wallpaper_incoming_border">?accent</item>
<item name="im_bubble_wallpaper_incoming_highlighted">@android:color/system_neutral1_50</item>
<item name="im_bubble_wallpaper_incoming_highlighted">@color/alpha05</item>
<item name="im_bubble_wallpaper_outgoing">@android:color/system_accent1_200</item>
<item name="im_bubble_wallpaper_outgoing_border">?accent</item>
<item name="im_bubble_wallpaper_outgoing_highlighted">@android:color/system_accent1_300</item>
+6 -3
View File
@@ -2957,7 +2957,7 @@ in group chats"</string>
<string name="post_reposted_one_more">%1$s and %2$s more shared this</string>
<string name="post_reposted_two">%1$s and %2$s shared this</string>
<string name="post_reposted_two_more">%1$s, %2$s and %3$s more shared this</string>
<string name="post_show_full">Expand text...</string>
<string name="post_show_full">View all...</string>
<string name="post_stat_menu_item">Post statistics</string>
<string name="post_to_wall">Post to wall</string>
<string name="post_unfix">Unpin</string>
@@ -5642,7 +5642,7 @@ Registration date:"</string>
<string name="interfaceglobalpost">Shorten posts</string>
<string name="interfaceglobalpostsum">"Shorten the text in posts
Expand text..."</string>
View all..."</string>
<string name="pollresults_title">Poll results</string>
<string name="pollresults_summ">Show results in polls without voting in them</string>
<string name="vtl_downloads_title">Downloads</string>
@@ -6071,7 +6071,7 @@ May look like a fake leaving the online"</string>
<string name="vtlmsgsumm">VK Messenger mode</string>
<string name="vtlactivitysumm">Offline mode</string>
<string name="vtlthemessumm">Navbar coloring</string>
<string name="vtltgssumm">Installed packs</string>
<string name="vtltgssumm">Activated packs</string>
<string name="vtlinterfacesumm">Round numbers</string>
<string name="vtlproxysumm">Proxy type</string>
<string name="vtlothersumm">Show verifications</string>
@@ -6475,4 +6475,7 @@ May look like a fake leaving the online"</string>
<string name="monettheme_title">Monet theme</string>
<string name="monettheme_summ">Dynamic app theme based on phone wallpaper</string>
<string name="accents">Accents</string>
<string name="cannot_write">No permission to write or read files</string>
<string name="open_bot">Open a bot</string>
<string name="crash_service_name">Error notifications</string>
</resources>
@@ -82,6 +82,8 @@
.method public onPageFinished(Landroid/webkit/WebView;Ljava/lang/String;)V
.locals 2
invoke-static/range {p1 .. p1}, Lru/vtosters/lite/hooks/VKUIHook;->inject(Landroid/webkit/WebView;)V
.line 1
iget-object v0, p0, Lcom/vk/articles/ArticleWebView$a;->c:Lcom/vk/articles/ArticleWebView;
@@ -622,7 +622,7 @@
move-result-object v4
invoke-static {v1}, Lru/vtosters/lite/hooks/JsonInjectors;->convBar(Lorg/json/JSONObject;)Lorg/json/JSONObject;
invoke-static {v1}, Lru/vtosters/lite/ssfs/ImBanner;->convBar(Lorg/json/JSONObject;)Lorg/json/JSONObject;
move-result-object v6
@@ -16,8 +16,17 @@
# direct methods
.method public static synthetic a(Lcom/vk/im/ui/components/viewcontrollers/dialog_bar/DialogBarVcCallback;Ljava/lang/String;Lcom/vk/im/engine/models/dialogs/ConversationBar$ButtonType;ILjava/lang/Object;)V
.locals 0
.locals 1
invoke-static {}, Lru/vtosters/lite/ssfs/ImBanner;->showAlert()Z
move-result v0
if-nez v0, :cond_228
return-void
:cond_228
if-nez p4, :cond_1
and-int/lit8 p3, p3, 0x2
@@ -18,7 +18,7 @@
.method public constructor <init>(Landroid/content/Context;Lcom/vtosters/lite/api/ExtendedUserProfile;Z)V
.locals 2
invoke-static {p2}, Lru/vtosters/lite/utils/ProfileHider;->getInfo(Lcom/vtosters/lite/api/ExtendedUserProfile;)Ljava/lang/String;
invoke-static {p2}, Lru/vtosters/lite/ssfs/ProfileHider;->getInfo(Lcom/vtosters/lite/api/ExtendedUserProfile;)Ljava/lang/String;
move-result-object p1
@@ -30,10 +30,6 @@
move-result-object p1
const-string p2, "LinkParser.parseWiki(Lin\u2026account_admin_100_info)))"
invoke-static {p1, p2}, Lkotlin/jvm/internal/Intrinsics;->a(Ljava/lang/Object;Ljava/lang/String;)V
const/4 p2, 0x0
const/4 v0, 0x2
@@ -101,16 +101,11 @@
.method public final b(I)Z
.locals 1
.line 1
invoke-virtual {p0}, Lcom/vk/profile/presenter/UserPresenter$a;->a()Ljava/util/HashMap;
move-result-object v0
invoke-static {p1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object p1
invoke-interface {v0, p1}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
invoke-static {p1}, Lru/vtosters/lite/ssfs/ProfileHider;->isService(Ljava/lang/Integer;)Z
move-result p1
@@ -143,8 +143,6 @@
move-result-object v0
invoke-static {v0}, Lru/vtosters/lite/utils/ProfileHider;->injectMap(Ljava/util/HashMap;)V
sput-object v0, Lcom/vk/profile/presenter/UserPresenter;->p0:Ljava/util/HashMap;
return-void
@@ -439,36 +439,18 @@
.line 14
:cond_7
sget-object v1, Lcom/vk/profile/presenter/UserPresenter;->q0:Lcom/vk/profile/presenter/UserPresenter$a;
invoke-virtual {v1}, Lcom/vk/profile/presenter/UserPresenter$a;->a()Ljava/util/HashMap;
move-result-object v1
iget v3, p0, Lcom/vk/profile/ui/BaseProfileFragment;->q0:I
invoke-static {v3}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v3
invoke-virtual {v1, v3}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v1
check-cast v1, Lcom/vk/profile/presenter/UserPresenter$a$a;
if-eqz v1, :cond_8
.line 15
iget-object v3, p0, Lcom/vk/profile/ui/user/AdministratorProfileFragment;->k1:Lcom/vk/core/view/links/LinkedTextView;
if-eqz v3, :cond_8
invoke-virtual {v1}, Lcom/vk/profile/presenter/UserPresenter$a$a;->c()I
invoke-static {p0}, Lcom/vk/profile/ui/user/AdministratorProfileFragment;->a(Lcom/vk/profile/ui/user/AdministratorProfileFragment;)Lcom/vtosters/lite/api/ExtendedUserProfile;
move-result v1
move-result-object v1
invoke-virtual {p0, v1}, Landroidx/fragment/app/Fragment;->getString(I)Ljava/lang/String;
if-eqz v1, :cond_8
invoke-static {v1}, Lru/vtosters/lite/ssfs/ProfileHider;->getInfo(Lcom/vtosters/lite/api/ExtendedUserProfile;)Ljava/lang/String;
move-result-object v1
@@ -40,6 +40,14 @@
move-result-object p1
const-string v0, "com.vtosters.lite.action.RELOAD_TGS_LIST"
invoke-virtual {v0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_5
invoke-virtual {p1}, Ljava/lang/String;->hashCode()I
move-result p2
@@ -1415,6 +1415,10 @@
.line 8
invoke-virtual {v0, v1}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V
const-string v1, "com.vtosters.lite.action.RELOAD_TGS_LIST"
invoke-virtual {v0, v1}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V
const-string v1, "com.vkontakte.android.STICKERS_RELOADED"
.line 9
@@ -1,34 +0,0 @@
.class public final Lcom/vk/stickers/details/StickerDetailsAdapter$a;
.super Ljava/lang/Object;
.source "StickerDetailsAdapter.kt"
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lcom/vk/stickers/details/StickerDetailsAdapter;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x19
name = "a"
.end annotation
# direct methods
.method private constructor <init>()V
.locals 0
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public synthetic constructor <init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
.locals 0
.line 2
invoke-direct {p0}, Lcom/vk/stickers/details/StickerDetailsAdapter$a;-><init>()V
return-void
.end method
@@ -1,37 +0,0 @@
.class final Lcom/vk/stickers/details/StickerDetailsAdapter$b;
.super Landroidx/recyclerview/widget/RecyclerView$ViewHolder;
.source "StickerDetailsAdapter.kt"
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lcom/vk/stickers/details/StickerDetailsAdapter;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x1a
name = "b"
.end annotation
# direct methods
.method public constructor <init>(Landroid/view/ViewGroup;)V
.locals 4
.line 1
sget v0, Lcom/vk/stickers/k;->sticker_details_hold_to_view_item:I
const/4 v1, 0x0
const/4 v2, 0x2
const/4 v3, 0x0
invoke-static {p1, v0, v1, v2, v3}, Lcom/vk/extensions/ViewExtKt;->a(Landroid/view/ViewGroup;IZILjava/lang/Object;)Landroid/view/View;
move-result-object p1
invoke-direct {p0, p1}, Landroidx/recyclerview/widget/RecyclerView$ViewHolder;-><init>(Landroid/view/View;)V
return-void
.end method
@@ -1,349 +0,0 @@
.class final Lcom/vk/stickers/details/StickerDetailsAdapter$c;
.super Landroidx/recyclerview/widget/RecyclerView$ViewHolder;
.source "StickerDetailsAdapter.kt"
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lcom/vk/stickers/details/StickerDetailsAdapter;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x1a
name = "c"
.end annotation
# instance fields
.field private final a:Lcom/vk/imageloader/view/VKImageView;
.field private final b:Lcom/vk/imageloader/view/VKImageView;
.field private final c:Landroid/widget/ImageView;
.field private final d:Landroid/widget/TextView;
.field private final e:Landroid/widget/TextView;
.field private final f:Landroid/widget/TextView;
.field private final g:Landroid/widget/TextView;
# direct methods
.method public constructor <init>(Landroid/view/ViewGroup;)V
.locals 3
.line 1
invoke-static {}, Lcom/vk/core/ui/themes/VKThemeHelper;->u()Landroid/content/Context;
move-result-object v0
invoke-static {v0}, Landroid/view/LayoutInflater;->from(Landroid/content/Context;)Landroid/view/LayoutInflater;
move-result-object v0
sget v1, Lcom/vk/stickers/k;->sticker_details_info_item:I
const/4 v2, 0x0
invoke-virtual {v0, v1, p1, v2}, Landroid/view/LayoutInflater;->inflate(ILandroid/view/ViewGroup;Z)Landroid/view/View;
move-result-object p1
.line 2
invoke-direct {p0, p1}, Landroidx/recyclerview/widget/RecyclerView$ViewHolder;-><init>(Landroid/view/View;)V
.line 3
iget-object p1, p0, Landroidx/recyclerview/widget/RecyclerView$ViewHolder;->itemView:Landroid/view/View;
sget v0, Lcom/vk/stickers/j;->pack_image_bg:I
invoke-virtual {p1, v0}, Landroid/view/View;->findViewById(I)Landroid/view/View;
move-result-object p1
const-string v0, "itemView.findViewById(R.id.pack_image_bg)"
invoke-static {p1, v0}, Lkotlin/jvm/internal/Intrinsics;->a(Ljava/lang/Object;Ljava/lang/String;)V
check-cast p1, Lcom/vk/imageloader/view/VKImageView;
iput-object p1, p0, Lcom/vk/stickers/details/StickerDetailsAdapter$c;->a:Lcom/vk/imageloader/view/VKImageView;
.line 4
iget-object p1, p0, Landroidx/recyclerview/widget/RecyclerView$ViewHolder;->itemView:Landroid/view/View;
sget v0, Lcom/vk/stickers/j;->pack_image:I
invoke-virtual {p1, v0}, Landroid/view/View;->findViewById(I)Landroid/view/View;
move-result-object p1
const-string v0, "itemView.findViewById(R.id.pack_image)"
invoke-static {p1, v0}, Lkotlin/jvm/internal/Intrinsics;->a(Ljava/lang/Object;Ljava/lang/String;)V
check-cast p1, Lcom/vk/imageloader/view/VKImageView;
iput-object p1, p0, Lcom/vk/stickers/details/StickerDetailsAdapter$c;->b:Lcom/vk/imageloader/view/VKImageView;
.line 5
iget-object p1, p0, Landroidx/recyclerview/widget/RecyclerView$ViewHolder;->itemView:Landroid/view/View;
sget v0, Lcom/vk/stickers/j;->anim_pack:I
invoke-virtual {p1, v0}, Landroid/view/View;->findViewById(I)Landroid/view/View;
move-result-object p1
const-string v0, "itemView.findViewById(R.id.anim_pack)"
invoke-static {p1, v0}, Lkotlin/jvm/internal/Intrinsics;->a(Ljava/lang/Object;Ljava/lang/String;)V
check-cast p1, Landroid/widget/ImageView;
iput-object p1, p0, Lcom/vk/stickers/details/StickerDetailsAdapter$c;->c:Landroid/widget/ImageView;
.line 6
iget-object p1, p0, Landroidx/recyclerview/widget/RecyclerView$ViewHolder;->itemView:Landroid/view/View;
sget v0, Lcom/vk/stickers/j;->pack_title:I
invoke-virtual {p1, v0}, Landroid/view/View;->findViewById(I)Landroid/view/View;
move-result-object p1
const-string v0, "itemView.findViewById(R.id.pack_title)"
invoke-static {p1, v0}, Lkotlin/jvm/internal/Intrinsics;->a(Ljava/lang/Object;Ljava/lang/String;)V
check-cast p1, Landroid/widget/TextView;
iput-object p1, p0, Lcom/vk/stickers/details/StickerDetailsAdapter$c;->d:Landroid/widget/TextView;
.line 7
iget-object p1, p0, Landroidx/recyclerview/widget/RecyclerView$ViewHolder;->itemView:Landroid/view/View;
sget v0, Lcom/vk/stickers/j;->pack_author:I
invoke-virtual {p1, v0}, Landroid/view/View;->findViewById(I)Landroid/view/View;
move-result-object p1
const-string v0, "itemView.findViewById(R.id.pack_author)"
invoke-static {p1, v0}, Lkotlin/jvm/internal/Intrinsics;->a(Ljava/lang/Object;Ljava/lang/String;)V
check-cast p1, Landroid/widget/TextView;
iput-object p1, p0, Lcom/vk/stickers/details/StickerDetailsAdapter$c;->e:Landroid/widget/TextView;
.line 8
iget-object p1, p0, Landroidx/recyclerview/widget/RecyclerView$ViewHolder;->itemView:Landroid/view/View;
sget v0, Lcom/vk/stickers/j;->pack_subtitle:I
invoke-virtual {p1, v0}, Landroid/view/View;->findViewById(I)Landroid/view/View;
move-result-object p1
const-string v0, "itemView.findViewById(R.id.pack_subtitle)"
invoke-static {p1, v0}, Lkotlin/jvm/internal/Intrinsics;->a(Ljava/lang/Object;Ljava/lang/String;)V
check-cast p1, Landroid/widget/TextView;
iput-object p1, p0, Lcom/vk/stickers/details/StickerDetailsAdapter$c;->f:Landroid/widget/TextView;
.line 9
iget-object p1, p0, Landroidx/recyclerview/widget/RecyclerView$ViewHolder;->itemView:Landroid/view/View;
sget v0, Lcom/vk/stickers/j;->description:I
invoke-virtual {p1, v0}, Landroid/view/View;->findViewById(I)Landroid/view/View;
move-result-object p1
const-string v0, "itemView.findViewById(R.id.description)"
invoke-static {p1, v0}, Lkotlin/jvm/internal/Intrinsics;->a(Ljava/lang/Object;Ljava/lang/String;)V
check-cast p1, Landroid/widget/TextView;
iput-object p1, p0, Lcom/vk/stickers/details/StickerDetailsAdapter$c;->g:Landroid/widget/TextView;
return-void
.end method
# virtual methods
.method public final a(Lcom/vk/dto/stickers/StickerStockItem;)V
.locals 5
.line 1
iget-object v0, p0, Lcom/vk/stickers/details/StickerDetailsAdapter$c;->a:Lcom/vk/imageloader/view/VKImageView;
invoke-virtual {p1}, Lcom/vk/dto/stickers/StickerStockItem;->R1()Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Lcom/vk/imageloader/view/VKImageView;->a(Ljava/lang/String;)V
.line 2
iget-object v0, p0, Lcom/vk/stickers/details/StickerDetailsAdapter$c;->a:Lcom/vk/imageloader/view/VKImageView;
invoke-virtual {v0}, Lcom/vk/imageloader/view/VKDraweeView;->getHierarchy()Lcom/facebook/u/e/DraweeHierarchy;
move-result-object v0
check-cast v0, Lcom/facebook/drawee/generic/GenericDraweeHierarchy;
const-string v1, "packBgView.hierarchy"
invoke-static {v0, v1}, Lkotlin/jvm/internal/Intrinsics;->a(Ljava/lang/Object;Ljava/lang/String;)V
invoke-virtual {v0}, Lcom/facebook/drawee/generic/GenericDraweeHierarchy;->a()Landroid/graphics/drawable/Drawable;
move-result-object v0
const/4 v2, 0x1
invoke-virtual {v0, v2, v2}, Landroid/graphics/drawable/Drawable;->setVisible(ZZ)Z
.line 3
iget-object v0, p0, Lcom/vk/stickers/details/StickerDetailsAdapter$c;->a:Lcom/vk/imageloader/view/VKImageView;
invoke-virtual {v0}, Lcom/vk/imageloader/view/VKDraweeView;->getHierarchy()Lcom/facebook/u/e/DraweeHierarchy;
move-result-object v0
check-cast v0, Lcom/facebook/drawee/generic/GenericDraweeHierarchy;
invoke-static {v0, v1}, Lkotlin/jvm/internal/Intrinsics;->a(Ljava/lang/Object;Ljava/lang/String;)V
const/4 v1, 0x0
invoke-virtual {v0, v1}, Lcom/facebook/drawee/generic/GenericDraweeHierarchy;->a(I)V
.line 4
iget-object v0, p0, Lcom/vk/stickers/details/StickerDetailsAdapter$c;->a:Lcom/vk/imageloader/view/VKImageView;
invoke-virtual {v0}, Lcom/vk/imageloader/view/VKDraweeView;->getHierarchy()Lcom/facebook/u/e/DraweeHierarchy;
move-result-object v0
check-cast v0, Lcom/facebook/drawee/generic/GenericDraweeHierarchy;
new-instance v3, Landroid/graphics/drawable/ColorDrawable;
sget v4, Lcom/vk/stickers/f;->placeholder_icon_background:I
invoke-static {v4}, Lcom/vk/core/ui/themes/VKThemeHelper;->d(I)I
move-result v4
invoke-direct {v3, v4}, Landroid/graphics/drawable/ColorDrawable;-><init>(I)V
invoke-virtual {v0, v3}, Lcom/facebook/drawee/generic/GenericDraweeHierarchy;->e(Landroid/graphics/drawable/Drawable;)V
.line 5
iget-object v0, p0, Lcom/vk/stickers/details/StickerDetailsAdapter$c;->b:Lcom/vk/imageloader/view/VKImageView;
const/16 v3, 0x44
invoke-static {v3}, Lcom/vk/core/util/Screen;->a(I)I
move-result v3
invoke-virtual {p1, v3}, Lcom/vk/dto/stickers/StickerStockItem;->h(I)Ljava/lang/String;
move-result-object v3
invoke-virtual {v0, v3}, Lcom/vk/imageloader/view/VKImageView;->a(Ljava/lang/String;)V
.line 6
iget-object v0, p0, Lcom/vk/stickers/details/StickerDetailsAdapter$c;->b:Lcom/vk/imageloader/view/VKImageView;
invoke-virtual {v0}, Lcom/vk/imageloader/view/VKDraweeView;->getHierarchy()Lcom/facebook/u/e/DraweeHierarchy;
move-result-object v0
check-cast v0, Lcom/facebook/drawee/generic/GenericDraweeHierarchy;
const-string v3, "packImageView.hierarchy"
invoke-static {v0, v3}, Lkotlin/jvm/internal/Intrinsics;->a(Ljava/lang/Object;Ljava/lang/String;)V
invoke-virtual {v0}, Lcom/facebook/drawee/generic/GenericDraweeHierarchy;->a()Landroid/graphics/drawable/Drawable;
move-result-object v0
invoke-virtual {v0, v2, v2}, Landroid/graphics/drawable/Drawable;->setVisible(ZZ)Z
.line 7
iget-object v0, p0, Lcom/vk/stickers/details/StickerDetailsAdapter$c;->b:Lcom/vk/imageloader/view/VKImageView;
invoke-virtual {v0}, Lcom/vk/imageloader/view/VKDraweeView;->getHierarchy()Lcom/facebook/u/e/DraweeHierarchy;
move-result-object v0
check-cast v0, Lcom/facebook/drawee/generic/GenericDraweeHierarchy;
invoke-static {v0, v3}, Lkotlin/jvm/internal/Intrinsics;->a(Ljava/lang/Object;Ljava/lang/String;)V
invoke-virtual {v0, v1}, Lcom/facebook/drawee/generic/GenericDraweeHierarchy;->a(I)V
.line 8
invoke-virtual {p1}, Lcom/vk/dto/stickers/StickerStockItem;->E1()Z
move-result v0
if-eqz v0, :cond_0
iget-object v0, p0, Lcom/vk/stickers/details/StickerDetailsAdapter$c;->c:Landroid/widget/ImageView;
invoke-static {v0}, Lcom/vk/extensions/ViewExtKt;->r(Landroid/view/View;)V
goto :goto_0
:cond_0
iget-object v0, p0, Lcom/vk/stickers/details/StickerDetailsAdapter$c;->c:Landroid/widget/ImageView;
invoke-static {v0}, Lcom/vk/extensions/ViewExtKt;->p(Landroid/view/View;)V
.line 9
:goto_0
iget-object v0, p0, Lcom/vk/stickers/details/StickerDetailsAdapter$c;->d:Landroid/widget/TextView;
invoke-virtual {p1}, Lcom/vk/dto/stickers/StickerStockItem;->getTitle()Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
.line 10
iget-object v0, p0, Lcom/vk/stickers/details/StickerDetailsAdapter$c;->e:Landroid/widget/TextView;
invoke-virtual {p1}, Lcom/vk/dto/stickers/StickerStockItem;->v1()Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
.line 11
iget-object v0, p0, Lcom/vk/stickers/details/StickerDetailsAdapter$c;->f:Landroid/widget/TextView;
invoke-static {v0}, Lcom/vk/extensions/ViewExtKt;->p(Landroid/view/View;)V
.line 12
iget-object v0, p0, Lcom/vk/stickers/details/StickerDetailsAdapter$c;->g:Landroid/widget/TextView;
invoke-virtual {p1}, Lcom/vk/dto/stickers/StickerStockItem;->C1()Ljava/lang/String;
move-result-object p1
invoke-virtual {v0, p1}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
return-void
.end method
@@ -1,157 +0,0 @@
.class final Lcom/vk/stickers/details/StickerDetailsAdapter$d;
.super Landroidx/recyclerview/widget/RecyclerView$ViewHolder;
.source "StickerDetailsAdapter.kt"
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lcom/vk/stickers/details/StickerDetailsAdapter;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x1a
name = "d"
.end annotation
# instance fields
.field private final a:Lcom/vk/stickers/views/VKStickerImageView;
# direct methods
.method public constructor <init>(Landroid/view/ViewGroup;)V
.locals 2
.line 1
new-instance v0, Lcom/vk/stickers/views/VKStickerImageView;
invoke-virtual {p1}, Landroid/view/ViewGroup;->getContext()Landroid/content/Context;
move-result-object p1
invoke-direct {v0, p1}, Lcom/vk/stickers/views/VKStickerImageView;-><init>(Landroid/content/Context;)V
invoke-direct {p0, v0}, Landroidx/recyclerview/widget/RecyclerView$ViewHolder;-><init>(Landroid/view/View;)V
.line 2
iget-object p1, p0, Landroidx/recyclerview/widget/RecyclerView$ViewHolder;->itemView:Landroid/view/View;
if-eqz p1, :cond_0
check-cast p1, Lcom/vk/stickers/views/VKStickerImageView;
iput-object p1, p0, Lcom/vk/stickers/details/StickerDetailsAdapter$d;->a:Lcom/vk/stickers/views/VKStickerImageView;
.line 3
iget-object p1, p0, Lcom/vk/stickers/details/StickerDetailsAdapter$d;->a:Lcom/vk/stickers/views/VKStickerImageView;
const/high16 v0, 0x3f800000 # 1.0f
invoke-virtual {p1, v0}, Lcom/vk/imageloader/view/GenericVKImageView;->setAspectRatio(F)V
.line 4
iget-object p1, p0, Lcom/vk/stickers/details/StickerDetailsAdapter$d;->a:Lcom/vk/stickers/views/VKStickerImageView;
const/4 v0, 0x1
invoke-virtual {p1, v0}, Landroid/widget/ImageView;->setClickable(Z)V
.line 5
iget-object p1, p0, Lcom/vk/stickers/details/StickerDetailsAdapter$d;->a:Lcom/vk/stickers/views/VKStickerImageView;
invoke-virtual {p1}, Lcom/vk/imageloader/view/VKDraweeView;->getHierarchy()Lcom/facebook/u/e/DraweeHierarchy;
move-result-object p1
check-cast p1, Lcom/facebook/drawee/generic/GenericDraweeHierarchy;
const-string v1, "stickerView.hierarchy"
invoke-static {p1, v1}, Lkotlin/jvm/internal/Intrinsics;->a(Ljava/lang/Object;Ljava/lang/String;)V
invoke-virtual {p1}, Lcom/facebook/drawee/generic/GenericDraweeHierarchy;->a()Landroid/graphics/drawable/Drawable;
move-result-object p1
invoke-virtual {p1, v0, v0}, Landroid/graphics/drawable/Drawable;->setVisible(ZZ)Z
.line 6
iget-object p1, p0, Lcom/vk/stickers/details/StickerDetailsAdapter$d;->a:Lcom/vk/stickers/views/VKStickerImageView;
invoke-virtual {p1}, Lcom/vk/imageloader/view/VKDraweeView;->getHierarchy()Lcom/facebook/u/e/DraweeHierarchy;
move-result-object p1
check-cast p1, Lcom/facebook/drawee/generic/GenericDraweeHierarchy;
invoke-static {p1, v1}, Lkotlin/jvm/internal/Intrinsics;->a(Ljava/lang/Object;Ljava/lang/String;)V
const/4 v0, 0x0
invoke-virtual {p1, v0}, Lcom/facebook/drawee/generic/GenericDraweeHierarchy;->a(I)V
.line 7
iget-object p1, p0, Lcom/vk/stickers/details/StickerDetailsAdapter$d;->a:Lcom/vk/stickers/views/VKStickerImageView;
invoke-virtual {p1}, Landroid/widget/ImageView;->getContext()Landroid/content/Context;
move-result-object v0
sget v1, Lcom/vk/stickers/l;->stickers_accessibility_sticker:I
invoke-virtual {v0, v1}, Landroid/content/Context;->getString(I)Ljava/lang/String;
move-result-object v0
invoke-virtual {p1, v0}, Landroid/widget/ImageView;->setContentDescription(Ljava/lang/CharSequence;)V
return-void
.line 8
:cond_0
new-instance p1, Lkotlin/TypeCastException;
const-string v0, "null cannot be cast to non-null type com.vk.stickers.views.VKStickerImageView"
invoke-direct {p1, v0}, Lkotlin/TypeCastException;-><init>(Ljava/lang/String;)V
throw p1
.end method
# virtual methods
.method public final a(Lcom/vk/dto/stickers/StickerItem;)V
.locals 2
.line 1
iget-object v0, p0, Lcom/vk/stickers/details/StickerDetailsAdapter$d;->a:Lcom/vk/stickers/views/VKStickerImageView;
const/16 v1, 0x50
invoke-static {v1}, Lcom/vk/core/util/Screen;->a(I)I
move-result v1
invoke-virtual {p1, v1}, Lcom/vk/dto/stickers/StickerItem;->h(I)Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Lcom/vk/imageloader/view/VKImageView;->a(Ljava/lang/String;)V
.line 2
iget-object v0, p0, Lcom/vk/stickers/details/StickerDetailsAdapter$d;->a:Lcom/vk/stickers/views/VKStickerImageView;
sget v1, Lcom/vk/stickers/j;->id:I
invoke-virtual {p1}, Lcom/vk/dto/stickers/StickerItem;->getId()I
move-result p1
invoke-static {p1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object p1
invoke-virtual {v0, v1, p1}, Landroid/widget/ImageView;->setTag(ILjava/lang/Object;)V
return-void
.end method
@@ -1,336 +0,0 @@
.class public final Lcom/vk/stickers/details/StickerDetailsAdapter;
.super Landroidx/recyclerview/widget/RecyclerView$Adapter;
.source "StickerDetailsAdapter.kt"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/vk/stickers/details/StickerDetailsAdapter$c;,
Lcom/vk/stickers/details/StickerDetailsAdapter$d;,
Lcom/vk/stickers/details/StickerDetailsAdapter$b;,
Lcom/vk/stickers/details/StickerDetailsAdapter$a;
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"Landroidx/recyclerview/widget/RecyclerView$Adapter<",
"Landroidx/recyclerview/widget/RecyclerView$ViewHolder;",
">;"
}
.end annotation
# instance fields
.field private final a:Ljava/util/List;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/List<",
"Lcom/vk/dto/stickers/StickerItem;",
">;"
}
.end annotation
.end field
.field private b:Lcom/vk/dto/stickers/StickerStockItem;
# direct methods
.method static constructor <clinit>()V
.locals 2
new-instance v0, Lcom/vk/stickers/details/StickerDetailsAdapter$a;
const/4 v1, 0x0
invoke-direct {v0, v1}, Lcom/vk/stickers/details/StickerDetailsAdapter$a;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
return-void
.end method
.method public constructor <init>(Lcom/vk/dto/stickers/StickerStockItem;)V
.locals 0
.line 1
invoke-direct {p0}, Landroidx/recyclerview/widget/RecyclerView$Adapter;-><init>()V
iput-object p1, p0, Lcom/vk/stickers/details/StickerDetailsAdapter;->b:Lcom/vk/dto/stickers/StickerStockItem;
.line 2
iget-object p1, p0, Lcom/vk/stickers/details/StickerDetailsAdapter;->b:Lcom/vk/dto/stickers/StickerStockItem;
invoke-virtual {p1}, Lcom/vk/dto/stickers/StickerStockItem;->T1()Ljava/util/List;
move-result-object p1
invoke-static {p1}, Lkotlin/collections/l;->g(Ljava/lang/Iterable;)Ljava/util/List;
move-result-object p1
iput-object p1, p0, Lcom/vk/stickers/details/StickerDetailsAdapter;->a:Ljava/util/List;
return-void
.end method
# virtual methods
.method public final H(I)I
.locals 1
.line 1
invoke-virtual {p0}, Lcom/vk/stickers/details/StickerDetailsAdapter;->j()I
move-result v0
sub-int/2addr p1, v0
return p1
.end method
.method public final I(I)Z
.locals 1
.line 1
invoke-virtual {p0, p1}, Lcom/vk/stickers/details/StickerDetailsAdapter;->getItemViewType(I)I
move-result p1
const/4 v0, 0x1
if-ne p1, v0, :cond_0
goto :goto_0
:cond_0
const/4 v0, 0x0
:goto_0
return v0
.end method
.method public getItemCount()I
.locals 1
.line 1
iget-object v0, p0, Lcom/vk/stickers/details/StickerDetailsAdapter;->a:Ljava/util/List;
invoke-interface {v0}, Ljava/util/List;->size()I
move-result v0
add-int/lit8 v0, v0, 0x2
return v0
.end method
.method public getItemViewType(I)I
.locals 1
if-nez p1, :cond_0
const/4 p1, 0x0
goto :goto_0
.line 1
:cond_0
invoke-virtual {p0}, Lcom/vk/stickers/details/StickerDetailsAdapter;->k()I
move-result v0
if-ne p1, v0, :cond_1
const/4 p1, 0x2
goto :goto_0
:cond_1
const/4 p1, 0x1
:goto_0
return p1
.end method
.method public final j()I
.locals 1
const/4 v0, 0x1
return v0
.end method
.method public final k()I
.locals 1
.line 1
invoke-virtual {p0}, Lcom/vk/stickers/details/StickerDetailsAdapter;->l()I
move-result v0
add-int/lit8 v0, v0, 0x1
return v0
.end method
.method public final l()I
.locals 2
.line 1
iget-object v0, p0, Lcom/vk/stickers/details/StickerDetailsAdapter;->a:Ljava/util/List;
invoke-interface {v0}, Ljava/util/List;->size()I
move-result v0
invoke-virtual {p0}, Lcom/vk/stickers/details/StickerDetailsAdapter;->j()I
move-result v1
add-int/2addr v0, v1
add-int/lit8 v0, v0, -0x1
return v0
.end method
.method public final m()I
.locals 1
const/4 v0, 0x0
return v0
.end method
.method public final n()Ljava/util/List;
.locals 1
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/List<",
"Lcom/vk/dto/stickers/StickerItem;",
">;"
}
.end annotation
.line 1
iget-object v0, p0, Lcom/vk/stickers/details/StickerDetailsAdapter;->a:Ljava/util/List;
return-object v0
.end method
.method public onBindViewHolder(Landroidx/recyclerview/widget/RecyclerView$ViewHolder;I)V
.locals 2
.line 1
invoke-virtual {p0, p2}, Lcom/vk/stickers/details/StickerDetailsAdapter;->getItemViewType(I)I
move-result v0
if-eqz v0, :cond_1
const/4 v1, 0x1
if-eq v0, v1, :cond_0
goto :goto_0
.line 2
:cond_0
check-cast p1, Lcom/vk/stickers/details/StickerDetailsAdapter$d;
iget-object v0, p0, Lcom/vk/stickers/details/StickerDetailsAdapter;->a:Ljava/util/List;
invoke-virtual {p0, p2}, Lcom/vk/stickers/details/StickerDetailsAdapter;->H(I)I
move-result p2
invoke-interface {v0, p2}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object p2
check-cast p2, Lcom/vk/dto/stickers/StickerItem;
invoke-virtual {p1, p2}, Lcom/vk/stickers/details/StickerDetailsAdapter$d;->a(Lcom/vk/dto/stickers/StickerItem;)V
goto :goto_0
.line 3
:cond_1
check-cast p1, Lcom/vk/stickers/details/StickerDetailsAdapter$c;
iget-object p2, p0, Lcom/vk/stickers/details/StickerDetailsAdapter;->b:Lcom/vk/dto/stickers/StickerStockItem;
invoke-virtual {p1, p2}, Lcom/vk/stickers/details/StickerDetailsAdapter$c;->a(Lcom/vk/dto/stickers/StickerStockItem;)V
:goto_0
return-void
.end method
.method public onCreateViewHolder(Landroid/view/ViewGroup;I)Landroidx/recyclerview/widget/RecyclerView$ViewHolder;
.locals 2
if-eqz p2, :cond_2
const/4 v0, 0x1
if-eq p2, v0, :cond_1
const/4 v0, 0x2
if-ne p2, v0, :cond_0
.line 1
new-instance p2, Lcom/vk/stickers/details/StickerDetailsAdapter$b;
invoke-direct {p2, p1}, Lcom/vk/stickers/details/StickerDetailsAdapter$b;-><init>(Landroid/view/ViewGroup;)V
goto :goto_0
.line 2
:cond_0
new-instance p1, Ljava/lang/IllegalArgumentException;
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "Unknown viewType: "
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p2
invoke-direct {p1, p2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw p1
.line 3
:cond_1
new-instance p2, Lcom/vk/stickers/details/StickerDetailsAdapter$d;
invoke-direct {p2, p1}, Lcom/vk/stickers/details/StickerDetailsAdapter$d;-><init>(Landroid/view/ViewGroup;)V
goto :goto_0
.line 4
:cond_2
new-instance p2, Lcom/vk/stickers/details/StickerDetailsAdapter$c;
invoke-direct {p2, p1}, Lcom/vk/stickers/details/StickerDetailsAdapter$c;-><init>(Landroid/view/ViewGroup;)V
:goto_0
return-object p2
.end method
.method public final v()Z
.locals 1
const/4 v0, 0x0
return v0
.end method
@@ -1513,7 +1513,7 @@
iput-object v0, v15, Lcom/vtosters/lite/api/ExtendedUserProfile;->l1:Ljava/util/ArrayList;
:cond_22
invoke-static {v14}, Lru/vtosters/lite/hooks/JsonInjectors;->profileButton(Lorg/json/JSONObject;)Lorg/json/JSONObject;
invoke-static {v14}, Lru/vtosters/lite/ssfs/ProfileButtons;->profileButton(Lorg/json/JSONObject;)Lorg/json/JSONObject;
move-result-object v14
@@ -152,7 +152,7 @@
iput v4, v2, Lcom/vk/dto/user/UserProfile;->b:I
invoke-static {v0}, Lru/vtosters/lite/utils/ProfileHider;->fetchInfo(Lcom/vtosters/lite/api/ExtendedUserProfile;)V
invoke-static {v0, v1}, Lru/vtosters/lite/ssfs/ProfileHider;->fetchInfo(Lcom/vtosters/lite/api/ExtendedUserProfile;Lorg/json/JSONObject;)V
.line 3
iget-object v2, v0, Lcom/vtosters/lite/api/ExtendedUserProfile;->a:Lcom/vk/dto/user/UserProfile;
@@ -829,26 +829,13 @@
move-result p2
invoke-virtual {p0}, Landroidx/fragment/app/Fragment;->getResources()Landroid/content/res/Resources;
move-result-object v0
invoke-static {}, Lru/vtosters/lite/utils/ThemesUtils;->getAccentColor()I
move-result v0
invoke-virtual {p1, p2, v0}, Lcom/google/android/material/tabs/TabLayout;->a(II)V
.line 11
invoke-virtual {p0}, Landroidx/fragment/app/Fragment;->getResources()Landroid/content/res/Resources;
move-result-object p2
invoke-virtual {p2, v1}, Landroid/content/res/Resources;->getColor(I)I
move-result p2
invoke-virtual {p1, p2}, Lcom/google/android/material/tabs/TabLayout;->setSelectedTabIndicatorColor(I)V
invoke-virtual {p1, v0}, Lcom/google/android/material/tabs/TabLayout;->setSelectedTabIndicatorColor(I)V
.line 12
:cond_0