Commit ac5b34e8 authored by Dark Zane's avatar Dark Zane Committed by GitHub

Merge branch 'fallenstardust:master' into master

parents e1c0cba2 123aaf1e
...@@ -252,7 +252,7 @@ public class AppsSettings { ...@@ -252,7 +252,7 @@ public class AppsSettings {
return false; return false;
} }
String s_name = file.getName().toLowerCase(); String s_name = file.getName().toLowerCase();
return s_name.endsWith(".zip") || s_name.endsWith(".ypk"); return s_name.endsWith(".zip") || s_name.endsWith(Constants.YPK_FILE_EX);
}); });
} }
......
...@@ -172,7 +172,7 @@ public class GameUriManager { ...@@ -172,7 +172,7 @@ public class GameUriManager {
if (name.toLowerCase(Locale.US).endsWith(YDK_FILE_EX)) { if (name.toLowerCase(Locale.US).endsWith(YDK_FILE_EX)) {
File dir = Constants.COPY_YDK_FILE ? new File(AppsSettings.get().getDeckDir()) : new File(getActivity().getApplicationInfo().dataDir, "cache"); File dir = Constants.COPY_YDK_FILE ? new File(AppsSettings.get().getDeckDir()) : new File(getActivity().getApplicationInfo().dataDir, "cache");
local = getDeckFile(dir, getPathName(path, true)); local = getDeckFile(dir, getPathName(path, true));
} else if (name.toLowerCase(Locale.US).endsWith(".ypk")) { } else if (name.toLowerCase(Locale.US).endsWith(YPK_FILE_EX)) {
String[] words = name.trim().split("[()() ]+"); String[] words = name.trim().split("[()() ]+");
File[] ypkList = AppsSettings.get().getExpansionFiles(); File[] ypkList = AppsSettings.get().getExpansionFiles();
for (int i = 0; i < ypkList.length; i++) { for (int i = 0; i < ypkList.length; i++) {
......
...@@ -133,7 +133,7 @@ public class ExCardListFragment extends Fragment { ...@@ -133,7 +133,7 @@ public class ExCardListFragment extends Fragment {
textDownload.setText("0%");//点击下载后,距离onDownloading触发要等几秒,这一延迟会造成软件响应慢的错觉,因此在下载函数开始就设置文本 textDownload.setText("0%");//点击下载后,距离onDownloading触发要等几秒,这一延迟会造成软件响应慢的错觉,因此在下载函数开始就设置文本
String path = AppsSettings.get().getExpansionsPath().getAbsolutePath(); String path = AppsSettings.get().getExpansionsPath().getAbsolutePath();
String fileName = Constants.officialExCardPackageName; String fileName = Constants.officialExCardPackageName;
File file = new File(path + "/" + fileName + ".ypk"); File file = new File(path + "/" + fileName + Constants.YPK_FILE_EX);
/* 删除旧的先行卡包 */ /* 删除旧的先行卡包 */
File[] files = AppsSettings.get().getExpansionsPath().listFiles(); File[] files = AppsSettings.get().getExpansionsPath().listFiles();
if (files != null) { if (files != null) {
......
...@@ -131,7 +131,7 @@ public class CardLoader implements ICardSearcher { ...@@ -131,7 +131,7 @@ public class CardLoader implements ICardSearcher {
if (mCallBack != null) { if (mCallBack != null) {
mCallBack.onSearchStart(); mCallBack.onSearchStart();
} }
Dialog wait = DialogPlus.show(context, null, context.getString(R.string.searching)); //Dialog wait = DialogPlus.show(context, null, context.getString(R.string.searching));
VUiKit.defer().when(() -> { VUiKit.defer().when(() -> {
SparseArray<Card> cards = mCardManager.getAllCards(); SparseArray<Card> cards = mCardManager.getAllCards();
List<Card> list = new ArrayList<>(); List<Card> list = new ArrayList<>();
...@@ -159,12 +159,12 @@ public class CardLoader implements ICardSearcher { ...@@ -159,12 +159,12 @@ public class CardLoader implements ICardSearcher {
mCallBack.onSearchResult(noting, false); mCallBack.onSearchResult(noting, false);
} }
LogUtil.e("kk", "search", e); LogUtil.e("kk", "search", e);
wait.dismiss(); //wait.dismiss();
}).done((tmp) -> { }).done((tmp) -> {
if (mCallBack != null) { if (mCallBack != null) {
mCallBack.onSearchResult(tmp, false); mCallBack.onSearchResult(tmp, false);
} }
wait.dismiss(); //wait.dismiss();
}); });
} }
......
...@@ -23,7 +23,7 @@ public class CardSearchInfo implements ICardFilter{ ...@@ -23,7 +23,7 @@ public class CardSearchInfo implements ICardFilter{
private int limitType; private int limitType;
private String limitName; private String limitName;
private CardSearchInfo() { public CardSearchInfo() {
} }
public int getLimitType() { public int getLimitType() {
......
package cn.garymb.ygomobile.ui.cards; package cn.garymb.ygomobile.ui.cards;
import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE;
import static cn.garymb.ygomobile.core.IrrlichtBridge.ACTION_SHARE_FILE; import static cn.garymb.ygomobile.core.IrrlichtBridge.ACTION_SHARE_FILE;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.content.Intent; import android.content.Intent;
import android.os.Handler; import android.os.Handler;
import android.os.Message; import android.os.Message;
import android.graphics.Color;
import android.text.SpannableString;
import android.text.style.ForegroundColorSpan;
import android.text.TextUtils; import android.text.TextUtils;
import android.text.style.ClickableSpan;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
...@@ -26,11 +31,16 @@ import com.bm.library.PhotoView; ...@@ -26,11 +31,16 @@ import com.bm.library.PhotoView;
import com.feihua.dialogutils.util.DialogUtils; import com.feihua.dialogutils.util.DialogUtils;
import java.io.File; import java.io.File;
import java.util.Stack;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import cn.garymb.ygomobile.AppsSettings; import cn.garymb.ygomobile.AppsSettings;
import cn.garymb.ygomobile.Constants; import cn.garymb.ygomobile.Constants;
import cn.garymb.ygomobile.core.IrrlichtBridge; import cn.garymb.ygomobile.core.IrrlichtBridge;
import cn.garymb.ygomobile.lite.R; import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.loader.CardKeyWord;
import cn.garymb.ygomobile.loader.CardSearchInfo;
import cn.garymb.ygomobile.loader.ImageLoader; import cn.garymb.ygomobile.loader.ImageLoader;
import cn.garymb.ygomobile.ui.activities.BaseActivity; import cn.garymb.ygomobile.ui.activities.BaseActivity;
import cn.garymb.ygomobile.ui.adapters.BaseAdapterPlus; import cn.garymb.ygomobile.ui.adapters.BaseAdapterPlus;
...@@ -100,7 +110,6 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder { ...@@ -100,7 +110,6 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder {
private Button btn_redownload; private Button btn_redownload;
private Button btn_share; private Button btn_share;
private boolean isDownloadCardImage = true; private boolean isDownloadCardImage = true;
private Shimmer shimmer;
@SuppressLint("HandlerLeak") @SuppressLint("HandlerLeak")
Handler handler = new Handler() { Handler handler = new Handler() {
...@@ -132,6 +141,7 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder { ...@@ -132,6 +141,7 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder {
} }
} }
}; };
private Shimmer shimmer;
private boolean mShowAdd = false; private boolean mShowAdd = false;
private OnFavoriteChangedListener mOnFavoriteChangedListener; private OnFavoriteChangedListener mOnFavoriteChangedListener;
...@@ -292,6 +302,84 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder { ...@@ -292,6 +302,84 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder {
return mCardInfo; return mCardInfo;
} }
public void setHighlightTextWithClickableSpans(String text) {
SpannableString spannableString = new SpannableString(text);
// 解析器状态
QuoteType currentQuoteType = QuoteType.NONE;
Stack<Integer> stack = new Stack<>();
int start = -1;
for (int i = 0; i < text.length(); i++) {
char c = text.charAt(i);
switch (currentQuoteType) {
case NONE:
if (c == '「') {
currentQuoteType = QuoteType.ANGLE_QUOTE;
start = i + 1;
stack.push(i);
} else if (c == '"') {
currentQuoteType = QuoteType.DOUBLE_QUOTE;
start = i + 1;
stack.push(i);
}
break;
case ANGLE_QUOTE:
if (c == '「') {
stack.push(i);
} else if (c == '」' && !stack.isEmpty()) {
stack.pop();
if (stack.isEmpty()) {
applySpan(spannableString, start, i, YGOUtil.c(R.color.holo_blue_bright));
currentQuoteType = QuoteType.NONE;
}
}
break;
case DOUBLE_QUOTE:
if (c == '"' && !stack.isEmpty()) {
stack.pop();
if (stack.isEmpty()) {
applySpan(spannableString, start, i, YGOUtil.c(R.color.holo_blue_bright));
currentQuoteType = QuoteType.NONE;
} else {
stack.push(i);
// 对于嵌套的情况,只增加/减少栈中的元素而不应用样式
}
}
break;
}
}
// 处理未关闭的引号对
if (!stack.isEmpty()) {
// Handle unclosed quotes error, e.g., log a warning or throw an exception
}
desc.setText(spannableString);
desc.setMovementMethod(android.text.method.LinkMovementMethod.getInstance());
}
private void applySpan(SpannableString spannableString, int start, int end, int color) {
// 设置颜色
spannableString.setSpan(new ForegroundColorSpan(color), start, end, SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE);
// 设置点击监听
spannableString.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
// 获取被点击的文本内容
String clickedText = ((TextView) widget).getText().subSequence(start, end).toString();
mListener.onSearchKeyWord(clickedText);
}
@Override
public void updateDrawState(android.text.TextPaint ds) {
// 可以在这里自定义点击状态下的样式,如去掉下划线
ds.setUnderlineText(true);
}
}, start, end, SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE);
}
private void setCardInfo(Card cardInfo, View view) { private void setCardInfo(Card cardInfo, View view) {
if (cardInfo == null) return; if (cardInfo == null) return;
mCardInfo = cardInfo; mCardInfo = cardInfo;
...@@ -300,7 +388,7 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder { ...@@ -300,7 +388,7 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder {
cardImage.setOnClickListener((v) -> {showCardImageDetail(cardInfo.Code);}); cardImage.setOnClickListener((v) -> {showCardImageDetail(cardInfo.Code);});
packName.setText(packManager.findPackNameById(cardInfo.Alias != 0 ? cardInfo.Alias : cardInfo.Code)); packName.setText(packManager.findPackNameById(cardInfo.Alias != 0 ? cardInfo.Alias : cardInfo.Code));
name.setText(cardInfo.Name); name.setText(cardInfo.Name);
desc.setText(cardInfo.Name.equals("Unknown") ? context.getString(R.string.tip_card_info_diff) : cardInfo.Desc); setHighlightTextWithClickableSpans(cardInfo.Name.equals("Unknown") ? context.getString(R.string.tip_card_info_diff) : cardInfo.Desc);
cardCode.setText(String.format("%08d", cardInfo.getCode())); cardCode.setText(String.format("%08d", cardInfo.getCode()));
if (cardInfo.isType(CardType.Token)) { if (cardInfo.isType(CardType.Token)) {
faq.setVisibility(View.INVISIBLE); faq.setVisibility(View.INVISIBLE);
...@@ -573,16 +661,20 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder { ...@@ -573,16 +661,20 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder {
public interface OnFavoriteChangedListener { public interface OnFavoriteChangedListener {
void onFavoriteChange(Card card, boolean favorite); void onFavoriteChange(Card card, boolean favorite);
} }
public interface OnShowPackListListener {
void onShowPackList(Card card);
}
public interface OnDeckManagerCardClickListener { public interface OnDeckManagerCardClickListener {
void onOpenUrl(Card cardInfo); void onOpenUrl(Card cardInfo);
void onAddMainCard(Card cardInfo); void onAddMainCard(Card cardInfo);
void onAddSideCard(Card cardInfo); void onAddSideCard(Card cardInfo);
void onImageUpdate(Card cardInfo); void onImageUpdate(Card cardInfo);
void onShowPackList(Card cardInfo); void onShowPackList(Card cardInfo);
void onSearchKeyWord(String keyword);
void onClose(); void onClose();
} }
...@@ -609,6 +701,11 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder { ...@@ -609,6 +701,11 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder {
} }
@Override
public void onSearchKeyWord(String keyword) {
}
@Override @Override
public void onAddSideCard(Card cardInfo) { public void onAddSideCard(Card cardInfo) {
...@@ -620,4 +717,6 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder { ...@@ -620,4 +717,6 @@ public class CardDetail extends BaseAdapterPlus.BaseViewHolder {
} }
} }
// 定义引号类型
enum QuoteType { NONE, DOUBLE_QUOTE, ANGLE_QUOTE }
} }
...@@ -36,6 +36,7 @@ import cn.garymb.ygomobile.base.BaseFragemnt; ...@@ -36,6 +36,7 @@ import cn.garymb.ygomobile.base.BaseFragemnt;
import cn.garymb.ygomobile.core.IrrlichtBridge; import cn.garymb.ygomobile.core.IrrlichtBridge;
import cn.garymb.ygomobile.lite.R; import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.loader.CardLoader; import cn.garymb.ygomobile.loader.CardLoader;
import cn.garymb.ygomobile.loader.CardSearchInfo;
import cn.garymb.ygomobile.ui.activities.BaseActivity; import cn.garymb.ygomobile.ui.activities.BaseActivity;
import cn.garymb.ygomobile.ui.activities.WebActivity; import cn.garymb.ygomobile.ui.activities.WebActivity;
import cn.garymb.ygomobile.ui.adapters.CardListAdapter; import cn.garymb.ygomobile.ui.adapters.CardListAdapter;
...@@ -43,8 +44,6 @@ import cn.garymb.ygomobile.ui.home.HomeActivity; ...@@ -43,8 +44,6 @@ import cn.garymb.ygomobile.ui.home.HomeActivity;
import cn.garymb.ygomobile.ui.plus.AOnGestureListener; import cn.garymb.ygomobile.ui.plus.AOnGestureListener;
import cn.garymb.ygomobile.ui.plus.DialogPlus; 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.ShimmerTextView;
import cn.garymb.ygomobile.utils.YGOUtil; import cn.garymb.ygomobile.utils.YGOUtil;
import cn.garymb.ygomobile.utils.glide.GlideCompat; import cn.garymb.ygomobile.utils.glide.GlideCompat;
import ocgcore.DataManager; import ocgcore.DataManager;
...@@ -304,6 +303,11 @@ public class CardSearchFragment extends BaseFragemnt implements CardLoader.CallB ...@@ -304,6 +303,11 @@ public class CardSearchFragment extends BaseFragemnt implements CardLoader.CallB
showPackList(cardInfo); showPackList(cardInfo);
} }
@Override
public void onSearchKeyWord(String keyword) {
showSearchKeyWord(keyword);
}
@Override @Override
public void onImageUpdate(Card cardInfo) { public void onImageUpdate(Card cardInfo) {
mCardListAdapter.notifyItemChanged(cardInfo); mCardListAdapter.notifyItemChanged(cardInfo);
...@@ -341,6 +345,11 @@ public class CardSearchFragment extends BaseFragemnt implements CardLoader.CallB ...@@ -341,6 +345,11 @@ public class CardSearchFragment extends BaseFragemnt implements CardLoader.CallB
} }
} }
private void showSearchKeyWord(String keyword) {
CardSearchInfo searchInfo = new CardSearchInfo.Builder().keyword(keyword).types(new long[]{}).build();//构建CardSearchInfo时type不能为null
mCardLoader.search(searchInfo);
}
private void showPackList(Card cardInfo) { private void showPackList(Card cardInfo) {
Integer idToUse = cardInfo.Alias != 0 ? cardInfo.Alias : cardInfo.Code; Integer idToUse = cardInfo.Alias != 0 ? cardInfo.Alias : cardInfo.Code;
......
...@@ -23,7 +23,6 @@ import java.util.List; ...@@ -23,7 +23,6 @@ import java.util.List;
import cn.garymb.ygomobile.AppsSettings; import cn.garymb.ygomobile.AppsSettings;
import cn.garymb.ygomobile.lite.R; import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.loader.CardLoader;
import cn.garymb.ygomobile.loader.CardSearchInfo; import cn.garymb.ygomobile.loader.CardSearchInfo;
import cn.garymb.ygomobile.loader.ICardSearcher; import cn.garymb.ygomobile.loader.ICardSearcher;
import cn.garymb.ygomobile.ui.adapters.SimpleSpinnerAdapter; import cn.garymb.ygomobile.ui.adapters.SimpleSpinnerAdapter;
...@@ -32,7 +31,6 @@ import cn.garymb.ygomobile.ui.plus.DialogPlus; ...@@ -32,7 +31,6 @@ import cn.garymb.ygomobile.ui.plus.DialogPlus;
import cn.garymb.ygomobile.ui.plus.VUiKit; import cn.garymb.ygomobile.ui.plus.VUiKit;
import ocgcore.DataManager; import ocgcore.DataManager;
import ocgcore.LimitManager; import ocgcore.LimitManager;
import ocgcore.PackManager;
import ocgcore.StringManager; import ocgcore.StringManager;
import ocgcore.data.Card; import ocgcore.data.Card;
import ocgcore.data.CardSet; import ocgcore.data.CardSet;
...@@ -70,10 +68,9 @@ public class CardSearcher implements View.OnClickListener { ...@@ -70,10 +68,9 @@ public class CardSearcher implements View.OnClickListener {
private final Button resetButton; private final Button resetButton;
private final View view; private final View view;
private final View layout_monster; private final View layout_monster;
private final ICardSearcher dataLoader; private final ICardSearcher mICardSearcher;
private final Context mContext; private final Context mContext;
private final Button myFavButton; private final Button myFavButton;
private final ICardSearcher mCardLoader;
protected StringManager mStringManager; protected StringManager mStringManager;
protected LimitManager mLimitManager; protected LimitManager mLimitManager;
protected AppsSettings mSettings; protected AppsSettings mSettings;
...@@ -81,10 +78,10 @@ public class CardSearcher implements View.OnClickListener { ...@@ -81,10 +78,10 @@ public class CardSearcher implements View.OnClickListener {
private CallBack mCallBack; private CallBack mCallBack;
private boolean mShowFavorite; private boolean mShowFavorite;
public CardSearcher(View view, ICardSearcher dataLoader) { public CardSearcher(View view, ICardSearcher iCardSearcher) {
this.view = view; this.view = view;
this.mContext = view.getContext(); this.mContext = view.getContext();
this.dataLoader = dataLoader; this.mICardSearcher = iCardSearcher;
this.mSettings = AppsSettings.get(); this.mSettings = AppsSettings.get();
mStringManager = DataManager.get().getStringManager(); mStringManager = DataManager.get().getStringManager();
mLimitManager = DataManager.get().getLimitManager(); mLimitManager = DataManager.get().getLimitManager();
...@@ -115,7 +112,6 @@ public class CardSearcher implements View.OnClickListener { ...@@ -115,7 +112,6 @@ public class CardSearcher implements View.OnClickListener {
LinkMarkerButton.setOnClickListener(this); LinkMarkerButton.setOnClickListener(this);
searchButton.setOnClickListener(this); searchButton.setOnClickListener(this);
resetButton.setOnClickListener(this); resetButton.setOnClickListener(this);
mCardLoader = dataLoader;
//输入即时搜索 //输入即时搜索
OnEditorActionListener searchListener = (v, actionId, event) -> { OnEditorActionListener searchListener = (v, actionId, event) -> {
...@@ -289,7 +285,7 @@ public class CardSearcher implements View.OnClickListener { ...@@ -289,7 +285,7 @@ public class CardSearcher implements View.OnClickListener {
} }
if (mCallBack != null) { if (mCallBack != null) {
VUiKit.post(() -> { VUiKit.post(() -> {
mCallBack.onSearchResult(CardFavorites.get().getCards(mCardLoader), !showList); mCallBack.onSearchResult(CardFavorites.get().getCards(mICardSearcher), !showList);
}); });
} }
} }
...@@ -390,8 +386,8 @@ public class CardSearcher implements View.OnClickListener { ...@@ -390,8 +386,8 @@ public class CardSearcher implements View.OnClickListener {
int index = -1; int index = -1;
int count = mLimitManager.getCount(); int count = mLimitManager.getCount();
LimitList cur = null; LimitList cur = null;
if (dataLoader != null) { if (mICardSearcher != null) {
cur = dataLoader.getLimitList(); cur = mICardSearcher.getLimitList();
} }
items.add(new SimpleSpinnerItem(0, getString(R.string.label_limitlist))); items.add(new SimpleSpinnerItem(0, getString(R.string.label_limitlist)));
for (int i = 0; i < count; i++) { for (int i = 0; i < count; i++) {
...@@ -566,7 +562,7 @@ public class CardSearcher implements View.OnClickListener { ...@@ -566,7 +562,7 @@ public class CardSearcher implements View.OnClickListener {
} }
private void search() { private void search() {
if (dataLoader != null) { if (mICardSearcher != null) {
CardSearchInfo searchInfo = new CardSearchInfo.Builder() CardSearchInfo searchInfo = new CardSearchInfo.Builder()
.keyword(text(keyWord)) .keyword(text(keyWord))
.attribute(getIntSelect(attributeSpinner)) .attribute(getIntSelect(attributeSpinner))
...@@ -590,14 +586,14 @@ public class CardSearcher implements View.OnClickListener { ...@@ -590,14 +586,14 @@ public class CardSearcher implements View.OnClickListener {
.linkKey(lineKey) .linkKey(lineKey)
.build(); .build();
Log.i(TAG, searchInfo.toString()); Log.i(TAG, searchInfo.toString());
dataLoader.search(searchInfo); mICardSearcher.search(searchInfo);
lineKey = 0; lineKey = 0;
} }
} }
private void resetAll() { private void resetAll() {
if (dataLoader != null) { if (mICardSearcher != null) {
dataLoader.onReset(); mICardSearcher.onReset();
} }
keyWord.setText(null); keyWord.setText(null);
reset(otSpinner); reset(otSpinner);
......
...@@ -78,6 +78,7 @@ import cn.garymb.ygomobile.bean.events.DeckFile; ...@@ -78,6 +78,7 @@ import cn.garymb.ygomobile.bean.events.DeckFile;
import cn.garymb.ygomobile.core.IrrlichtBridge; import cn.garymb.ygomobile.core.IrrlichtBridge;
import cn.garymb.ygomobile.lite.R; import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.loader.CardLoader; import cn.garymb.ygomobile.loader.CardLoader;
import cn.garymb.ygomobile.loader.CardSearchInfo;
import cn.garymb.ygomobile.loader.ICardSearcher; import cn.garymb.ygomobile.loader.ICardSearcher;
import cn.garymb.ygomobile.ui.activities.BaseActivity; import cn.garymb.ygomobile.ui.activities.BaseActivity;
import cn.garymb.ygomobile.ui.activities.WebActivity; import cn.garymb.ygomobile.ui.activities.WebActivity;
...@@ -562,6 +563,11 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte ...@@ -562,6 +563,11 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
showPackList(cardInfo); showPackList(cardInfo);
} }
@Override
public void onSearchKeyWord(String keyword) {
showSearchKeyWord(keyword);//根据关键词搜索
}
@Override @Override
public void onClose() { public void onClose() {
mDialog.dismiss(); mDialog.dismiss();
...@@ -610,19 +616,18 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte ...@@ -610,19 +616,18 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
} }
} }
private void showSearchKeyWord(String keyword) {
CardSearchInfo searchInfo = new CardSearchInfo.Builder().keyword(keyword).types(new long[]{}).build();//构建CardSearchInfo时type不能为null
mCardLoader.search(searchInfo);
}
private void showPackList(Card cardInfo) { private void showPackList(Card cardInfo) {
Integer idToUse = cardInfo.Alias != 0 ? cardInfo.Alias : cardInfo.Code; Integer idToUse = cardInfo.Alias != 0 ? cardInfo.Alias : cardInfo.Code;
Log.d("seesee", "Looking for pack with ID/Alias: " + idToUse);
// 确保再次检查 PackManager 是否已经加载完成 // 确保再次检查 PackManager 是否已经加载完成
if (mPackManager == null) { if (mPackManager == null) {
Log.w("seesee", "PackManager not loaded when showing pack list.");
return; return;
} }
List<Card> packList = mPackManager.getCards(mCardLoader, idToUse); List<Card> packList = mPackManager.getCards(mCardLoader, idToUse);
Log.d("seesee", "Retrieved pack list: " + (packList == null ? "null" : packList.toString()));
if (packList != null) { if (packList != null) {
onSearchResult(packList, false); onSearchResult(packList, false);
} else { } else {
......
...@@ -117,7 +117,7 @@ public class MainActivity extends HomeActivity implements BottomNavigationBar.On ...@@ -117,7 +117,7 @@ public class MainActivity extends HomeActivity implements BottomNavigationBar.On
}); });
dialog.setOnDismissListener(dialogInterface -> { dialog.setOnDismissListener(dialogInterface -> {
DialogPlus dialogplus = new DialogPlus(this); DialogPlus dialogplus = new DialogPlus(this);
File oldypk = new File(AppsSettings.get().getExpansionsPath() + "/" + officialExCardPackageName + ".ypk"); File oldypk = new File(AppsSettings.get().getExpansionsPath() + "/" + officialExCardPackageName + Constants.YPK_FILE_EX);
if (oldypk.exists()) { if (oldypk.exists()) {
FileUtils.deleteFile(oldypk); FileUtils.deleteFile(oldypk);
dialogplus.setMessage(R.string.tip_ypk_is_deleted); dialogplus.setMessage(R.string.tip_ypk_is_deleted);
......
...@@ -4,6 +4,7 @@ import static cn.garymb.ygomobile.Constants.ASSET_SERVER_LIST; ...@@ -4,6 +4,7 @@ import static cn.garymb.ygomobile.Constants.ASSET_SERVER_LIST;
import static cn.garymb.ygomobile.Constants.URL_CN_DATAVER; import static cn.garymb.ygomobile.Constants.URL_CN_DATAVER;
import static cn.garymb.ygomobile.Constants.URL_PRE_CARD; import static cn.garymb.ygomobile.Constants.URL_PRE_CARD;
import static cn.garymb.ygomobile.Constants.URL_SUPERPRE_CN_FILE; import static cn.garymb.ygomobile.Constants.URL_SUPERPRE_CN_FILE;
import static cn.garymb.ygomobile.Constants.YDK_FILE_EX;
import static cn.garymb.ygomobile.utils.StringUtils.isHost; import static cn.garymb.ygomobile.utils.StringUtils.isHost;
import static cn.garymb.ygomobile.utils.StringUtils.isNumeric; import static cn.garymb.ygomobile.utils.StringUtils.isNumeric;
import static cn.garymb.ygomobile.utils.WebParseUtil.isValidIP; import static cn.garymb.ygomobile.utils.WebParseUtil.isValidIP;
...@@ -108,7 +109,7 @@ public class ServerUtil { ...@@ -108,7 +109,7 @@ public class ServerUtil {
* @param file * @param file
*/ */
public static void loadServerInfoFromZipOrYpk(Context context, File file) { public static void loadServerInfoFromZipOrYpk(Context context, File file) {
if (file.getName().endsWith(".zip") || file.getName().endsWith(".ypk")) { if (file.getName().endsWith(".zip") || file.getName().endsWith(YDK_FILE_EX)) {
LogUtil.e("GameUriManager", "读取压缩包"); LogUtil.e("GameUriManager", "读取压缩包");
try { try {
String serverName = null, serverDesc = null, serverHost = null, serverPort = null; String serverName = null, serverDesc = null, serverHost = null, serverPort = null;
......
...@@ -26,6 +26,7 @@ import java.util.zip.ZipInputStream; ...@@ -26,6 +26,7 @@ import java.util.zip.ZipInputStream;
import cn.garymb.ygomobile.App; import cn.garymb.ygomobile.App;
import cn.garymb.ygomobile.AppsSettings; import cn.garymb.ygomobile.AppsSettings;
import cn.garymb.ygomobile.Constants;
import cn.garymb.ygomobile.utils.IOUtils; import cn.garymb.ygomobile.utils.IOUtils;
import ocgcore.data.Card; import ocgcore.data.Card;
...@@ -151,7 +152,7 @@ public class CardManager { ...@@ -151,7 +152,7 @@ public class CardManager {
@Override @Override
public boolean accept(File dir, String name) { public boolean accept(File dir, String name) {
File file = new File(dir, name); File file = new File(dir, name);
return file.isFile() && ((name.endsWith(".cdb") || (name.endsWith(".zip") || name.endsWith(".ypk")))); return file.isFile() && ((name.endsWith(".cdb") || (name.endsWith(".zip") || name.endsWith(Constants.YPK_FILE_EX))));
} }
}); });
//读取全部卡片 //读取全部卡片
...@@ -159,7 +160,7 @@ public class CardManager { ...@@ -159,7 +160,7 @@ public class CardManager {
for (File file : files) { for (File file : files) {
if (file.getName().endsWith(".cdb")) { if (file.getName().endsWith(".cdb")) {
count = readAllCards(file, cardDataHashMap); count = readAllCards(file, cardDataHashMap);
} else if (file.getName().endsWith(".zip") || file.getName().endsWith(".ypk")) { } else if (file.getName().endsWith(".zip") || file.getName().endsWith(Constants.YPK_FILE_EX)) {
Log.e("CardManager", "读取压缩包"); Log.e("CardManager", "读取压缩包");
try { try {
for (File file1 : readZipCdb(file.getAbsolutePath())) { for (File file1 : readZipCdb(file.getAbsolutePath())) {
......
...@@ -72,8 +72,8 @@ public class PackManager implements Closeable { ...@@ -72,8 +72,8 @@ public class PackManager implements Closeable {
} }
return packList; return packList;
}).done((list) -> { }).done((list) -> {
Log.i(TAG, "Loaded " + list.size() + " files."); Log.i(TAG, "pack: Loaded " + list.size() + " files.");
Log.i(TAG, toString()); // 在异步任务完成后打印packList //Log.i(TAG, toString()); // 在异步任务完成后打印packList
}).fail((error) -> { }).fail((error) -> {
Log.e(TAG, "Error loading files: " + error.getMessage()); Log.e(TAG, "Error loading files: " + error.getMessage());
}); });
......
...@@ -61,7 +61,7 @@ public class StringManager implements Closeable { ...@@ -61,7 +61,7 @@ public class StringManager implements Closeable {
File[] files = AppsSettings.get().getExpansionsPath().listFiles(); File[] files = AppsSettings.get().getExpansionsPath().listFiles();
if (files != null) { if (files != null) {
for (File file : files) { for (File file : files) {
if (file.isFile() && (file.getName().endsWith(".zip") || file.getName().endsWith(".ypk"))) { if (file.isFile() && (file.getName().endsWith(".zip") || file.getName().endsWith(Constants.YPK_FILE_EX))) {
Log.e("StringManager", "读取压缩包"); Log.e("StringManager", "读取压缩包");
try { try {
ZipFile zipFile = new ZipFile(file.getAbsoluteFile(), "GBK"); ZipFile zipFile = new ZipFile(file.getAbsoluteFile(), "GBK");
......
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