diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/tgstickers/StickersFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/tgstickers/StickersFragment.java index 73c77e98e..ed1d38034 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/tgstickers/StickersFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/tgstickers/StickersFragment.java @@ -20,7 +20,6 @@ import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.StaggeredGridLayoutManager; import com.aefyr.tsg.g2.TelegramStickersService; import com.aefyr.tsg.g2.stickersgrabber.TelegramStickersGrabber; -import com.google.android.material.floatingactionbutton.FloatingActionButton; import com.vk.core.dialogs.alert.VkAlertDialog; import com.vtosters.lite.R; import ru.vtosters.hooks.other.ThemesUtils; @@ -36,55 +35,58 @@ import java.io.File; public class StickersFragment extends BaseToolbarFragment { public final static String ACTION_RELOAD = "com.vtosters.lite.action.RELOAD_TGS_LIST"; - private final static int TYPE_DIRECT = 0, TYPE_SOCKS = 2; - public int from; - public int to; - private TelegramStickersGrabber mGrabber; - private TelegramStickersService mService; - private StickerPackAdapter mAdapter; - private boolean movePending = false; - private final BroadcastReceiver mReceiver = new BroadcastReceiver() { + final static int TYPE_DIRECT = 0; + final static int TYPE_SOCKS = 2; + + TelegramStickersGrabber mGrabber; + StickerPackAdapter mAdapter; + boolean movePending = false; + int from,to; + final BroadcastReceiver mReceiver=new BroadcastReceiver() { @SuppressLint("NotifyDataSetChanged") @Override public void onReceive(Context context, Intent intent) { - if (intent.getAction().equals(ACTION_RELOAD)) { - if (mAdapter != null) { - try { - if (movePending) { - movePending = false; - mAdapter.notifyItemMoved(from, to); - from = -1; - to = -1; - } else { - mAdapter.notifyDataSetChanged(); - } - } catch (Exception e) { - e.printStackTrace(); - } + if (!intent.getAction().equals(ACTION_RELOAD)||mAdapter==null)return; + try + { + if(movePending) + { + movePending=false; + mAdapter.notifyItemMoved(from, to); + from=to=-1; } + else mAdapter.notifyDataSetChanged(); } + catch(Exception e) + { e.printStackTrace(); } } }; @Override - protected void onCreateMenu(Menu menu) { - MenuItem item = menu.add(0, 0, 0, ""); - item.setIcon(ThemesUtils.recolorDrawable(AndroidUtils.getGlobalContext().getDrawable(R.drawable.ic_settings_outline_28))) - .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); - + protected void onCreateMenu(Menu menu) + { + menu.add(0, 0, 0, "") + .setIcon(ThemesUtils.recolorDrawable(requireContext().getDrawable(R.drawable.ic_add_outline_28))) + .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); + menu.add(0,1,0,"") + .setIcon(R.drawable.ic_settings_outline_28) + .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); super.onCreateMenu(menu); } @Override - public boolean onOptionsItemSelected(MenuItem arg0) { - openMenu(null); + public boolean onOptionsItemSelected(MenuItem item) + { + switch (item.getItemId()) + { + case 0 -> addTgsPack(); + case 1 -> openMenu(null); + } return true; } private void openMenu(String toast) { - if (toast != null) { - Toast.makeText(requireContext(), toast, Toast.LENGTH_SHORT).show(); - } + if(toast!=null)Toast.makeText(requireContext(),toast,Toast.LENGTH_SHORT).show(); NavigatorUtils.switchFragment(requireContext(), StickersPreferencesFragment.class); } @@ -93,41 +95,29 @@ public class StickersFragment extends BaseToolbarFragment { super.onCreate(savedInstanceState); requireContext().registerReceiver(mReceiver, new IntentFilter(ACTION_RELOAD)); - mGrabber = new TelegramStickersGrabber(TGPref.getTGBotKey()); - mService = TelegramStickersService.getInstance(requireContext()); + mGrabber=new TelegramStickersGrabber(TGPref.getTGBotKey()); } @Override public View onCreateContent(@NonNull LayoutInflater inflater, @Nullable Bundle bundle) { setTitle(R.string.vtltgs); - FrameLayout layout = new FrameLayout(requireContext()); + final var container=new FrameLayout(requireContext()); + final var recycler=new RecyclerView(requireContext()); - mAdapter = new StickerPackAdapter(); - RecyclerView mRecycler = new RecyclerView(requireContext()); + mAdapter=new StickerPackAdapter(); + recycler.setAdapter(mAdapter); - StickerTouchHelperCallback callback = new StickerTouchHelperCallback(mAdapter); - ItemTouchHelper touchHelper = new ItemTouchHelper(callback); - touchHelper.attachToRecyclerView(mRecycler); + final var callback=new StickerTouchHelperCallback(mAdapter); + final var touchHelper=new ItemTouchHelper(callback); + touchHelper.attachToRecyclerView(recycler); - mRecycler.setAdapter(mAdapter); - mRecycler.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL)); - layout.addView(mRecycler, new ViewGroup.LayoutParams(-1, -1)); + recycler.setLayoutManager(new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL)); + container.addView(recycler,new ViewGroup.LayoutParams(-1,-1)); - FloatingActionButton mAddStickerPack = new FloatingActionButton(requireContext()); - mAddStickerPack.setImageResource(R.drawable.ic_add_24); - mAddStickerPack.setBackgroundTintList(ThemesUtils.getAccenedColorStateList()); - mAddStickerPack.setOnClickListener(v2 -> fabClick()); - - FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(-2, -2); - params.gravity = Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL; - params.setMargins(0, 0, 0, AndroidUtils.dp2px(12f)); - layout.addView(mAddStickerPack, params); - - return layout; + return container; } - @Override public void onViewCreated(View arg0, Bundle arg1) { super.onViewCreated(arg0, arg1); @@ -139,70 +129,79 @@ public class StickersFragment extends BaseToolbarFragment { requireContext().unregisterReceiver(mReceiver); } - private void fabClick() { - int method = TGPref.getTGConnectMethod(); - if (method == -1) { - openMenu(requireContext().getString(R.string.stickersconnection)); - return; - } + private void addTgsPack() + { + final var method=TGPref.getTGConnectMethod(); + if(method!=-1) + { + initGrabber(); + switch(method) + { + case TYPE_SOCKS -> + { + if (TGPref.getTGProxyIP()==null)openMenu(requireContext().getString(R.string.stickersproxy1)); + } + case TYPE_DIRECT -> + { + initGrabber(); + final Runnable lambda = () -> + { + final var container=new LinearLayout(requireContext()); - initGrabber(); - if (method == TYPE_SOCKS) { - if (TGPref.getTGProxyIP() == null) { - openMenu(requireContext().getString(R.string.stickersproxy1)); + final var input=new EditText(requireContext()); + final var inputLP = new ViewGroup.MarginLayoutParams(-1,-2); + inputLP.setMargins( + AndroidUtils.dp2px(24.f), + 0, + AndroidUtils.dp2px(24.f), + 0); + container.addView(input,inputLP); + + new VkAlertDialog.Builder(requireContext()) + .setTitle(R.string.stickershelp1) + // .setMessage(R.string.stickershelp2) + .setView(container) + .setPositiveButton(android.R.string.ok, (dialog, which) -> + { + var packId=input.getText().toString(); + if (packId.startsWith("https://")) + packId=packId.substring(packId.lastIndexOf('/')+1); + TelegramStickersService.getInstance(requireContext()) + .requestPackDownload( + packId, + new File(requireContext().getFilesDir(),"VT-Stickers/"+packId)); + }) + .setNeutralButton(android.R.string.cancel,(dialog, which) -> dialog.dismiss()) + .show(); + }; + + if(TGPref.getTGBotKey()==null)enterBotKey(() -> checkApiKey(lambda)); + else checkApiKey(lambda); + } } - } else if (method == TYPE_DIRECT) { - final Runnable callback = () -> { - LinearLayout linearLayout = new LinearLayout(requireContext()); - - final EditText editText = new EditText(requireContext()); - 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(24f), 0, AndroidUtils.dp2px(24f), 0); - editText.setLayoutParams(margin); - - new VkAlertDialog.Builder(requireContext()) - .setTitle(requireContext().getString(R.string.stickershelp1)) - .setMessage(requireContext().getString(R.string.stickershelp2)) - .setView(linearLayout) - .setPositiveButton(android.R.string.ok, (dialog, which) -> { - String pack = editText.getText().toString(); - if (!pack.startsWith("https://")) { - pack = "https://" + pack; - } else if (!pack.contains("addstickers")) { - AndroidUtils.sendToast(AndroidUtils.getString("invalid_pack_link")); - } - pack = parsePack(pack); - mService.requestPackDownload(pack, new File(requireContext().getFilesDir(), new File("VT-Stickers", pack).getAbsolutePath())); - }) - .setNeutralButton(android.R.string.cancel, - (dialog, which) -> dialog.dismiss() - ) - .show(); - }; - if (TGPref.getTGBotKey() == null) enterBotKey(() -> checkApiKey(callback)); - else checkApiKey(callback); } + else openMenu(requireContext().getString(R.string.stickersconnection)); } private void initGrabber() { - int method = TGPref.getTGConnectMethod(); - if (method == TYPE_DIRECT) { - TelegramStickersGrabber.USE_PROXY = false; - mGrabber.resetProxy(); - } else if (method == TYPE_SOCKS) { - if (TGPref.getTGProxyIP() != null) { - TelegramStickersGrabber.USE_PROXY = true; - TelegramStickersGrabber.PROXY_IP = TGPref.getTGProxyIP(); - TelegramStickersGrabber.PROXY_PORT = TGPref.getTGProxyPort(); - if (TGPref.isTGProxyPassEnabled()) { - TelegramStickersGrabber.HAS_PASS = true; - TelegramStickersGrabber.PROXY_USER = TGPref.getTGProxyUser(); - TelegramStickersGrabber.PROXY_PASS = TGPref.getTGProxyPass(); + switch(TGPref.getTGConnectMethod()) + { + case TYPE_DIRECT -> + { + TelegramStickersGrabber.USE_PROXY=false; + mGrabber.resetProxy(); + } + case TYPE_SOCKS -> + { + if(TGPref.getTGProxyIP()==null)break; + TelegramStickersGrabber.USE_PROXY=true; + TelegramStickersGrabber.PROXY_IP=TGPref.getTGProxyIP(); + TelegramStickersGrabber.PROXY_PORT=TGPref.getTGProxyPort(); + if (TGPref.isTGProxyPassEnabled()) + { + TelegramStickersGrabber.HAS_PASS=true; + TelegramStickersGrabber.PROXY_USER=TGPref.getTGProxyUser(); + TelegramStickersGrabber.PROXY_PASS=TGPref.getTGProxyPass(); } mGrabber.enableProxy(); } @@ -210,42 +209,42 @@ public class StickersFragment extends BaseToolbarFragment { TelegramStickersGrabber.updateURLs(); } - private void enterBotKey(Runnable r) { - LinearLayout linearLayout = new LinearLayout(requireContext()); + private void enterBotKey(Runnable callback) + { + final var container=new LinearLayout(requireContext()); - final EditText editText = new EditText(requireContext()); - 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(24f), 0, AndroidUtils.dp2px(24f), 0); - editText.setLayoutParams(margin); + final var input=new EditText(requireContext()); + final var inputLP=new ViewGroup.MarginLayoutParams(-1,-2); + inputLP.setMargins( + AndroidUtils.dp2px(24.f), + 0, + AndroidUtils.dp2px(24.f), + 0); + container.addView(input,inputLP); new VkAlertDialog.Builder(requireContext()) .setTitle(requireContext().getString(R.string.stickersapi5)) .setMessage(requireContext().getString(R.string.stickersapi6)) - .setView(linearLayout) - .setPositiveButton(android.R.string.ok, (dialog, which) -> { - TGPref.setTGBotKey(editText.getText().toString()); - if (r != null) r.run(); + .setView(container) + .setPositiveButton(android.R.string.ok,(dialog, which) -> + { + TGPref.setTGBotKey(input.getText().toString()); + if(callback!=null)callback.run(); }) - .setNegativeButton(android.R.string.cancel, - (dialog, which) -> dialog.dismiss() - ) + .setNegativeButton(android.R.string.cancel,(dialog, which) -> dialog.dismiss()) .setNeutralButton(requireContext().getString(R.string.stickersapi7), - (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() + (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) -> { + final var intent=new Intent(Intent.ACTION_VIEW,Uri.parse("https://t.me/botfather")) + .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + requireActivity().startActivity(intent); + }) + .setPositiveButton(android.R.string.ok, null) + .show() ) .show(); } @@ -253,45 +252,39 @@ public class StickersFragment extends BaseToolbarFragment { private void checkApiKey(Runnable callback) { mGrabber.setBotApiKey(TGPref.getTGBotKey()); - var context = requireContext(); + final var dialog=new ProgressDialog(requireContext()); + dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); + dialog.setMessage(requireContext().getString(R.string.stickersapi1)); + dialog.show(); - final ProgressDialog progressDialog = new ProgressDialog(context); - progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); - progressDialog.setMessage(requireContext().getString(R.string.stickersapi1)); - progressDialog.show(); - - mGrabber.checkKey(new TelegramStickersGrabber.KeyCheckListener() { + mGrabber.checkKey(new TelegramStickersGrabber.KeyCheckListener() + { @Override - public void onKeyChecked(boolean ok) { - progressDialog.dismiss(); - if (!ok) { - Toast.makeText(context, requireContext().getString(R.string.stickersapi2), Toast.LENGTH_SHORT).show(); + public void onKeyChecked(boolean ok) + { + dialog.dismiss(); + if (!ok) + { + Toast.makeText(requireContext(), requireContext().getString(R.string.stickersapi2),Toast.LENGTH_SHORT).show(); TGPref.setTGBotKey(null); return; } - mService.setBotKey(TGPref.getTGBotKey()); + TelegramStickersService.getInstance(requireContext()) + .setBotKey(TGPref.getTGBotKey()); - if (callback != null) callback.run(); + if (callback!=null)callback.run(); } @Override - public void onNetError() { - progressDialog.dismiss(); - new VkAlertDialog.Builder(context) + public void onNetError() + { + dialog.dismiss(); + new VkAlertDialog.Builder(requireContext()) .setMessage(requireContext().getString(R.string.stickersapi3)) .setNegativeButton(android.R.string.cancel, null) - .setPositiveButton(requireContext().getString(R.string.stickersapi4), (arg0, arg1) -> checkApiKey(callback)) + .setPositiveButton(requireContext().getString(R.string.stickersapi4),(di,which) -> checkApiKey(callback)) .show(); } }); } - - private String parsePack(String pack) { - if (pack.startsWith("https://t.me/addstickers/")) { - pack = pack.substring(25); - } else if (pack.startsWith("https://telegram.me/addstickers/")) { - pack = pack.substring(32); - } - return pack; - } } \ No newline at end of file