rewrite StickersFragment.java
- move add tgs action to toolbar - some optimizations
This commit is contained in:
+162
-169
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user