Commit 4ae7246f authored by fallenstardust's avatar fallenstardust
parents 26609a03 056b7d36
...@@ -31,7 +31,7 @@ public class Deck implements Parcelable { ...@@ -31,7 +31,7 @@ public class Deck implements Parcelable {
sideList = new ArrayList<>(); sideList = new ArrayList<>();
} }
public Deck(String name,Uri uri){ public Deck(String name, Uri uri) {
this(name); this(name);
String main = uri.getQueryParameter(QUERY_MAIN); String main = uri.getQueryParameter(QUERY_MAIN);
String extra = uri.getQueryParameter(QUERY_EXTRA); String extra = uri.getQueryParameter(QUERY_EXTRA);
...@@ -39,34 +39,56 @@ public class Deck implements Parcelable { ...@@ -39,34 +39,56 @@ public class Deck implements Parcelable {
if (!TextUtils.isEmpty(main)) { if (!TextUtils.isEmpty(main)) {
String[] mains = main.split(","); String[] mains = main.split(",");
for (String m : mains) { for (String m : mains) {
int id = toId(m); int []idNum=toIdAndNum(m);
if (id > 0) { if (idNum[0] > 0) {
mainlist.add(id); for (int i=0;i<idNum[1];i++){
mainlist.add(idNum[0]);
}
} }
} }
} }
if (!TextUtils.isEmpty(extra)) { if (!TextUtils.isEmpty(extra)) {
String[] extras = extra.split(","); String[] extras = extra.split(",");
for (String m : extras) { for (String m : extras) {
int id = toId(m); int []idNum=toIdAndNum(m);
if (id > 0) { if (idNum[0] > 0) {
extraList.add(id); for (int i=0;i<idNum[1];i++){
extraList.add(idNum[0]);
}
} }
} }
} }
if (!TextUtils.isEmpty(side)) { if (!TextUtils.isEmpty(side)) {
String[] sides = side.split(","); String[] sides = side.split(",");
for (String m : sides) { for (String m : sides) {
int id = toId(m); int []idNum=toIdAndNum(m);
if (id > 0) { if (idNum[0] > 0) {
sideList.add(id); for (int i=0;i<idNum[1];i++){
sideList.add(idNum[0]);
}
} }
} }
} }
} }
private int[] toIdAndNum(String m) {
int[] idNum={0,1};
if (m.contains("*")){
try{
idNum[1]=Integer.parseInt(m.substring(m.length()-1));
}catch (Exception e){
}
idNum[0]=toId(m.substring(0,m.length()-2));
}else {
idNum[0]=toId(m);
}
return idNum;
}
public Deck(Uri uri) { public Deck(Uri uri) {
this(uri.getQueryParameter(QUERY_YDK),uri); this(uri.getQueryParameter(QUERY_YDK), uri);
} }
public Uri toAppUri() { public Uri toAppUri() {
...@@ -93,15 +115,38 @@ public class Deck implements Parcelable { ...@@ -93,15 +115,38 @@ public class Deck implements Parcelable {
private String toString(List<Integer> ids) { private String toString(List<Integer> ids) {
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
int i = 0; for (int i = 0; i < ids.size(); i++) {
for (Integer id : ids) { Integer id = ids.get(i);
if (i > 0) { if (i > 0) {
builder.append(","); builder.append(",");
} }
if (id > 0) { if (id > 0) {
builder.append(id); builder.append(id);
//如果是最后一张就不用对比下张卡
if(i!=ids.size()-1) {
int id1 = ids.get(i + 1);
//同名卡张数
int tNum = 1;
//如果下张是同名卡
if (id1 == id) {
tNum++;
//如果是倒数第二张就不用对比下下张卡
if(i!=ids.size()-2) {
id1 = ids.get(i + 2);
//如果下下张是同名卡
if (id1 == id) {
tNum++;
i++;
}
}
i++; i++;
} }
//如果有同名卡
if (tNum > 1) {
builder.append("*" + tNum);
}
}
}
} }
return builder.toString(); return builder.toString();
} }
......
...@@ -7,6 +7,7 @@ import android.graphics.Bitmap; ...@@ -7,6 +7,7 @@ import android.graphics.Bitmap;
import android.graphics.Color; import android.graphics.Color;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.support.v7.widget.AppCompatSpinner; import android.support.v7.widget.AppCompatSpinner;
import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView;
...@@ -88,6 +89,7 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView ...@@ -88,6 +89,7 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView
private AppCompatSpinner mLimitSpinner; private AppCompatSpinner mLimitSpinner;
private CardDetail mCardDetail; private CardDetail mCardDetail;
private DialogPlus mDialog; private DialogPlus mDialog;
private DialogPlus builderShareLoading;
@Override @Override
protected void onCreate(@Nullable Bundle savedInstanceState) { protected void onCreate(@Nullable Bundle savedInstanceState) {
...@@ -586,10 +588,10 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView ...@@ -586,10 +588,10 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView
case R.id.action_save: case R.id.action_save:
if (mPreLoadFile != null && mPreLoadFile == mDeckAdapater.getYdkFile()) { if (mPreLoadFile != null && mPreLoadFile == mDeckAdapater.getYdkFile()) {
//需要保存到deck文件夹 //需要保存到deck文件夹
inputDeckName(mPreLoadFile, true); inputDeckName(mPreLoadFile, true,true);
} else { } else {
if (mDeckAdapater.getYdkFile() == null) { if (mDeckAdapater.getYdkFile() == null) {
inputDeckName(null, true); inputDeckName(null, true,true);
} else { } else {
save(mDeckAdapater.getYdkFile()); save(mDeckAdapater.getYdkFile());
} }
...@@ -603,7 +605,7 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView ...@@ -603,7 +605,7 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView
// } // }
// break; // break;
case R.id.action_rename: case R.id.action_rename:
inputDeckName(mDeckAdapater.getYdkFile(), false); inputDeckName(mDeckAdapater.getYdkFile(), false,true);
break; break;
case R.id.action_deck_new: { case R.id.action_deck_new: {
final File old = mDeckAdapater.getYdkFile(); final File old = mDeckAdapater.getYdkFile();
...@@ -614,17 +616,17 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView ...@@ -614,17 +616,17 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView
builder.setLeftButtonListener((dlg, rs) -> { builder.setLeftButtonListener((dlg, rs) -> {
dlg.dismiss(); dlg.dismiss();
//复制当前卡组 //复制当前卡组
inputDeckName(old, true); inputDeckName(old, true,true);
}); });
builder.setRightButtonListener((dlg, rs) -> { builder.setRightButtonListener((dlg, rs) -> {
dlg.dismiss(); dlg.dismiss();
setCurDeck(null); setCurDeck(null);
inputDeckName(null, true); inputDeckName(null, true,true);
}); });
builder.setOnCloseLinster((dlg) -> { builder.setOnCloseLinster((dlg) -> {
dlg.dismiss(); dlg.dismiss();
setCurDeck(null); setCurDeck(null);
inputDeckName(null, true); inputDeckName(null, true,true);
}); });
builder.show(); builder.show();
} }
...@@ -682,8 +684,41 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView ...@@ -682,8 +684,41 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView
return files == null || files.size() == 0 ? null : files.get(0); return files == null || files.size() == 0 ? null : files.get(0);
} }
private void shareDeck() { private void shareDeck(){
// 开启绘图缓存 builderShareLoading = new DialogPlus(this);
builderShareLoading.showProgressBar();
builderShareLoading.hideTitleBar();
builderShareLoading.setMessage("准备分享中");
builderShareLoading.show();
//先排序
mDeckAdapater.sort();
//保存
if (mPreLoadFile != null && mPreLoadFile == mDeckAdapater.getYdkFile()) {
//需要保存到deck文件夹
inputDeckName(mPreLoadFile, true,false);
} else {
if (mDeckAdapater.getYdkFile() == null) {
inputDeckName(null, true,false);
}
}
//保存成功后重新加载卡组
File file = getSelectDeck(mDeckSpinner);
if (file != null) {
loadDeckFromFile(file);
}
//延时一秒,等排好序再分享
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
shareDeck1();
}
},1000);
}
private void shareDeck1() {
//开启绘图缓存
mRecyclerView.setDrawingCacheEnabled(true); mRecyclerView.setDrawingCacheEnabled(true);
//这个方法可调可不调,因为在getDrawingCache()里会自动判断有没有缓存有没有准备好, //这个方法可调可不调,因为在getDrawingCache()里会自动判断有没有缓存有没有准备好,
//如果没有,会自动调用buildDrawingCache() //如果没有,会自动调用buildDrawingCache()
...@@ -712,6 +747,7 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView ...@@ -712,6 +747,7 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView
showToast(getString(R.string.deck_text_copyed)); showToast(getString(R.string.deck_text_copyed));
//复制完毕开启决斗助手 //复制完毕开启决斗助手
Util.startDuelService(this); Util.startDuelService(this);
builderShareLoading.dismiss();
// String label = TextUtils.isEmpty(deck.getName()) ? getString(R.string.share_deck) : deck.getName(); // String label = TextUtils.isEmpty(deck.getName()) ? getString(R.string.share_deck) : deck.getName();
// final String uriString = deck.toAppUri().toString(); // final String uriString = deck.toAppUri().toString();
// final String httpUri = deck.toHttpUri().toString(); // final String httpUri = deck.toHttpUri().toString();
...@@ -877,7 +913,7 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView ...@@ -877,7 +913,7 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView
}); });
} }
private void inputDeckName(File oldYdk, boolean keepOld) { private void inputDeckName(File oldYdk, boolean keepOld,boolean isToastSave) {
DialogPlus builder = new DialogPlus(this); DialogPlus builder = new DialogPlus(this);
// AlertDialog.Builder builder = new AlertDialog.Builder(this); // AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(R.string.intpu_name); builder.setTitle(R.string.intpu_name);
...@@ -920,6 +956,7 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView ...@@ -920,6 +956,7 @@ class DeckManagerActivityImpl extends BaseCardsAcitivity implements RecyclerView
} catch (IOException e) { } catch (IOException e) {
} }
initDecksListSpinners(mDeckSpinner, ydk); initDecksListSpinners(mDeckSpinner, ydk);
if(isToastSave)
save(ydk); save(ydk);
loadDeckFromFile(ydk); loadDeckFromFile(ydk);
} }
......
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