Commit 19aa0720 authored by feihuaduo's avatar feihuaduo

删除崩溃的问题

先行卡卡包会消失的问题
parent edcfca4d
...@@ -652,7 +652,10 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView ...@@ -652,7 +652,10 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView
} }
break; break;
case R.id.action_delete_deck: { case R.id.action_delete_deck: {
if (mDeckAdapater.getYdkFile().getParent().equals(mSettings.getAiDeckDir())) { File ydk = mDeckAdapater.getYdkFile();
if (ydk == null)
return true;
if (ydk.getParent().equals(mSettings.getAiDeckDir())) {
Toast.makeText(this, R.string.donot_editor_bot_Deck, Toast.LENGTH_SHORT).show(); Toast.makeText(this, R.string.donot_editor_bot_Deck, Toast.LENGTH_SHORT).show();
} else { } else {
DialogPlus builder = new DialogPlus(this); DialogPlus builder = new DialogPlus(this);
...@@ -660,15 +663,16 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView ...@@ -660,15 +663,16 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView
builder.setMessage(R.string.question_delete_deck); builder.setMessage(R.string.question_delete_deck);
builder.setMessageGravity(Gravity.CENTER_HORIZONTAL); builder.setMessageGravity(Gravity.CENTER_HORIZONTAL);
builder.setLeftButtonListener((dlg, rs) -> { builder.setLeftButtonListener((dlg, rs) -> {
File ydk = mDeckAdapater.getYdkFile();
if (ydk == null) { if (ydk != null) {
FileUtils.deleteFile(ydk);
dlg.dismiss();
File file = getFirstYdk();
initDecksListSpinners(mDeckSpinner, file);
loadDeckFromFile(file);
} else {
return; return;
} }
FileUtils.deleteFile(ydk);
dlg.dismiss();
File file = getFirstYdk();
initDecksListSpinners(mDeckSpinner, file);
loadDeckFromFile(file);
}); });
builder.show(); builder.show();
} }
...@@ -1092,7 +1096,10 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView ...@@ -1092,7 +1096,10 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView
@Override @Override
public void onDeckDel(List<DeckFile> deckFileList) { public void onDeckDel(List<DeckFile> deckFileList) {
String currentDeckPath = mDeckAdapater.getYdkFile().getAbsolutePath(); File deck = mDeckAdapater.getYdkFile();
if (deck == null)
return;
String currentDeckPath = deck.getAbsolutePath();
for (DeckFile deckFile : deckFileList) { for (DeckFile deckFile : deckFileList) {
if (deckFile.getPath().equals(currentDeckPath)) { if (deckFile.getPath().equals(currentDeckPath)) {
List<File> files = getYdkFiles(); List<File> files = getYdkFiles();
......
...@@ -167,10 +167,11 @@ public class IOUtils { ...@@ -167,10 +167,11 @@ public class IOUtils {
dir.mkdirs(); dir.mkdirs();
} }
} }
public static void createFolder(File file) { public static boolean createFolder(File file) {
if (!file.exists()) { if (!file.exists()) {
file.mkdirs(); return file.mkdirs();
} }
return false;
} }
public static void copy(InputStream in, OutputStream out) throws IOException { public static void copy(InputStream in, OutputStream out) throws IOException {
......
...@@ -77,29 +77,40 @@ public class YGODialogUtil { ...@@ -77,29 +77,40 @@ public class YGODialogUtil {
int typeSelectPosition = 2; int typeSelectPosition = 2;
int deckSelectPosition = -1; int deckSelectPosition = -1;
List<DeckFile> deckList; List<DeckFile> deckList;
if (selectDeckPath != null) { if (!TextUtils.isEmpty(selectDeckPath)) {
String name = new File(selectDeckPath).getParentFile().getName(); File file = new File(selectDeckPath);
if (name.equals("pack") || name.equals("cacheDeck")) { if (file.exists()) {
//卡包 String name = file.getParentFile().getName();
typeSelectPosition = 0; if (name.equals("pack") || name.equals("cacheDeck")) {
} else if (name.equals("Decks")) { //卡包
//ai卡组 typeSelectPosition = 0;
typeSelectPosition = 1; } else if (name.equals("Decks")) {
} else if (name.equals("deck") && new File(selectDeckPath).getParentFile().getParentFile().getName().equals(Constants.PREF_DEF_GAME_DIR)) { //ai卡组
//如果是deck并且上一个目录是ygocore的话,保证不会把名字为deck的卡包识别为未分类 typeSelectPosition = 1;
typeSelectPosition = 2; } else if (name.equals("deck") && new File(selectDeckPath).getParentFile().getParentFile().getName().equals(Constants.PREF_DEF_GAME_DIR)) {
} else { //如果是deck并且上一个目录是ygocore的话,保证不会把名字为deck的卡包识别为未分类
//其他卡包 } else {
for (int i = 3; i < typeList.size(); i++) { //其他卡包
DeckType deckType = typeList.get(i); for (int i = 3; i < typeList.size(); i++) {
if (deckType.getName().equals(name)) { DeckType deckType = typeList.get(i);
typeSelectPosition = i; if (deckType.getName().equals(name)) {
break; typeSelectPosition = i;
break;
}
} }
} }
} }
} }
deckList = DeckUtil.getDeckList(typeList.get(typeSelectPosition).getPath()); deckList = DeckUtil.getDeckList(typeList.get(typeSelectPosition).getPath());
if (typeSelectPosition == 0) {
if (AppsSettings.get().isReadExpansions()) {
try {
deckList.addAll(DeckUtil.getExpansionsDeckList());
} catch (IOException e) {
YGOUtil.show("额外卡库加载失败,愿意为" + e);
}
}
}
typeAdp = new TextSelectAdapter<>(typeList, typeSelectPosition); typeAdp = new TextSelectAdapter<>(typeList, typeSelectPosition);
deckAdp = new TextSelectAdapter<>(deckList, deckSelectPosition); deckAdp = new TextSelectAdapter<>(deckList, deckSelectPosition);
rv_type.setAdapter(typeAdp); rv_type.setAdapter(typeAdp);
...@@ -163,6 +174,9 @@ public class YGODialogUtil { ...@@ -163,6 +174,9 @@ public class YGODialogUtil {
du.dis(); du.dis();
switch (position) { switch (position) {
case 0: case 0:
if (deckList.size()>=8){
YGOUtil.show("最多只能有5个自定义分类");
}
DialogPlus builder = new DialogPlus(context); DialogPlus builder = new DialogPlus(context);
builder.setTitle(R.string.please_input_category_name); builder.setTitle(R.string.please_input_category_name);
EditText editText = new EditText(context); EditText editText = new EditText(context);
...@@ -180,10 +194,14 @@ public class YGODialogUtil { ...@@ -180,10 +194,14 @@ public class YGODialogUtil {
return; return;
} }
File file = new File(AppsSettings.get().getDeckDir(), name); File file = new File(AppsSettings.get().getDeckDir(), name);
IOUtils.createFolder(file); if (IOUtils.createFolder(file)) {
typeList.add(new DeckType(name, file.getAbsolutePath())); typeList.add(new DeckType(name, file.getAbsolutePath()));
typeAdp.notifyItemInserted(typeList.size() - 1); typeAdp.notifyItemInserted(typeList.size() - 1);
dlg.dismiss(); dlg.dismiss();
} else {
YGOUtil.show("新建分类失败");
}
}); });
builder.show(); builder.show();
break; break;
......
...@@ -9,6 +9,8 @@ ...@@ -9,6 +9,8 @@
android:orientation="vertical"> android:orientation="vertical">
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
android:lines="1"
android:ellipsize="end"
android:gravity="center" android:gravity="center"
android:textColor="@color/white" android:textColor="@color/white"
android:id="@+id/tv_name" android:id="@+id/tv_name"
......
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