Commit 90f2d9bb authored by fallenstardust's avatar fallenstardust

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

可在多个fragment询问卡组码加载和加入房间
parent 8909def2
package cn.garymb.ygomobile.ui.home;
import static cn.garymb.ygomobile.ui.home.HomeFragment.ID_HOMEFRAGMENT;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.view.Gravity;
import android.view.MenuItem;
import android.widget.FrameLayout;
import android.widget.Toast;
......@@ -17,32 +12,21 @@ import androidx.fragment.app.FragmentTransaction;
import com.ashokvarma.bottomnavigation.BottomNavigationBar;
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.smtt.sdk.QbSdk;
import java.io.File;
import java.io.IOException;
import cn.garymb.ygomobile.AppsSettings;
import cn.garymb.ygomobile.Constants;
import cn.garymb.ygomobile.bean.Deck;
import cn.garymb.ygomobile.lite.BuildConfig;
import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.ui.activities.BaseActivity;
import cn.garymb.ygomobile.ui.cards.CardSearchFragment;
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.plus.DialogPlus;
import cn.garymb.ygomobile.ui.settings.PersonalFragment;
import cn.garymb.ygomobile.utils.FileLogUtil;
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;
......@@ -50,16 +34,14 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
private FrameLayout frameLayout;
private Fragment mFragment;
private HomeFragment fragment_home;
private CardSearchFragment fragment_search;
private DeckManagerFragment fragment_deck_cards;
private MycardFragment fragment_mycard;
private PersonalFragment fragment_personal;
public HomeFragment fragment_home;
public CardSearchFragment fragment_search;
public DeckManagerFragment fragment_deck_cards;
public MycardFragment fragment_mycard;
public PersonalFragment fragment_personal;
private Bundle mBundle;
private DuelAssistantManagement duelAssistantManagement;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
......@@ -89,8 +71,6 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
Beta.checkUpgrade(false, false);
}
}
//初始化决斗助手
initDuelAssistant();
//
checkNotch();
//showNewbieGuide("homePage");
......@@ -150,19 +130,19 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
public void onTabSelected(int position) {
switch (position) {
case 0:
switchFragment(fragment_home, 0, false);
switchFragment(fragment_home, position, false);
break;
case 1:
switchFragment(fragment_search, 1, false);
switchFragment(fragment_search, position, false);
break;
case 2:
switchFragment(fragment_deck_cards, 2, false);
switchFragment(fragment_deck_cards, position, false);
break;
case 3:
switchFragment(fragment_mycard, 3, false);
switchFragment(fragment_mycard, position, false);
break;
case 4:
switchFragment(fragment_personal, 4, false);
switchFragment(fragment_personal, position, false);
break;
}
}
......@@ -171,7 +151,7 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
//用于intent到指定fragment时底部图标也跟着设置为选中状态
bottomNavigationBar.setFirstSelectedPosition(page).initialise();
//
FragmentTransaction transaction =getSupportFragmentManager().beginTransaction();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
if (mFragment.isHidden())
transaction.show(mFragment).commit();
//判断当前显示的Fragment是不是切换的Fragment
......@@ -193,6 +173,13 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
}
}
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
@Override
protected void onResume() {
super.onResume();
duelAssistantCheck();
}
@Override
protected void onStop() {
//mImageLoader.clearZipCache();
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
protected void 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() {
ScreenUtil.findNotchInformation(HomeActivity.this, new ScreenUtil.FindNotchInformation() {
......@@ -277,7 +213,6 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
@Override
protected void onDestroy() {
super.onDestroy();
duelAssistantManagement.removeDuelAssistantListener(this);
}
@Override
......@@ -311,51 +246,6 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
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
public void showNewbieGuide(String scene) {
......
......@@ -7,6 +7,7 @@ import static cn.garymb.ygomobile.Constants.ORI_REPLAY;
import static cn.garymb.ygomobile.ui.home.ResCheckTask.getDatapath;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Paint;
import android.net.Uri;
......@@ -37,6 +38,9 @@ import androidx.cardview.widget.CardView;
import androidx.recyclerview.widget.DividerItemDecoration;
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.tubb.smrv.SwipeMenuRecyclerView;
......@@ -75,6 +79,7 @@ import cn.garymb.ygomobile.ui.plus.DialogPlus;
import cn.garymb.ygomobile.ui.plus.VUiKit;
import cn.garymb.ygomobile.ui.widget.Shimmer;
import cn.garymb.ygomobile.ui.widget.ShimmerTextView;
import cn.garymb.ygomobile.utils.FileLogUtil;
import cn.garymb.ygomobile.utils.FileUtils;
import cn.garymb.ygomobile.utils.IOUtils;
import cn.garymb.ygomobile.utils.YGOUtil;
......@@ -83,9 +88,10 @@ import ocgcore.DataManager;
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;
private DuelAssistantManagement duelAssistantManagement;
private HomeActivity activity;
private static final int TYPE_BANNER_QUERY_OK = 0;
private static final int TYPE_BANNER_QUERY_EXCEPTION = 1;
private static final int TYPE_RES_LOADING_OK = 2;
......@@ -116,6 +122,8 @@ public class HomeFragment extends BaseFragemnt implements View.OnClickListener {
private CardView cv_donation;
private CardView cv_help;
private Bundle mBundle;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
......@@ -127,6 +135,10 @@ public class HomeFragment extends BaseFragemnt implements View.OnClickListener {
layoutView = inflater.inflate(R.layout.fragment_home, container, false);
initBanner(layoutView, savedInstanceState);
initView(layoutView);
//初始化决斗助手
initDuelAssistant();
activity = (HomeActivity) getActivity();
mBundle = new Bundle();
//event
if (!EventBus.getDefault().isRegistered(this)) {//加上判断
EventBus.getDefault().register(this);
......@@ -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)
public void onServerInfoEvent(ServerInfoEvent event) {
if (event.delete) {
......@@ -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
public void onResume() {
super.onResume();
duelAssistantCheck();
BacktoDuel();
//server list
mServerListManager.syncLoadData();
......@@ -575,6 +672,7 @@ public class HomeFragment extends BaseFragemnt implements View.OnClickListener {
@Override
public void onDestroy() {
duelAssistantManagement.removeDuelAssistantListener(this);
if (EventBus.getDefault().isRegistered(this))//加上判断
EventBus.getDefault().unregister(this);
super.onDestroy();
......
......@@ -231,8 +231,7 @@ public class MainActivity extends HomeActivity implements BottomNavigationBar.On
}
}
@Override
public void updateImages() {}
@Override
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