Commit 90f2d9bb authored by fallenstardust's avatar fallenstardust

迁移初始化决斗助手监听到homefragment

可在多个fragment询问卡组码加载和加入房间
parent 8909def2
package cn.garymb.ygomobile.ui.home; package cn.garymb.ygomobile.ui.home;
import static cn.garymb.ygomobile.ui.home.HomeFragment.ID_HOMEFRAGMENT;
import android.content.Intent; import android.content.Intent;
import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler;
import android.view.Gravity;
import android.view.MenuItem; import android.view.MenuItem;
import android.widget.FrameLayout; import android.widget.FrameLayout;
import android.widget.Toast; import android.widget.Toast;
...@@ -17,32 +12,21 @@ import androidx.fragment.app.FragmentTransaction; ...@@ -17,32 +12,21 @@ import androidx.fragment.app.FragmentTransaction;
import com.ashokvarma.bottomnavigation.BottomNavigationBar; import com.ashokvarma.bottomnavigation.BottomNavigationBar;
import com.ashokvarma.bottomnavigation.BottomNavigationItem; import com.ashokvarma.bottomnavigation.BottomNavigationItem;
import com.ourygo.assistant.base.listener.OnDuelAssistantListener;
import com.ourygo.assistant.util.DuelAssistantManagement;
import com.ourygo.assistant.util.Util;
import com.tencent.bugly.beta.Beta; import com.tencent.bugly.beta.Beta;
import com.tencent.smtt.sdk.QbSdk; import com.tencent.smtt.sdk.QbSdk;
import java.io.File;
import java.io.IOException;
import cn.garymb.ygomobile.AppsSettings; import cn.garymb.ygomobile.AppsSettings;
import cn.garymb.ygomobile.Constants; import cn.garymb.ygomobile.Constants;
import cn.garymb.ygomobile.bean.Deck;
import cn.garymb.ygomobile.lite.BuildConfig; import cn.garymb.ygomobile.lite.BuildConfig;
import cn.garymb.ygomobile.lite.R; import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.ui.activities.BaseActivity; import cn.garymb.ygomobile.ui.activities.BaseActivity;
import cn.garymb.ygomobile.ui.cards.CardSearchFragment; import cn.garymb.ygomobile.ui.cards.CardSearchFragment;
import cn.garymb.ygomobile.ui.cards.DeckManagerFragment; import cn.garymb.ygomobile.ui.cards.DeckManagerFragment;
import cn.garymb.ygomobile.ui.cards.deck.DeckUtils;
import cn.garymb.ygomobile.ui.mycard.MycardFragment; import cn.garymb.ygomobile.ui.mycard.MycardFragment;
import cn.garymb.ygomobile.ui.plus.DialogPlus;
import cn.garymb.ygomobile.ui.settings.PersonalFragment; import cn.garymb.ygomobile.ui.settings.PersonalFragment;
import cn.garymb.ygomobile.utils.FileLogUtil;
import cn.garymb.ygomobile.utils.ScreenUtil; import cn.garymb.ygomobile.utils.ScreenUtil;
import cn.garymb.ygomobile.utils.YGOUtil;
public abstract class HomeActivity extends BaseActivity implements OnDuelAssistantListener, BottomNavigationBar.OnTabSelectedListener { public abstract class HomeActivity extends BaseActivity implements BottomNavigationBar.OnTabSelectedListener {
long exitLasttime = 0; long exitLasttime = 0;
...@@ -50,16 +34,14 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista ...@@ -50,16 +34,14 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
private FrameLayout frameLayout; private FrameLayout frameLayout;
private Fragment mFragment; private Fragment mFragment;
private HomeFragment fragment_home; public HomeFragment fragment_home;
private CardSearchFragment fragment_search; public CardSearchFragment fragment_search;
private DeckManagerFragment fragment_deck_cards; public DeckManagerFragment fragment_deck_cards;
private MycardFragment fragment_mycard; public MycardFragment fragment_mycard;
private PersonalFragment fragment_personal; public PersonalFragment fragment_personal;
private Bundle mBundle; private Bundle mBundle;
private DuelAssistantManagement duelAssistantManagement;
@Override @Override
protected void onCreate(@Nullable Bundle savedInstanceState) { protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
...@@ -89,8 +71,6 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista ...@@ -89,8 +71,6 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
Beta.checkUpgrade(false, false); Beta.checkUpgrade(false, false);
} }
} }
//初始化决斗助手
initDuelAssistant();
// //
checkNotch(); checkNotch();
//showNewbieGuide("homePage"); //showNewbieGuide("homePage");
...@@ -150,19 +130,19 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista ...@@ -150,19 +130,19 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
public void onTabSelected(int position) { public void onTabSelected(int position) {
switch (position) { switch (position) {
case 0: case 0:
switchFragment(fragment_home, 0, false); switchFragment(fragment_home, position, false);
break; break;
case 1: case 1:
switchFragment(fragment_search, 1, false); switchFragment(fragment_search, position, false);
break; break;
case 2: case 2:
switchFragment(fragment_deck_cards, 2, false); switchFragment(fragment_deck_cards, position, false);
break; break;
case 3: case 3:
switchFragment(fragment_mycard, 3, false); switchFragment(fragment_mycard, position, false);
break; break;
case 4: case 4:
switchFragment(fragment_personal, 4, false); switchFragment(fragment_personal, position, false);
break; break;
} }
} }
...@@ -171,7 +151,7 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista ...@@ -171,7 +151,7 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
//用于intent到指定fragment时底部图标也跟着设置为选中状态 //用于intent到指定fragment时底部图标也跟着设置为选中状态
bottomNavigationBar.setFirstSelectedPosition(page).initialise(); bottomNavigationBar.setFirstSelectedPosition(page).initialise();
// //
FragmentTransaction transaction =getSupportFragmentManager().beginTransaction(); FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
if (mFragment.isHidden()) if (mFragment.isHidden())
transaction.show(mFragment).commit(); transaction.show(mFragment).commit();
//判断当前显示的Fragment是不是切换的Fragment //判断当前显示的Fragment是不是切换的Fragment
...@@ -193,6 +173,13 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista ...@@ -193,6 +173,13 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
} }
} }
mFragment = fragment; mFragment = fragment;
} else {
if (replace) {
//需要重新加载onCreateView需要detach再attach,而不是replace
transaction.hide(mFragment).detach(fragment).attach(fragment)
.show(fragment)//重启该fragment后需要重新show
.commit();
}
} }
} }
...@@ -200,70 +187,19 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista ...@@ -200,70 +187,19 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
@Override @Override
protected void onResume() { protected void onResume() {
super.onResume(); super.onResume();
duelAssistantCheck();
} }
@Override @Override
protected void onStop() { protected void onStop() {
//mImageLoader.clearZipCache();
super.onStop(); super.onStop();
} }
private void duelAssistantCheck() {
if (AppsSettings.get().isServiceDuelAssistant()) {
Handler handler = new Handler();
handler.postDelayed(() -> {
try {
FileLogUtil.writeAndTime("主页决斗助手检查");
} catch (IOException e) {
e.printStackTrace();
}
duelAssistantManagement.checkClip(ID_HOMEFRAGMENT);
}, 500);
}
}
@Override @Override
protected void onStart() { protected void onStart() {
super.onStart(); super.onStart();
} }
@Override
public void onJoinRoom(String host, int port, String password, int id) {
}
@Override
public void onCardSearch(String key, int id) {
/*
if (id == ID_HOMEFRAGMENT) {
Intent intent = new Intent(this, CardSearchFragment.class);
intent.putExtra(CardSearchFragment.SEARCH_MESSAGE, key);
startActivity(intent);
}*/
}
@Override
public void onSaveDeck(String message, boolean isUrl, int id) {
if (fragment_home.isVisible()) {
saveDeck(message, isUrl);
}
}
@Override
public boolean isListenerEffective() {
return Util.isContextExisted(this);
}
private void initDuelAssistant() {
duelAssistantManagement = DuelAssistantManagement.getInstance();
duelAssistantManagement.init(getApplicationContext());
duelAssistantManagement.addDuelAssistantListener(this);
// YGOUtil.startDuelService(this);
}
//检查是否有刘海 //检查是否有刘海
private void checkNotch() { private void checkNotch() {
ScreenUtil.findNotchInformation(HomeActivity.this, new ScreenUtil.FindNotchInformation() { ScreenUtil.findNotchInformation(HomeActivity.this, new ScreenUtil.FindNotchInformation() {
...@@ -277,7 +213,6 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista ...@@ -277,7 +213,6 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
@Override @Override
protected void onDestroy() { protected void onDestroy() {
super.onDestroy(); super.onDestroy();
duelAssistantManagement.removeDuelAssistantListener(this);
} }
@Override @Override
...@@ -311,51 +246,6 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista ...@@ -311,51 +246,6 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
protected abstract void openGame(); protected abstract void openGame();
public abstract void updateImages();
private void saveDeck(String deckMessage, boolean isUrl) {
DialogPlus dialog = new DialogPlus(this);
dialog.setTitle(R.string.question);
dialog.setMessage(R.string.find_deck_text);
dialog.setMessageGravity(Gravity.CENTER_HORIZONTAL);
dialog.setLeftButtonText(R.string.Cancel);
dialog.setRightButtonText(R.string.save_n_open);
dialog.show();
dialog.setLeftButtonListener((dlg, s) -> {
dialog.dismiss();
});
dialog.setRightButtonListener((dlg, s) -> {
dialog.dismiss();
//如果是卡组url
if (isUrl) {
Deck deckInfo = new Deck(getString(R.string.rename_deck) + System.currentTimeMillis(), Uri.parse(deckMessage));
File file = deckInfo.saveTemp(AppsSettings.get().getDeckDir());
if (!deckInfo.isCompleteDeck()) {
YGOUtil.show("当前卡组缺少完整信息,将只显示已有卡片");
}
if (!file.getAbsolutePath().isEmpty()) {
mBundle.putString("setDeck", file.getAbsolutePath());
fragment_deck_cards.setArguments(mBundle);
}
switchFragment(fragment_deck_cards, 2, true);
} else {
//如果是卡组文本
try {
//以当前时间戳作为卡组名保存卡组
File file = DeckUtils.save(getString(R.string.rename_deck) + System.currentTimeMillis(), deckMessage);
if (!file.getAbsolutePath().isEmpty()) {
mBundle.putString("setDeck", file.getAbsolutePath());
fragment_deck_cards.setArguments(mBundle);
}
switchFragment(fragment_deck_cards, 2, true);
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(this, getString(R.string.save_failed_bcos) + e, Toast.LENGTH_SHORT).show();
}
}
});
}
/* /*
//https://www.jianshu.com/p/99649af3b191 //https://www.jianshu.com/p/99649af3b191
public void showNewbieGuide(String scene) { public void showNewbieGuide(String scene) {
......
...@@ -7,6 +7,7 @@ import static cn.garymb.ygomobile.Constants.ORI_REPLAY; ...@@ -7,6 +7,7 @@ import static cn.garymb.ygomobile.Constants.ORI_REPLAY;
import static cn.garymb.ygomobile.ui.home.ResCheckTask.getDatapath; import static cn.garymb.ygomobile.ui.home.ResCheckTask.getDatapath;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent; import android.content.Intent;
import android.graphics.Paint; import android.graphics.Paint;
import android.net.Uri; import android.net.Uri;
...@@ -37,6 +38,9 @@ import androidx.cardview.widget.CardView; ...@@ -37,6 +38,9 @@ import androidx.cardview.widget.CardView;
import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import com.ourygo.assistant.base.listener.OnDuelAssistantListener;
import com.ourygo.assistant.util.DuelAssistantManagement;
import com.ourygo.assistant.util.Util;
import com.stx.xhb.androidx.XBanner; import com.stx.xhb.androidx.XBanner;
import com.tubb.smrv.SwipeMenuRecyclerView; import com.tubb.smrv.SwipeMenuRecyclerView;
...@@ -75,6 +79,7 @@ import cn.garymb.ygomobile.ui.plus.DialogPlus; ...@@ -75,6 +79,7 @@ import cn.garymb.ygomobile.ui.plus.DialogPlus;
import cn.garymb.ygomobile.ui.plus.VUiKit; import cn.garymb.ygomobile.ui.plus.VUiKit;
import cn.garymb.ygomobile.ui.widget.Shimmer; import cn.garymb.ygomobile.ui.widget.Shimmer;
import cn.garymb.ygomobile.ui.widget.ShimmerTextView; import cn.garymb.ygomobile.ui.widget.ShimmerTextView;
import cn.garymb.ygomobile.utils.FileLogUtil;
import cn.garymb.ygomobile.utils.FileUtils; import cn.garymb.ygomobile.utils.FileUtils;
import cn.garymb.ygomobile.utils.IOUtils; import cn.garymb.ygomobile.utils.IOUtils;
import cn.garymb.ygomobile.utils.YGOUtil; import cn.garymb.ygomobile.utils.YGOUtil;
...@@ -83,9 +88,10 @@ import ocgcore.DataManager; ...@@ -83,9 +88,10 @@ import ocgcore.DataManager;
import ocgcore.data.Card; import ocgcore.data.Card;
public class HomeFragment extends BaseFragemnt implements View.OnClickListener { public class HomeFragment extends BaseFragemnt implements OnDuelAssistantListener, View.OnClickListener {
public static final int ID_HOMEFRAGMENT = 0; public static final int ID_HOMEFRAGMENT = 0;
private DuelAssistantManagement duelAssistantManagement;
private HomeActivity activity;
private static final int TYPE_BANNER_QUERY_OK = 0; private static final int TYPE_BANNER_QUERY_OK = 0;
private static final int TYPE_BANNER_QUERY_EXCEPTION = 1; private static final int TYPE_BANNER_QUERY_EXCEPTION = 1;
private static final int TYPE_RES_LOADING_OK = 2; private static final int TYPE_RES_LOADING_OK = 2;
...@@ -116,6 +122,8 @@ public class HomeFragment extends BaseFragemnt implements View.OnClickListener { ...@@ -116,6 +122,8 @@ public class HomeFragment extends BaseFragemnt implements View.OnClickListener {
private CardView cv_donation; private CardView cv_donation;
private CardView cv_help; private CardView cv_help;
private Bundle mBundle;
@Nullable @Nullable
@Override @Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
...@@ -127,6 +135,10 @@ public class HomeFragment extends BaseFragemnt implements View.OnClickListener { ...@@ -127,6 +135,10 @@ public class HomeFragment extends BaseFragemnt implements View.OnClickListener {
layoutView = inflater.inflate(R.layout.fragment_home, container, false); layoutView = inflater.inflate(R.layout.fragment_home, container, false);
initBanner(layoutView, savedInstanceState); initBanner(layoutView, savedInstanceState);
initView(layoutView); initView(layoutView);
//初始化决斗助手
initDuelAssistant();
activity = (HomeActivity) getActivity();
mBundle = new Bundle();
//event //event
if (!EventBus.getDefault().isRegistered(this)) {//加上判断 if (!EventBus.getDefault().isRegistered(this)) {//加上判断
EventBus.getDefault().register(this); EventBus.getDefault().register(this);
...@@ -457,6 +469,69 @@ public class HomeFragment extends BaseFragemnt implements View.OnClickListener { ...@@ -457,6 +469,69 @@ public class HomeFragment extends BaseFragemnt implements View.OnClickListener {
} }
} }
@Override
public void onCardSearch(String key, int id) {
/*
if (id == ID_HOMEFRAGMENT) {
Intent intent = new Intent(this, CardSearchFragment.class);
intent.putExtra(CardSearchFragment.SEARCH_MESSAGE, key);
startActivity(intent);
}*/
}
@Override
public void onSaveDeck(String message, boolean isUrl, int id) {
saveDeck(message, isUrl);
}
public void saveDeck(String deckMessage, boolean isUrl) {
DialogPlus dialog = new DialogPlus(getContext());
dialog.setTitle(R.string.question);
dialog.setMessage(R.string.find_deck_text);
dialog.setMessageGravity(Gravity.CENTER_HORIZONTAL);
dialog.setLeftButtonText(R.string.Cancel);
dialog.setRightButtonText(R.string.save_n_open);
dialog.show();
dialog.setLeftButtonListener((dlg, s) -> {
dialog.dismiss();
});
dialog.setRightButtonListener((dlg, s) -> {
dialog.dismiss();
//如果是卡组url
if (isUrl) {
Deck deckInfo = new Deck(getString(R.string.rename_deck) + System.currentTimeMillis(), Uri.parse(deckMessage));
File file = deckInfo.saveTemp(AppsSettings.get().getDeckDir());
if (!deckInfo.isCompleteDeck()) {
YGOUtil.show("当前卡组缺少完整信息,将只显示已有卡片");
}
if (!file.getAbsolutePath().isEmpty()) {
mBundle.putString("setDeck", file.getAbsolutePath());
activity.fragment_deck_cards.setArguments(mBundle);
}
activity.switchFragment(activity.fragment_deck_cards, 2, true);
} else {
//如果是卡组文本
try {
//以当前时间戳作为卡组名保存卡组
File file = DeckUtils.save(getString(R.string.rename_deck) + System.currentTimeMillis(), deckMessage);
if (!file.getAbsolutePath().isEmpty()) {
mBundle.putString("setDeck", file.getAbsolutePath());
activity.fragment_deck_cards.setArguments(mBundle);
}
activity.switchFragment(activity.fragment_deck_cards, 2, true);
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(getContext(), getString(R.string.save_failed_bcos) + e, Toast.LENGTH_SHORT).show();
}
}
});
}
@Override
public boolean isListenerEffective() {
return Util.isContextExisted(getActivity());
}
@Subscribe(threadMode = ThreadMode.MAIN) @Subscribe(threadMode = ThreadMode.MAIN)
public void onServerInfoEvent(ServerInfoEvent event) { public void onServerInfoEvent(ServerInfoEvent event) {
if (event.delete) { if (event.delete) {
...@@ -565,9 +640,31 @@ public class HomeFragment extends BaseFragemnt implements View.OnClickListener { ...@@ -565,9 +640,31 @@ public class HomeFragment extends BaseFragemnt implements View.OnClickListener {
} }
} }
private void duelAssistantCheck() {
if (AppsSettings.get().isServiceDuelAssistant()) {
Handler handler = new Handler();
handler.postDelayed(() -> {
try {
FileLogUtil.writeAndTime("主页决斗助手检查");
} catch (IOException e) {
e.printStackTrace();
}
duelAssistantManagement.checkClip(ID_HOMEFRAGMENT);
}, 500);
}
}
private void initDuelAssistant() {
duelAssistantManagement = DuelAssistantManagement.getInstance();
duelAssistantManagement.init(getActivity());
duelAssistantManagement.addDuelAssistantListener(this);
// YGOUtil.startDuelService(this);
}
@Override @Override
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
duelAssistantCheck();
BacktoDuel(); BacktoDuel();
//server list //server list
mServerListManager.syncLoadData(); mServerListManager.syncLoadData();
...@@ -575,6 +672,7 @@ public class HomeFragment extends BaseFragemnt implements View.OnClickListener { ...@@ -575,6 +672,7 @@ public class HomeFragment extends BaseFragemnt implements View.OnClickListener {
@Override @Override
public void onDestroy() { public void onDestroy() {
duelAssistantManagement.removeDuelAssistantListener(this);
if (EventBus.getDefault().isRegistered(this))//加上判断 if (EventBus.getDefault().isRegistered(this))//加上判断
EventBus.getDefault().unregister(this); EventBus.getDefault().unregister(this);
super.onDestroy(); super.onDestroy();
......
...@@ -231,8 +231,7 @@ public class MainActivity extends HomeActivity implements BottomNavigationBar.On ...@@ -231,8 +231,7 @@ public class MainActivity extends HomeActivity implements BottomNavigationBar.On
} }
} }
@Override
public void updateImages() {}
@Override @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) { protected void onActivityResult(int requestCode, int resultCode, Intent data) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment