Commit 330a3543 authored by fallenstardust's avatar fallenstardust

竖屏卡组删除搜索结果的禁卡表控制功能,统一在筛选条件的禁卡表选择上进行切换

添加禁卡表选择点击监听:每次重新刷新禁卡表以便新导入的禁卡表可以被读取
DataManager每次都强制重读配置文本
parent 348adfe4
......@@ -245,7 +245,7 @@ public class GameUriManager {
activity.startActivity(startSetting);//todo ??再次打开MainActivity?
YGOUtil.showTextToast(activity.getString(R.string.start_game_error), Toast.LENGTH_LONG);
} else {
DataManager.get().load(true);
DataManager.get().load();
YGOUtil.showTextToast(activity.getString(R.string.ypk_installed), Toast.LENGTH_LONG);
loadServerInfoFromZipOrYpk(getActivity(), file);
//ypk不与excard机制相干涉
......@@ -266,7 +266,7 @@ public class GameUriManager {
Log.w(Constants.TAG, "game is running");
}
} else if (isConf) {
DataManager.get().load(true);
DataManager.get().load();
YGOUtil.showTextToast(activity.getString(R.string.restart_app), Toast.LENGTH_LONG);
}
} else {
......
......@@ -218,7 +218,7 @@ public class ExCardListFragment extends Fragment {
SharedPreferenceUtil.setExpansionDataVer(ServerUtil.serverExCardVersion);
ServerUtil.exCardState = ServerUtil.ExCardState.UPDATED;
EventBus.getDefault().postSticky(new ExCardEvent(ExCardEvent.EventType.exCardPackageChange));//安装后,通知UI做更新
DataManager.get().load(true);
DataManager.get().load();
YGOUtil.showTextToast(getString(R.string.ypk_installed));
......
......@@ -88,7 +88,7 @@ public class WebActivity extends BaseActivity implements View.OnClickListener, O
YGOUtil.showTextToast(Gravity.TOP, getString(R.string.tip_download_OK) + getString(R.string.replay_list), Toast.LENGTH_SHORT);
} else if (msg.obj.toString().endsWith(Constants.YPK_FILE_EX) || msg.obj.toString().endsWith(Constants.CORE_LIMIT_PATH)) {
YGOUtil.showTextToast(Gravity.TOP, getString(R.string.ypk_installed) + getString(R.string.restart_app), Toast.LENGTH_SHORT);
DataManager.get().load(true);
DataManager.get().load();
} else {
YGOUtil.showTextToast(Gravity.TOP, getString(R.string.tip_download_OK) + AppsSettings.get().getResourcePath(), Toast.LENGTH_LONG);
}
......
......@@ -107,7 +107,7 @@ public class CardSearchFragment extends BaseFragemnt implements CardLoader.CallB
setListeners();
DialogPlus dlg = DialogPlus.show(getContext(), null, getString(R.string.loading));
VUiKit.defer().when(() -> {
DataManager.get().load(true);
DataManager.get().load();
if (activity.getmLimitManager().getCount() > 0) {
mCardLoader.setLimitList(activity.getmLimitManager().getTopLimit());
}
......
......@@ -13,7 +13,6 @@ import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.Spinner;
import android.widget.TextView.OnEditorActionListener;
......@@ -126,7 +125,7 @@ public class CardSearcher implements View.OnClickListener {
};
keyWord.setOnEditorActionListener(searchListener);
chk_multi_keyword.setChecked(mSettings.getKeyWordsSplit() == 0 ? false : true);
chk_multi_keyword.setChecked(mSettings.getKeyWordsSplit() != 0);
chk_multi_keyword.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
......
......@@ -167,7 +167,7 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
private TextView tv_credit_count;
private TextView tv_credit_limit;
private TextView tv_credit_remain;
private AppCompatSpinner mLimitSpinner;
private AppCompatSpinner mCardSearchLimitSpinner;
private CardDetail mCardDetail;
private DialogPlus mDialog;
private DialogPlus builderShareLoading;
......@@ -261,9 +261,9 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
tv_deck = layoutView.findViewById(R.id.tv_deck);
tv_result_count = layoutView.findViewById(R.id.result_count);
// 初始化限制条件选择下拉框并设置背景颜色
mLimitSpinner = layoutView.findViewById(R.id.sp_limit_list);
mLimitSpinner.setPopupBackgroundResource(R.color.colorNavy);
// 初始化右侧抽屉的条件搜索禁卡表下拉框并设置背景颜色
mCardSearchLimitSpinner = layoutView.findViewById(R.id.nav_view_list).findViewById(R.id.sp_limit_list);
mCardSearchLimitSpinner.setPopupBackgroundResource(R.color.colorNavy);
// 初始化网格形式的卡组显示区域
mRecyclerView = layoutView.findViewById(R.id.grid_cards);
......@@ -631,7 +631,7 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
VUiKit.defer().when(() -> {
// 加载数据管理器
DataManager.get().load(true);
DataManager.get().load();
// 设置限制卡表列表,使用第一个可用的限制列表
if (activity.getmLimitManager().getCount() > 0) {
......@@ -643,7 +643,7 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
if (file == null || !file.exists()) {
// 当默认卡组不存在的时候,尝试获取其他可用的ydk文件
List<File> files = getYdkFiles();
if (files != null && files.size() > 0) {
if (files != null && !files.isEmpty()) {
file = files.get(0);
}
}
......@@ -666,7 +666,7 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
isLoad = true;
dlg.dismiss();
mCardSearcher.initItems();
initLimitListSpinners(mLimitSpinner, mCardLoader.getLimitList());
initLimitListSpinners(mCardSearchLimitSpinner, mCardLoader.getLimitList());
// 根据资源路径判断是否进入卡包展示模式
if (rs != null && rs.source != null) {
String parentPath = rs.source.getParent();
......@@ -836,7 +836,7 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
private void refreshDeckCreditCount() {
LimitList limitList = mDeckAdapater.getLimitList();
int currentCredit = 0 ;
int currentCredit = 0;
int creditLimit = 0;
int difference = 0;
// 检查是否有有效的信用分限制
......@@ -1612,6 +1612,12 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
* @param cur 当前选中的限制列表对象,用于设置默认选中项
*/
private void initLimitListSpinners(Spinner spinner, LimitList cur) {
// 首先清除所有现有的item
if (spinner.getAdapter() != null && spinner.getAdapter() instanceof SimpleSpinnerAdapter) {
((SimpleSpinnerAdapter) spinner.getAdapter()).clear();
DataManager.get().getLimitManager().load();
}
List<SimpleSpinnerItem> items = new ArrayList<>();
List<String> limitLists = activity.getmLimitManager().getLimitNames();
int index = -1;
......@@ -1624,6 +1630,7 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
for (int i = 0; i < count; i++) {
int j = i + 1;
String name = limitLists.get(i);
LogUtil.w(TAG, i + ":" +"卡表名称:" + name);
items.add(new SimpleSpinnerItem(j, name));
if (cur != null && TextUtils.equals(cur.getName(), name)) {
index = j;
......@@ -1653,6 +1660,16 @@ public class DeckManagerFragment extends BaseFragemnt implements RecyclerViewIte
}
});
spinner.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
// 重新初始化spinner
initLimitListSpinners(spinner, cur);
}
return false;
}
});
}
/**
......
......@@ -27,6 +27,8 @@ import android.os.Message;
import android.text.TextUtils;
import android.util.Log;
import androidx.annotation.NonNull;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
......@@ -60,7 +62,7 @@ public class ResCheckTask extends AsyncTask<Void, Integer, Integer> {
Handler han = new Handler() {
@Override
public void handleMessage(Message msg) {
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case 0:
......@@ -421,7 +423,7 @@ public class ResCheckTask extends AsyncTask<Void, Integer, Integer> {
private void loadData() {
setMessage(mContext.getString(R.string.loading));
DataManager.get().load(false);
DataManager.get().load();
}
void copyCdbFile(String assetPath, boolean needsUpdate) throws IOException {
......@@ -521,7 +523,7 @@ public class ResCheckTask extends AsyncTask<Void, Integer, Integer> {
mSettings.getDataBasePath() + "/" + DATABASE_NAME,
mSettings.getResourcePath() + "/" + CORE_BOT_CONF_PATH);
} catch (Throwable e) {
e.printStackTrace();
LogUtil.e(TAG, "init windbot error " + e.getMessage());
}
IntentFilter filter = new IntentFilter();
filter.addAction("RUN_WINDBOT");
......
......@@ -116,7 +116,7 @@ public class MycardFragment extends BaseFragemnt implements View.OnClickListener
YGOUtil.showTextToast(Gravity.TOP, getString(R.string.tip_download_OK) + getString(R.string.replay_list), Toast.LENGTH_SHORT);
} else if (msg.obj.toString().endsWith(Constants.YPK_FILE_EX) || msg.obj.toString().endsWith(Constants.CORE_LIMIT_PATH)) {
YGOUtil.showTextToast(Gravity.TOP, getString(R.string.ypk_installed) + getString(R.string.restart_app), Toast.LENGTH_SHORT);
DataManager.get().load(true);
DataManager.get().load();
} else {
YGOUtil.showTextToast(Gravity.TOP, getString(R.string.tip_download_OK) + AppsSettings.get().getResourcePath(), Toast.LENGTH_LONG);
}
......
......@@ -196,7 +196,7 @@ public class SettingFragment extends PreferenceFragmentPlus {
//如果是设置额外卡库的选项
if (preference.getKey().equals(PREF_READ_EX)) {
//设置使用额外卡库后重新加载卡片数据
DataManager.get().load(true);
DataManager.get().load();
EventBus.getDefault().postSticky(new ExCardEvent(ExCardEvent.EventType.exCardPrefChange));
//ServerUtil.initExCardState();
}
......@@ -258,7 +258,7 @@ public class SettingFragment extends PreferenceFragmentPlus {
}
mSettings.setDataLanguage(Integer.valueOf(listPreference.getValue()));
YGOUtil.showTextToast(R.string.restart_app, Toast.LENGTH_LONG);
DataManager.get().load(true);
DataManager.get().load();
}
mSharedPreferences.edit().putString(preference.getKey(), listPreference.getValue()).apply();
} else {
......@@ -334,7 +334,7 @@ public class SettingFragment extends PreferenceFragmentPlus {
simpleListAdapter.remove(pos);
simpleListAdapter.notifyDataSetChanged();
FileUtils.delFile(mSettings.getExpansionsPath().getAbsolutePath() + "/" + name);
DataManager.get().load(true);
DataManager.get().load();
YGOUtil.showTextToast(R.string.done, Toast.LENGTH_LONG);
if (name.contains(Constants.officialExCardPackageName)) {//如果删除的是官方先行卡ypk,则更新其相关UI状态
SharedPreferenceUtil.setExpansionDataVer(null);//删除先行卡后,更新版本状态
......
......@@ -48,11 +48,11 @@ public class DataManager {
}
private boolean mInit;
public void load(boolean force) {
public void load() {
//LogUtil.i("webCrawler", "DataManager load data");
boolean needLoad = false;
synchronized (this) {
if (!mInit || force) {
if (!mInit) {
needLoad = true;
}
mInit = true;
......
......@@ -77,6 +77,9 @@ public class LimitManager implements Closeable {
* @return boolean 加载成功返回true,否则返回false
*/
public boolean load() {
// 清理旧数据,不让缓存干扰读取结果
mLimitLists.clear();
mLimitNames.clear();
// 创建主资源路径下的限制文件对象
File stringFile = new File(AppsSettings.get().getResourcePath(), Constants.CORE_LIMIT_PATH);
boolean rs1 = true;
......@@ -104,7 +107,7 @@ public class LimitManager implements Closeable {
}
}
} catch (IOException e) {
e.printStackTrace();
LogUtil.e("LimitManager", "读取压缩包失败", e);
res3 = false;
}
}
......@@ -116,6 +119,7 @@ public class LimitManager implements Closeable {
mLimitLists.put("N/A", blank_list);
mLimitNames.add("N/A");
++mCount;
Log.e("加载情况","rs1="+rs1+" rs2="+rs2+" res3="+res3);
return rs1 && rs2 && res3;
}
......@@ -194,6 +198,7 @@ public class LimitManager implements Closeable {
// 更新限制列表计数
mCount = mLimitLists.size();
Log.e("LimitManager", "限制列表数量:" + mCount);
return true;
}
......
......@@ -418,21 +418,6 @@
android:orientation="horizontal"
android:paddingLeft="10dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/label_limitlist"
android:textColor="@color/holo_blue_light" />
<androidx.appcompat.widget.AppCompatSpinner
android:id="@+id/sp_limit_list"
android:layout_width="wrap_content"
android:layout_height="@dimen/item_height"
android:layout_weight="1"
android:ellipsize="end"
android:gravity="fill_horizontal" />
<TextView
android:id="@+id/result_count"
android:layout_width="wrap_content"
......
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