Commit 2d63379e authored by k's avatar k

非deck的卡组

parent 18dcc571
package cn.garymb.ygomobile.bean;
import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
......@@ -23,6 +24,8 @@ public class DeckInfo {
private final List<Card> extraCards;
private final List<Card> sideCards;
public File source;
private int mainCount, extraCount, sideCount;
public DeckInfo() {
......
......@@ -26,6 +26,9 @@ public class DeckLoader {
try {
inputStream = new FileInputStream(file);
deckInfo = readDeck(cardLoader, inputStream, limitList);
if(deckInfo != null){
deckInfo.source = file;
}
} catch (Exception e) {
Log.e("deckreader", "read 1", e);
} finally {
......@@ -34,7 +37,7 @@ public class DeckLoader {
return deckInfo;
}
public static DeckInfo readDeck(CardLoader cardLoader, InputStream inputStream, LimitList limitList) {
private static DeckInfo readDeck(CardLoader cardLoader, InputStream inputStream, LimitList limitList) {
Deck deck = new Deck();
SparseArray<Integer> mIds = new SparseArray<>();
InputStreamReader in = null;
......
......@@ -42,6 +42,7 @@ import org.greenrobot.eventbus.ThreadMode;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
......@@ -79,6 +80,7 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView
private AppsSettings mSettings = AppsSettings.get();
private LimitList mLimitList;
private File mYdkFile;
private File mPreLoadFile;
private DeckItemTouchHelper mDeckItemTouchHelper;
private AppCompatSpinner mDeckSpinner;
private SimpleSpinnerAdapter mSimpleSpinnerAdapter;
......@@ -133,27 +135,33 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView
});
//
DialogPlus dlg = DialogPlus.show(this, null, getString(R.string.loading));
final File _file;
if (!TextUtils.isEmpty(mPreLoad)) {
mPreLoadFile = new File(mPreLoad);
_file = mPreLoadFile;
mPreLoad = null;
} else {
_file = new File(mSettings.getResourcePath(), Constants.CORE_DECK_PATH + "/" + mSettings.getLastDeck() + Constants.YDK_FILE_EX);
}
VUiKit.defer().when(() -> {
DataManager.get().load(false);
if (mLimitManager.getCount() > 0) {
mCardLoader.setLimitList(mLimitManager.getTopLimit());
}
File file = new File(mSettings.getResourcePath(), Constants.CORE_DECK_PATH + "/" + mSettings.getLastDeck() + Constants.YDK_FILE_EX);
if (!TextUtils.isEmpty(mPreLoad)) {
file = new File(mPreLoad);
mPreLoad = null;
}
File file = _file;
if (!file.exists()) {
//当默认卡组不存在的时候
File[] files = getYdkFiles();
if (files != null && files.length > 0) {
file = files[0];
List<File> files = getYdkFiles();
if (files != null && files.size() > 0) {
file = files.get(0);
}
}
//EXTRA_DECK
if (file == null) {
return new DeckInfo();
}
Log.i("kk", "load ydk " + file);
mYdkFile = file;
if (mCardLoader.isOpen() && mYdkFile.exists()) {
return mDeckAdapater.read(mCardLoader, mYdkFile, mLimitList);
......@@ -166,7 +174,7 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView
mCardSelector.initItems();
mLimitList = mCardLoader.getLimitList();
isLoad = true;
setCurYdkFile(mYdkFile, false);
setCurYdkFile(rs.source, false);
initLimitListSpinners(mLimitSpinner);
initDecksListSpinners(mDeckSpinner);
mDeckAdapater.setDeck(rs);
......@@ -181,18 +189,6 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView
super.onDestroy();
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
if (getIntent().hasExtra(Intent.EXTRA_TEXT)) {
String path = getIntent().getStringExtra(Intent.EXTRA_TEXT);
if (!TextUtils.isEmpty(path)) {
mPreLoad = path;
loadDeck(new File(path));
}
}
}
@Override
public void onLimitListChanged(LimitList limitList) {
......@@ -604,8 +600,19 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView
save();
}
break;
// case R.id.action_save_as:
// if (mYdkFile == null) {
// inputDeckName(null);
// } else {
// inputDeckName(mYdkFile.getName());
// }
// break;
case R.id.action_rename:
inputDeckName(null);
if (mYdkFile == null) {
inputDeckName(null);
} else {
inputDeckName(mYdkFile.getName());
}
break;
case R.id.action_deck_new: {
final String old = mYdkFile == null ? null : mYdkFile.getAbsolutePath();
......@@ -684,7 +691,7 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView
mRecyclerView.buildDrawingCache();
//获取绘图缓存 这里直接创建了一个新的bitmap
//因为我们在最后需要释放缓存资源,会释放掉缓存中创建的bitmap对象
Bitmap bitmap =BitmapUtil.drawBg4Bitmap(Color.parseColor("#e6f3fd"), Bitmap.createBitmap(mRecyclerView.getDrawingCache(), 0, 0, mRecyclerView.getMeasuredWidth(),
Bitmap bitmap = BitmapUtil.drawBg4Bitmap(Color.parseColor("#e6f3fd"), Bitmap.createBitmap(mRecyclerView.getDrawingCache(), 0, 0, mRecyclerView.getMeasuredWidth(),
mRecyclerView.getMeasuredHeight()));
//清理绘图缓存,释放资源
......@@ -692,14 +699,14 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView
// shotRecyclerView(mRecyclerView)
Deck deck = mDeckAdapater.toDeck(mYdkFile);
String deckName=deck.getName();
int end=deckName.lastIndexOf(".");
if (end!=-1){
deckName=deckName.substring(0,end);
String deckName = deck.getName();
int end = deckName.lastIndexOf(".");
if (end != -1) {
deckName = deckName.substring(0, end);
}
String savePath=new File(AppsSettings.get().getDeckSharePath(),deckName+".jpg").getAbsolutePath();
BitmapUtil.saveBitmap(bitmap,savePath,50);
ShareUtil.shareImage(DeckManagerActivityImpl.this,"卡组分享",savePath,null);
String savePath = new File(AppsSettings.get().getDeckSharePath(), deckName + ".jpg").getAbsolutePath();
BitmapUtil.saveBitmap(bitmap, savePath, 50);
ShareUtil.shareImage(DeckManagerActivityImpl.this, "卡组分享", savePath, null);
// String label = TextUtils.isEmpty(deck.getName()) ? getString(R.string.share_deck) : deck.getName();
......@@ -737,16 +744,32 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView
// return null;
// }
private File[] getYdkFiles() {
private List<File> getYdkFiles() {
File dir = new File(mSettings.getResourcePath(), Constants.CORE_DECK_PATH);
File[] files = dir.listFiles((file, s) -> {
return s.toLowerCase(Locale.US).endsWith(Constants.YDK_FILE_EX);
});
return files;
if (files != null) {
List<File> list = new ArrayList<>(Arrays.asList(files));
if (mPreLoadFile != null) {
boolean hasCur = false;
for (File f : list) {
if (TextUtils.equals(f.getAbsolutePath(), mPreLoadFile.getAbsolutePath())) {
hasCur = true;
break;
}
}
if (!hasCur) {
list.add(mPreLoadFile);
}
}
return list;
}
return null;
}
private void initDecksListSpinners(Spinner spinner) {
File[] files = getYdkFiles();
List<File> files = getYdkFiles();
List<SimpleSpinnerItem> items = new ArrayList<>();
String name = mYdkFile != null ? mYdkFile.getName() : null;
int index = -1;
......@@ -850,9 +873,6 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView
editText.setGravity(Gravity.TOP | Gravity.LEFT);
editText.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
editText.setSingleLine();
if (mYdkFile != null) {
editText.setText(mYdkFile.getName());
}
builder.setContentView(editText);
builder.setOnCloseLinster((dlg) -> {
dlg.dismiss();
......@@ -872,7 +892,7 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView
showToast(R.string.file_exist, Toast.LENGTH_SHORT);
return;
}
if (mYdkFile != null && mYdkFile.exists()) {
if ( mYdkFile != null && mYdkFile.exists()) {
if (mYdkFile.renameTo(ydk)) {
mYdkFile = ydk;
initDecksListSpinners(mDeckSpinner);
......@@ -908,8 +928,8 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView
private void initBoomMenuButton(BoomMenuButton menu) {
final SparseArray<Integer> mMenuIds = new SparseArray<>();
// addMenuButton(mMenuIds, menu, R.id.action_card_search, R.string.deck_list, R.drawable.listicon);
addMenuButton(mMenuIds,menu,R.id.action_share_deck,R.string.share_deck,R.drawable.listicon);
// addMenuButton(mMenuIds, menu, R.id.action_card_search, R.string.deck_list, R.drawable.listicon);
addMenuButton(mMenuIds, menu, R.id.action_share_deck, R.string.share_deck, R.drawable.listicon);
addMenuButton(mMenuIds, menu, R.id.action_save, R.string.save_deck, R.drawable.save);
addMenuButton(mMenuIds, menu, R.id.action_clear_deck, R.string.clear_deck, R.drawable.clear_deck);
......
......@@ -38,6 +38,11 @@
android:id="@+id/action_save"
android:icon="@drawable/ic_mode_save_white"
android:title="@string/save_deck"/>
<!-- <item
android:id="@+id/action_save_as"
android:icon="@drawable/ic_mode_save_white"
android:title="@string/save_as_deck"/>-->
<!--<item
android:id="@+id/action_share_deck"
android:icon="@drawable/ic_refresh"
......
......@@ -132,6 +132,7 @@
<string name="rename_deck">이름변경</string>
<string name="delete_deck">삭제</string>
<string name="save_deck">덱저장</string>
<string name="save_as_deck">Deck save as</string>
<string name="deck_list">덱 리스트</string>
<string name="loading">로딩중..."</string>
<string name="tip">정보</string>
......
......@@ -132,6 +132,7 @@
<string name="rename_deck">重命名</string>
<string name="delete_deck">删除</string>
<string name="save_deck">保存</string>
<string name="save_as_deck">另存为</string>
<string name="deck_list">卡组列表</string>
<string name="loading">加载中..."</string>
<string name="tip">提示</string>
......
......@@ -124,6 +124,7 @@
<string name="rename_deck">Rename</string>
<string name="delete_deck">Delete</string>
<string name="save_deck">Save Deck</string>
<string name="save_as_deck">Deck save as</string>
<string name="deck_list">Deck List</string>
<string name="card_add_main">+Main Deck</string>
<string name="card_add_side">+Side Deck</string>
......
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