Commit 21087f3c by 宁斌

新增餐台服务费

parent 2229211e
...@@ -85,8 +85,8 @@ public class TableBean { ...@@ -85,8 +85,8 @@ public class TableBean {
private String createBy; private String createBy;
private String qrCodeImg; private String qrCodeImg;
private int posTableId; private int posTableId;
private int serviceCharge; private float serviceCharge;
private int memberId; private long memberId;
/** /**
* 未開檯 0 * 未開檯 0
* 已開檯 1 * 已開檯 1
...@@ -228,19 +228,19 @@ public class TableBean { ...@@ -228,19 +228,19 @@ public class TableBean {
this.posTableId = posTableId; this.posTableId = posTableId;
} }
public int getServiceCharge() { public float getServiceCharge() {
return serviceCharge; return serviceCharge;
} }
public void setServiceCharge(int serviceCharge) { public void setServiceCharge(float serviceCharge) {
this.serviceCharge = serviceCharge; this.serviceCharge = serviceCharge;
} }
public int getMemberId() { public long getMemberId() {
return memberId; return memberId;
} }
public void setMemberId(int memberId) { public void setMemberId(long memberId) {
this.memberId = memberId; this.memberId = memberId;
} }
......
...@@ -9,7 +9,7 @@ public class HttpsConstans { ...@@ -9,7 +9,7 @@ public class HttpsConstans {
public static final String ROOT_SERVER_ADDRESS_FORMAL_SZ = "http://gingersoft.tpddns.cn:58201/ricepon-cloud-gsa/api/";//深圳服务器 public static final String ROOT_SERVER_ADDRESS_FORMAL_SZ = "http://gingersoft.tpddns.cn:58201/ricepon-cloud-gsa/api/";//深圳服务器
public static final String ROOT_SERVER_ADDRESS_FORMAL_HK = "http://a.ricepon.com:58201/ricepon-cloud-gsa/api/";//香港服务器 public static final String ROOT_SERVER_ADDRESS_FORMAL_HK = "http://a.ricepon.com:58201/ricepon-cloud-gsa/api/";//香港服务器
public static String ROOT_SERVER_YOU_CHANG_HK = "http://192.168.1.142:9012/api/"; //友常本地 public static String ROOT_SERVER_YOU_CHANG_HK = "http://192.168.1.142:9012/api/"; //友常本地
public static String ROOT_SERVER_SHI_WEI_HK = "http://192.168.1.154:9012/api/"; //世維本地 public static String ROOT_SERVER_SHI_WEI_HK = "http://192.168.1.156:9012/api/"; //世維本地
public static String ROOT_SETTLEMENT_REPORT_SERVER_ADDRESS_FORMAL = "http://a.ricepon.com:58201/";//清機接口地址 public static String ROOT_SETTLEMENT_REPORT_SERVER_ADDRESS_FORMAL = "http://a.ricepon.com:58201/";//清機接口地址
......
...@@ -124,6 +124,17 @@ public class ComboItem { ...@@ -124,6 +124,17 @@ public class ComboItem {
/*** 是否备注细项*/ /*** 是否备注细项*/
@Transient @Transient
private boolean isModifier; private boolean isModifier;
/**
* 0=顯示, 1=隱藏, 2=暫停,3=只显示,不操作
*/
@Transient
private long invisible;
@Transient
/**最大選中數*/
private String maxNumber = "";
/**動態的最大選中數*/
@Transient
private String currentMaxNumber= "";
/*** 背景顏色*/ /*** 背景顏色*/
@Transient @Transient
private int bgColor = Color.parseColor("#067878"); private int bgColor = Color.parseColor("#067878");
...@@ -174,6 +185,30 @@ public class ComboItem { ...@@ -174,6 +185,30 @@ public class ComboItem {
return fid; return fid;
} }
public long getInvisible() {
return invisible;
}
public void setInvisible(long invisible) {
this.invisible = invisible;
}
public String getMaxNumber() {
return maxNumber;
}
public void setMaxNumber(String maxNumber) {
this.maxNumber = maxNumber;
}
public String getCurrentMaxNumber() {
return currentMaxNumber;
}
public void setCurrentMaxNumber(String currentMaxNumber) {
this.currentMaxNumber = currentMaxNumber;
}
public Long getQty() { public Long getQty() {
return qty; return qty;
} }
......
...@@ -162,7 +162,7 @@ public class ComboItemDaoUtils { ...@@ -162,7 +162,7 @@ public class ComboItemDaoUtils {
ArrayList<ComboItem> comboItems = new ArrayList<>(); ArrayList<ComboItem> comboItems = new ArrayList<>();
// String sql = "SELECT c.*,f.FOOD_NAME,f.FOOD_NAME1,f.FOOD_NAME2,f.PRICE,f.AUTO_MOD FROM COMBO_ITEM c join FOOD f on c.FID=f.FID and f.INVISIBLE=0 join FOOD_COMBO r on r.COM_ID=c.COM_ID "; // String sql = "SELECT c.*,f.FOOD_NAME,f.FOOD_NAME1,f.FOOD_NAME2,f.PRICE,f.AUTO_MOD FROM COMBO_ITEM c join FOOD f on c.FID=f.FID and f.INVISIBLE=0 join FOOD_COMBO r on r.COM_ID=c.COM_ID ";
String sql = "SELECT c.*,f.FOOD_NAME,f.FOOD_NAME1,f.FOOD_NAME2,f.PRICE,f.AUTO_MOD,DEF_MODIFIER,SELECT_QTY FROM COMBO_ITEM c join FOOD f on c.FID=f.FID and f.INVISIBLE=0 join FOOD_COMBO r on r.COM_ID=c.COM_ID "; String sql = "SELECT c.*,f.FOOD_NAME,f.FOOD_NAME1,f.FOOD_NAME2,f.PRICE,f.AUTO_MOD,DEF_MODIFIER,SELECT_QTY,INVISIBLE FROM COMBO_ITEM c join FOOD f on c.FID=f.FID and f.INVISIBLE!=1 join FOOD_COMBO r on r.COM_ID=c.COM_ID ";
if (fid > 0) { if (fid > 0) {
sql = sql + " where r.FID='" + fid + "'"; sql = sql + " where r.FID='" + fid + "'";
...@@ -181,6 +181,7 @@ public class ComboItemDaoUtils { ...@@ -181,6 +181,7 @@ public class ComboItemDaoUtils {
order.setVisible(c.getLong(c.getColumnIndex("VISIBLE"))); order.setVisible(c.getLong(c.getColumnIndex("VISIBLE")));
order.setAutoMode(c.getInt(c.getColumnIndex("AUTO_MOD"))); order.setAutoMode(c.getInt(c.getColumnIndex("AUTO_MOD")));
order.setSelectQty(c.getInt(c.getColumnIndex("SELECT_QTY"))); order.setSelectQty(c.getInt(c.getColumnIndex("SELECT_QTY")));
order.setInvisible(c.getLong(c.getColumnIndex("INVISIBLE")));
String defmodifier = c.getString(c.getColumnIndex("DEF_MODIFIER")); String defmodifier = c.getString(c.getColumnIndex("DEF_MODIFIER"));
if (!TextUtils.isEmpty(defmodifier) && !", ".equals(defmodifier)) { if (!TextUtils.isEmpty(defmodifier) && !", ".equals(defmodifier)) {
order.setDefmodifier(defmodifier); order.setDefmodifier(defmodifier);
......
...@@ -200,10 +200,12 @@ public class ModifierDaoUtils { ...@@ -200,10 +200,12 @@ public class ModifierDaoUtils {
ArrayList<Modifier> fms = new ArrayList<>(); ArrayList<Modifier> fms = new ArrayList<>();
// QueryBuilder<Modifier> queryBuilder = mManager.getDaoSession().queryBuilder(Modifier.class); // QueryBuilder<Modifier> queryBuilder = mManager.getDaoSession().queryBuilder(Modifier.class);
String parentSql = "SELECT * FROM MODIFIER WHERE MOD_MSG=1 and VISIBLE=0 and IS_PARENT=1"; // String parentSql = "SELECT * FROM MODIFIER WHERE MOD_MSG=1 and VISIBLE=0 and IS_PARENT=1";
String parentSql = "SELECT * FROM MODIFIER WHERE MOD_MSG=1 and IS_PARENT=1";
List<Modifier> parentModifiers = query_modifier_Child_new(parentSql, 0); List<Modifier> parentModifiers = query_modifier_Child_new(parentSql, 0);
String childSql = "SELECT * FROM MODIFIER WHERE MOD_MSG=1 and VISIBLE=0 and IS_PARENT=0"; // String childSql = "SELECT * FROM MODIFIER WHERE MOD_MSG=1 and VISIBLE=0 and IS_PARENT=0";
String childSql = "SELECT * FROM MODIFIER WHERE MOD_MSG=1 and IS_PARENT=0";
List<Modifier> childModifiers = query_modifier_Child_new(childSql, 0); List<Modifier> childModifiers = query_modifier_Child_new(childSql, 0);
fms.addAll(parentModifiers); fms.addAll(parentModifiers);
...@@ -233,10 +235,12 @@ public class ModifierDaoUtils { ...@@ -233,10 +235,12 @@ public class ModifierDaoUtils {
// ModifierDao.Properties.Visible.eq(visible), // ModifierDao.Properties.Visible.eq(visible),
// ModifierDao.Properties.IsParent.eq(0))).orderAsc(ModifierDao.Properties.SeqNo).list(); // ModifierDao.Properties.IsParent.eq(0))).orderAsc(ModifierDao.Properties.SeqNo).list();
String parentSql = "SELECT * FROM MODIFIER WHERE MOD_TASTE=1 and VISIBLE=0 and IS_PARENT=1"; // String parentSql = "SELECT * FROM MODIFIER WHERE MOD_TASTE=1 and VISIBLE=0 and IS_PARENT=1";
String parentSql = "SELECT * FROM MODIFIER WHERE MOD_TASTE=1 and IS_PARENT=1";
List<Modifier> parentModifiers = query_modifier_Child_new(parentSql, 0); List<Modifier> parentModifiers = query_modifier_Child_new(parentSql, 0);
String childSql = "SELECT * FROM MODIFIER WHERE MOD_TASTE=1 and VISIBLE=0 and IS_PARENT=0"; // String childSql = "SELECT * FROM MODIFIER WHERE MOD_TASTE=1 and VISIBLE=0 and IS_PARENT=0";
String childSql = "SELECT * FROM MODIFIER WHERE MOD_TASTE=1 and IS_PARENT=0";
List<Modifier> childModifiers = query_modifier_Child_new(childSql, 0); List<Modifier> childModifiers = query_modifier_Child_new(childSql, 0);
fms.addAll(parentModifiers); fms.addAll(parentModifiers);
...@@ -266,10 +270,12 @@ public class ModifierDaoUtils { ...@@ -266,10 +270,12 @@ public class ModifierDaoUtils {
// ModifierDao.Properties.Visible.eq(visible), // ModifierDao.Properties.Visible.eq(visible),
// ModifierDao.Properties.IsParent.eq(0))).orderAsc(ModifierDao.Properties.SeqNo).list(); // ModifierDao.Properties.IsParent.eq(0))).orderAsc(ModifierDao.Properties.SeqNo).list();
String parentSql = "SELECT * FROM MODIFIER WHERE MOD_COMM=1 and VISIBLE=0 and IS_PARENT=1"; // String parentSql = "SELECT * FROM MODIFIER WHERE MOD_COMM=1 and VISIBLE=0 and IS_PARENT=1";
String parentSql = "SELECT * FROM MODIFIER WHERE MOD_COMM=1 and IS_PARENT=1";
List<Modifier> parentModifiers = query_modifier_Child_new(parentSql, 0); List<Modifier> parentModifiers = query_modifier_Child_new(parentSql, 0);
String childSql = "SELECT * FROM MODIFIER WHERE MOD_COMM=1 and VISIBLE=0 and IS_PARENT=0"; // String childSql = "SELECT * FROM MODIFIER WHERE MOD_COMM=1 and VISIBLE=0 and IS_PARENT=0";
String childSql = "SELECT * FROM MODIFIER WHERE MOD_COMM=1 and IS_PARENT=0";
List<Modifier> childModifiers = query_modifier_Child_new(childSql, 0); List<Modifier> childModifiers = query_modifier_Child_new(childSql, 0);
fms.addAll(parentModifiers); fms.addAll(parentModifiers);
...@@ -318,8 +324,8 @@ public class ModifierDaoUtils { ...@@ -318,8 +324,8 @@ public class ModifierDaoUtils {
// String sql = " SELECT MODIFIER.mid,MODIFIER_NAME,MODIFIER_NAME1,MODIFIER_NAME2,TOP_ID,PRICE,MOD_COMM,MOD_TASTE,MOD_MSG,VISIBLE,MULTIPLE,IS_PARENT" + // String sql = " SELECT MODIFIER.mid,MODIFIER_NAME,MODIFIER_NAME1,MODIFIER_NAME2,TOP_ID,PRICE,MOD_COMM,MOD_TASTE,MOD_MSG,VISIBLE,MULTIPLE,IS_PARENT" +
// " FROM MODIFIER join FOOD_MODIFIER on MODIFIER.MID=FOOD_MODIFIER.MID where MODIFIER.VISIBLE=0 and FOOD_MODIFIER.FID='" + fid + "' order by FOOD_MODIFIER.seq,MODIFIER.SEQ_NO"; // " FROM MODIFIER join FOOD_MODIFIER on MODIFIER.MID=FOOD_MODIFIER.MID where MODIFIER.VISIBLE=0 and FOOD_MODIFIER.FID='" + fid + "' order by FOOD_MODIFIER.seq,MODIFIER.SEQ_NO";
String sql = " SELECT MODIFIER.MID,MODIFIER_NAME,MODIFIER_NAME1,MODIFIER_NAME2,TOP_ID,PRICE,MOD_COMM,MOD_TASTE,MOD_MSG,VISIBLE,MULTIPLE,IS_PARENT,MAX_QTY,MIN_QTY" + String sql = " SELECT MODIFIER.MID,MODIFIER_NAME,MODIFIER_NAME1,MODIFIER_NAME2,TOP_ID,PRICE,MOD_COMM,MOD_TASTE,MOD_MSG,INVISIBLE,VISIBLE,MULTIPLE,IS_PARENT,MAX_QTY,MIN_QTY" +
" FROM MODIFIER join FOOD_MODIFIER fm on MODIFIER.MID=FOOD_MODIFIER.MID where MODIFIER.INVISIBLE=0 and FOOD_MODIFIER.FID='" + fid + "' order by FOOD_MODIFIER.SEQ_NO,MODIFIER.SEQ_NO"; " FROM MODIFIER join FOOD_MODIFIER fm on MODIFIER.MID=FOOD_MODIFIER.MID where MODIFIER.INVISIBLE!=1 and FOOD_MODIFIER.FID='" + fid + "' order by FOOD_MODIFIER.SEQ_NO,MODIFIER.SEQ_NO";
List<Modifier> mfs_child = new ArrayList<>(); List<Modifier> mfs_child = new ArrayList<>();
...@@ -331,15 +337,15 @@ public class ModifierDaoUtils { ...@@ -331,15 +337,15 @@ public class ModifierDaoUtils {
switch (mode) { switch (mode) {
case modifierMode_All: case modifierMode_All:
sqlstr = " SELECT m.MID,MODIFIER_NAME,MODIFIER_NAME1,MODIFIER_NAME2,TOP_ID,PRICE,MOD_COMM,MOD_TASTE,MOD_MSG,VISIBLE,MULTIPLE,IS_PARENT,DEFMODIFIER,MAX_QTY,MIN_QTY" + sqlstr = " SELECT m.MID,MODIFIER_NAME,MODIFIER_NAME1,MODIFIER_NAME2,TOP_ID,PRICE,MOD_COMM,MOD_TASTE,MOD_MSG,INVISIBLE,VISIBLE,MULTIPLE,IS_PARENT,DEFMODIFIER,MAX_QTY,MIN_QTY" +
" FROM MODIFIER m join FOOD_MODIFIER fm on m.TOP_ID=fm.MID where m.INVISIBLE=0 and m.IS_PARENT=1 and fm.FID='" + fid + "' order by fm.SEQ_NO,m.SEQ_NO"; " FROM MODIFIER m join FOOD_MODIFIER fm on m.TOP_ID=fm.MID where m.INVISIBLE!=1 and m.IS_PARENT=1 and fm.FID='" + fid + "' order by fm.SEQ_NO,m.SEQ_NO";
mfs_child1 = query_modifier_Child_new(sqlstr, fid); mfs_child1 = query_modifier_Child_new(sqlstr, fid);
List<Modifier> mfs_child2 = new ArrayList<>(); List<Modifier> mfs_child2 = new ArrayList<>();
sqlstr = " SELECT m.MID,MODIFIER_NAME,MODIFIER_NAME1,MODIFIER_NAME2,TOP_ID,PRICE,MOD_COMM,MOD_TASTE,MOD_MSG,VISIBLE,MULTIPLE,IS_PARENT,DEFMODIFIER,MAX_QTY,MIN_QTY" + sqlstr = " SELECT m.MID,MODIFIER_NAME,MODIFIER_NAME1,MODIFIER_NAME2,TOP_ID,PRICE,MOD_COMM,MOD_TASTE,MOD_MSG,INVISIBLE,VISIBLE,MULTIPLE,IS_PARENT,DEFMODIFIER,MAX_QTY,MIN_QTY" +
" FROM MODIFIER m join FOOD_MODIFIER fm on m.TOP_ID=fm.MID where m.INVISIBLE=0 and m.IS_PARENT=0 and fm.FID='" + fid + "' order by fm.SEQ_NO,m.SEQ_NO"; " FROM MODIFIER m join FOOD_MODIFIER fm on m.TOP_ID=fm.MID where m.INVISIBLE!=1 and m.IS_PARENT=0 and fm.FID='" + fid + "' order by fm.SEQ_NO,m.SEQ_NO";
mfs_child2 = query_modifier_Child_new(sqlstr, fid); mfs_child2 = query_modifier_Child_new(sqlstr, fid);
mfs_child1.addAll(mfs_child2); mfs_child1.addAll(mfs_child2);
...@@ -391,6 +397,7 @@ public class ModifierDaoUtils { ...@@ -391,6 +397,7 @@ public class ModifierDaoUtils {
order.setModMsg(c.getLong(c.getColumnIndex("MOD_MSG"))); order.setModMsg(c.getLong(c.getColumnIndex("MOD_MSG")));
order.setModTaste(c.getLong(c.getColumnIndex("MOD_TASTE"))); order.setModTaste(c.getLong(c.getColumnIndex("MOD_TASTE")));
order.setMultiple(c.getDouble(c.getColumnIndex("MULTIPLE"))); order.setMultiple(c.getDouble(c.getColumnIndex("MULTIPLE")));
order.setInvisible(c.getLong(c.getColumnIndex("INVISIBLE")));
if (fid != 0) { if (fid != 0) {
//非公共細項 //非公共細項
order.setMaxNumber(String.valueOf(c.getInt(c.getColumnIndex("MAX_QTY")))); order.setMaxNumber(String.valueOf(c.getInt(c.getColumnIndex("MAX_QTY"))));
......
...@@ -13,6 +13,7 @@ import com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage; ...@@ -13,6 +13,7 @@ import com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.OpenTableManage; import com.gingersoft.gsa.cloud.base.common.bean.mealManage.OpenTableManage;
import com.gingersoft.gsa.cloud.base.utils.log.LogUtil; import com.gingersoft.gsa.cloud.base.utils.log.LogUtil;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils; import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.ui.widget.dialog.CommonTipDialog;
import com.google.gson.JsonIOException; import com.google.gson.JsonIOException;
import com.google.gson.JsonParseException; import com.google.gson.JsonParseException;
import com.jess.arms.utils.ArmsUtils; import com.jess.arms.utils.ArmsUtils;
...@@ -73,7 +74,7 @@ public class MyResponseErrorListener implements ResponseErrorListener { ...@@ -73,7 +74,7 @@ public class MyResponseErrorListener implements ResponseErrorListener {
Activity activity = GsaCloudApplication.getAppContext().getCurrentActivity(); Activity activity = GsaCloudApplication.getAppContext().getCurrentActivity();
if (!showloggedDialog && activity != null) { if (!showloggedDialog && activity != null) {
showloggedDialog = true; showloggedDialog = true;
showloggedDialog(activity, ArmsUtils.getString(context, R.string.response_error_request_logged)); showloggedDialog(activity,ArmsUtils.getString(context, R.string.response_error_request_logged));
} }
} else { } else {
msg = httpException.message(); msg = httpException.message();
...@@ -81,12 +82,13 @@ public class MyResponseErrorListener implements ResponseErrorListener { ...@@ -81,12 +82,13 @@ public class MyResponseErrorListener implements ResponseErrorListener {
return msg; return msg;
} }
private void showloggedDialog(Activity context,String msg) {
private void showloggedDialog(Activity context, String msg) {
QMUIDialog.MessageDialogBuilder dialogBuilder = new QMUIDialog.MessageDialogBuilder(context); QMUIDialog.MessageDialogBuilder dialogBuilder = new QMUIDialog.MessageDialogBuilder(context);
dialogBuilder.setTitle("溫馨提示");
dialogBuilder.setMessage(msg); dialogBuilder.setMessage(msg);
dialogBuilder.setTitleIcon(R.drawable.qmui_icon_dialog_warn);
dialogBuilder.addAction(0, "確認", QMUIDialogAction.ACTION_PROP_NEGATIVE, (dialog, index) -> { dialogBuilder.addAction(0, "確認", QMUIDialogAction.ACTION_PROP_NEGATIVE, (dialog, index) -> {
//清空用戶信息
GsaCloudApplication.clearMemberInfo();
//清空賬單數據 //清空賬單數據
MyOrderManage.getInstance().clear(); MyOrderManage.getInstance().clear();
//清空開檯數據 //清空開檯數據
......
...@@ -136,4 +136,14 @@ public class SectionTextItem3 { ...@@ -136,4 +136,14 @@ public class SectionTextItem3 {
return sectionTextItem3List; return sectionTextItem3List;
} }
public static SectionTextItem3 roundingTransSectionTextItem3(double amuout) {
SectionTextItem3 sectionTextItem3 = new SectionTextItem3();
sectionTextItem3.setLeftText("賬單小數");
sectionTextItem3.setCenterText(String.valueOf(0));
sectionTextItem3.setRightText(String.valueOf(amuout));
sectionTextItem3.setLeftTextStyle(R.style.order_paymethod_text_style);
sectionTextItem3.setRightTextStyle(R.style.order_paymethod_text_style);
return sectionTextItem3;
}
} }
...@@ -49,9 +49,9 @@ public class QDSectionHeaderView extends LinearLayout { ...@@ -49,9 +49,9 @@ public class QDSectionHeaderView extends LinearLayout {
setOrientation(LinearLayout.HORIZONTAL); setOrientation(LinearLayout.HORIZONTAL);
setGravity(Gravity.CENTER_VERTICAL); setGravity(Gravity.CENTER_VERTICAL);
setBackgroundColor(Color.WHITE); setBackgroundColor(Color.WHITE);
int paddingHor = QMUIDisplayHelper.dp2px(context, 24); int paddingHor = QMUIDisplayHelper.dp2px(context, 20);
mTitleTv = new TextView(getContext()); mTitleTv = new TextView(getContext());
mTitleTv.setTextSize(20); mTitleTv.setTextSize(16);
mTitleTv.setTextColor(Color.BLACK); mTitleTv.setTextColor(Color.BLACK);
mTitleTv.setPadding(paddingHor, 0, paddingHor, 0); mTitleTv.setPadding(paddingHor, 0, paddingHor, 0);
addView(mTitleTv, new LinearLayout.LayoutParams( addView(mTitleTv, new LinearLayout.LayoutParams(
......
...@@ -35,9 +35,9 @@ public class CommonTipDialog { ...@@ -35,9 +35,9 @@ public class CommonTipDialog {
dialogBuilder.setTitleIcon(R.drawable.qmui_icon_dialog_doubt); dialogBuilder.setTitleIcon(R.drawable.qmui_icon_dialog_doubt);
dialogBuilder.setMessage(msg); dialogBuilder.setMessage(msg);
if(!TextUtils.isEmpty(methodName)) { if(!TextUtils.isEmpty(methodName)) {
dialogBuilder.addAction("取消", (dialog, index) -> dialog.dismiss()); dialogBuilder.addAction(R.drawable.shape_3c_cancel_btn_bg,"取消", (dialog, index) -> dialog.dismiss());
} }
dialogBuilder.addAction(0, "確認", QMUIDialogAction.ACTION_PROP_NEGATIVE, (dialog, index) -> { dialogBuilder.addAction(R.drawable.shape_red_five_radius_bg, "確認", QMUIDialogAction.ACTION_PROP_NEGATIVE, (dialog, index) -> {
dialog.dismiss(); dialog.dismiss();
if(TextUtils.isEmpty(methodName)){ if(TextUtils.isEmpty(methodName)){
return; return;
......
...@@ -27,6 +27,9 @@ dependencies { ...@@ -27,6 +27,9 @@ dependencies {
if (project.name != 'qm-skin-maker' && project.name != 'qm-arch' && project.name != 'qm-qmui') { if (project.name != 'qm-skin-maker' && project.name != 'qm-arch' && project.name != 'qm-qmui') {
api project(':qm-skin-maker') api project(':qm-skin-maker')
} }
// if (project.name == 'main-module') {
// api project(':updateApk')
// }
// if (project.name == 'arms') { // if (project.name == 'arms') {
// api project(':fragmentation_core') // api project(':fragmentation_core')
// } // }
......
...@@ -49,7 +49,7 @@ public interface DownloadContract { ...@@ -49,7 +49,7 @@ public interface DownloadContract {
List<Food> queryDB_FoodList(Context context, int parentId); List<Food> queryDB_FoodList(Context context, int parentId);
Observable<FunctionRespone> downFunctionList(); Observable<FunctionRespone> downFunctionList(long userId);
Observable<FoodBean> downFoodList(int restaurantId); Observable<FoodBean> downFoodList(int restaurantId);
......
...@@ -72,9 +72,9 @@ public class DownloadModel extends BaseModel implements DownloadContract.Model { ...@@ -72,9 +72,9 @@ public class DownloadModel extends BaseModel implements DownloadContract.Model {
} }
@Override @Override
public Observable<FunctionRespone> downFunctionList() { public Observable<FunctionRespone> downFunctionList(long userId) {
return mRepositoryManager.obtainRetrofitService(DownloadService.class) return mRepositoryManager.obtainRetrofitService(DownloadService.class)
.downFunctionList(); .downFunctionList(userId);
} }
@Override @Override
......
...@@ -20,7 +20,7 @@ import retrofit2.http.Query; ...@@ -20,7 +20,7 @@ import retrofit2.http.Query;
public interface DownloadService { public interface DownloadService {
@GET("user/resource/list" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2) @GET("user/resource/list" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<FunctionRespone> downFunctionList(); Observable<FunctionRespone> downFunctionList(@Query("userId") long userId);
@GET(Api.food_list + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2) @GET(Api.food_list + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<FoodBean> downFoodList(@Query("restaurantId") int restaurantId); Observable<FoodBean> downFoodList(@Query("restaurantId") int restaurantId);
......
...@@ -271,7 +271,9 @@ public class DownloadPresenter extends BasePresenter<DownloadContract.Model, Dow ...@@ -271,7 +271,9 @@ public class DownloadPresenter extends BasePresenter<DownloadContract.Model, Dow
List<Function> functions = getFunctions(); List<Function> functions = getFunctions();
mModel.downFunctionList() long userId = GsaCloudApplication.getMemberId(mApplication);
mModel.downFunctionList(userId)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.subscribeOn(AndroidSchedulers.mainThread()) .subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
......
<resources> <resources>
<string name="user_login_name" translatable="false">GSA-Cloud</string> <string name="user_login_name" translatable="false">Ricepon POS</string>
<string name="user_login_welcome_login" translatable="false">歡迎登陸商戶端</string> <string name="user_login_welcome_login" translatable="false">歡迎登陸商戶端</string>
</resources> </resources>
...@@ -24,6 +24,7 @@ public class ComponentMain implements IComponent { ...@@ -24,6 +24,7 @@ public class ComponentMain implements IComponent {
/**首頁- 管理*/ /**首頁- 管理*/
public static final FModule [] manager = { public static final FModule [] manager = {
new FModule("main/manager", 0,0) , new FModule("main/manager", 0,0) ,
new FModule("main/manager/takeaway", R.drawable.ic_meals_menu_management, R.drawable.ic_meals_menu_management_close) ,
new FModule("main/manager/bill", R.drawable.ic_meals_menu_management, R.drawable.ic_meals_menu_management_close) , new FModule("main/manager/bill", R.drawable.ic_meals_menu_management, R.drawable.ic_meals_menu_management_close) ,
new FModule("main/manager/table", R.drawable.ic_dining_table_management,R.drawable.ic_dining_table_management_close) , new FModule("main/manager/table", R.drawable.ic_dining_table_management,R.drawable.ic_dining_table_management_close) ,
new FModule("main/manager/printer",R.drawable.ic_print_management,R.drawable.ic_print_management_close), new FModule("main/manager/printer",R.drawable.ic_print_management,R.drawable.ic_print_management_close),
......
...@@ -235,13 +235,13 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl ...@@ -235,13 +235,13 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl
// functions.addAll(FunctionManager.getDefault().getFunctionByResModule(this, ComponentMain.Function.class, ComponentMain.Function.manager,"manager")); // functions.addAll(FunctionManager.getDefault().getFunctionByResModule(this, ComponentMain.Function.class, ComponentMain.Function.manager,"manager"));
functions.add(new Function((long) 151, 0, 5, "管理", 0, 0)); functions.add(new Function((long) 151, 0, 5, "管理", 0, 0));
// functions.add(new Function((long) 142, 151, 5, "賬單管理", R.drawable.ic_meals_menu_management, 0)); functions.add(new Function((long) 142, 151, 5, "賬單管理", R.drawable.ic_meals_menu_management, 0));
functions.add(new Function((long) 142, 151, 5, "外賣接單", R.drawable.ic_takeaway_orders, 0)); functions.add(new Function((long) 142, 151, 5, "外賣接單", R.drawable.ic_takeaway_orders, 0));
// functions.add(new Function((long) 143, 151, 5, "餐臺管理", R.drawable.ic_dining_table_management, 0)); functions.add(new Function((long) 143, 151, 5, "餐臺管理", R.drawable.ic_dining_table_management, 0));
functions.add(new Function((long) 144, 151, 5, "打印管理", R.drawable.ic_print_management, 0)); functions.add(new Function((long) 144, 151, 5, "打印管理", R.drawable.ic_print_management, 0));
// functions.add(new Function((long) 145, 151, 5, "支付管理", R.drawable.ic_pay_management_close, 1)); // functions.add(new Function((long) 145, 151, 5, "支付管理", R.drawable.ic_pay_management_close, 1));
// functions.add(new Function((long) 146, 151, 5, "折扣管理", R.drawable.ic_discount_management_close, 1)); // functions.add(new Function((long) 146, 151, 5, "折扣管理", R.drawable.ic_discount_management_close, 1));
// functions.add(new Function((long) 147, 151, 5, "沽清管理", R.drawable.ic_sell_off_manger, 0)); functions.add(new Function((long) 147, 151, 5, "沽清管理", R.drawable.ic_sell_off_manger, 0));
// functions.addAll(FunctionManager.getDefault().getFunctionByResModule(this, ComponentMain.Function.class, ComponentMain.Function.employee,"employee")); // functions.addAll(FunctionManager.getDefault().getFunctionByResModule(this, ComponentMain.Function.class, ComponentMain.Function.employee,"employee"));
functions.add(new Function((long) 152, 0, 5, "員工", 0, 0)); functions.add(new Function((long) 152, 0, 5, "員工", 0, 0));
......
...@@ -71,7 +71,7 @@ public class SettlementActivity extends BaseActivity<SettlementPresenter> implem ...@@ -71,7 +71,7 @@ public class SettlementActivity extends BaseActivity<SettlementPresenter> implem
@Override @Override
public void initData(@Nullable Bundle savedInstanceState) { public void initData(@Nullable Bundle savedInstanceState) {
tv_settlement_time.setVisibility(View.GONE);
mPresenter.getSettlementReport(); mPresenter.getSettlementReport();
} }
......
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
android:layout_marginTop="@dimen/dp_20" android:layout_marginTop="@dimen/dp_20"
android:layout_marginBottom="@dimen/dp_20" android:layout_marginBottom="@dimen/dp_20"
android:layout_weight="1" android:layout_weight="1"
android:visibility="invisible" /> android:visibility="visible" />
<LinearLayout <LinearLayout
android:id="@+id/layout_login_out" android:id="@+id/layout_login_out"
...@@ -202,7 +202,7 @@ ...@@ -202,7 +202,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_15" android:layout_marginLeft="@dimen/dp_15"
android:layout_marginTop="@dimen/dp_20" android:layout_marginTop="@dimen/dp_20"
android:visibility="gone" android:visibility="visible"
android:textColor="#181818" android:textColor="#181818"
android:textSize="@dimen/dp_14" /> android:textSize="@dimen/dp_14" />
...@@ -210,7 +210,7 @@ ...@@ -210,7 +210,7 @@
android:id="@+id/rv_staff_management" android:id="@+id/rv_staff_management"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:visibility="gone" android:visibility="visible"
android:layout_marginLeft="@dimen/main_recyclerview_marginLeft" android:layout_marginLeft="@dimen/main_recyclerview_marginLeft"
android:layout_marginTop="@dimen/dp_10" android:layout_marginTop="@dimen/dp_10"
android:layout_marginRight="@dimen/main_recyclerview_marginRight" /> android:layout_marginRight="@dimen/main_recyclerview_marginRight" />
...@@ -226,7 +226,7 @@ ...@@ -226,7 +226,7 @@
android:layout_marginRight="@dimen/dp_10" android:layout_marginRight="@dimen/dp_10"
app:hl_cornerRadius="@dimen/dp_4" app:hl_cornerRadius="@dimen/dp_4"
app:hl_dy="@dimen/main_shadow_dy" app:hl_dy="@dimen/main_shadow_dy"
android:visibility="gone" android:visibility="visible"
app:hl_shadowBackColor="@color/white" app:hl_shadowBackColor="@color/white"
app:hl_shadowColor="@color/shadow_color" app:hl_shadowColor="@color/shadow_color"
app:hl_shadowLimit="@dimen/main_shadow_limit"> app:hl_shadowLimit="@dimen/main_shadow_limit">
......
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
android:id="@+id/tv_business_area_title" android:id="@+id/tv_business_area_title"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="店鋪名稱:gingersoft" android:text=""
android:textColor="@color/black" android:textColor="@color/black"
android:textSize="@dimen/dp_18" /> android:textSize="@dimen/dp_18" />
......
...@@ -23,6 +23,8 @@ public interface AreaListContract { ...@@ -23,6 +23,8 @@ public interface AreaListContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息 //对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView { interface View extends IView {
void showEmptyView(boolean isSuccess, int size, Throwable t);
void setAdapter(DefaultAdapter adapter); void setAdapter(DefaultAdapter adapter);
} }
......
...@@ -19,7 +19,7 @@ import com.jess.arms.mvp.IModel; ...@@ -19,7 +19,7 @@ import com.jess.arms.mvp.IModel;
public interface TableListContract { public interface TableListContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息 //对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView { interface View extends IView {
void showEmptyView(boolean isSuccess, int size, Throwable t);
} }
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存 //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
......
...@@ -32,6 +32,8 @@ public interface TableManageContract { ...@@ -32,6 +32,8 @@ public interface TableManageContract {
void queryAreasSuccess(List<TableArea> areas, int type); void queryAreasSuccess(List<TableArea> areas, int type);
void queryTablesSuccess(List<TableItem> tables, int type); void queryTablesSuccess(List<TableItem> tables, int type);
void showEmptyView(boolean isSuccess, int size, Throwable t);
} }
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存 //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
......
...@@ -13,7 +13,7 @@ public class TableRequest { ...@@ -13,7 +13,7 @@ public class TableRequest {
private int restaurantId; private int restaurantId;
/**區域ID*/ /**區域ID*/
private int areaId; private int regionId;
/**餐檯名*/ /**餐檯名*/
private String tableName; private String tableName;
/**座位数*/ /**座位数*/
...@@ -32,12 +32,12 @@ public class TableRequest { ...@@ -32,12 +32,12 @@ public class TableRequest {
this.restaurantId = restaurantId; this.restaurantId = restaurantId;
} }
public int getAreaId() { public int getRegionId() {
return areaId; return regionId;
} }
public void setAreaId(int areaId) { public void setRegionId(int regionId) {
this.areaId = areaId; this.regionId = regionId;
} }
public String getTableName() { public String getTableName() {
...@@ -75,6 +75,76 @@ public class TableRequest { ...@@ -75,6 +75,76 @@ public class TableRequest {
public static class Update { public static class Update {
private int id;
private int restaurantId;
/**區域ID*/
private int regionId;
/**餐檯名*/
private String tableName;
/**座位数*/
private int seatCount;
/**服务费*/
private Double serviceCharge;
/**排序*/
private int sort;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getRestaurantId() {
return restaurantId;
}
public void setRestaurantId(int restaurantId) {
this.restaurantId = restaurantId;
}
public int getRegionId() {
return regionId;
}
public void setRegionId(int regionId) {
this.regionId = regionId;
}
public String getTableName() {
return tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
public int getSeatCount() {
return seatCount;
}
public void setSeatCount(int seatCount) {
this.seatCount = seatCount;
}
public Double getServiceCharge() {
return serviceCharge;
}
public void setServiceCharge(Double serviceCharge) {
this.serviceCharge = serviceCharge;
}
public int getSort() {
return sort;
}
public void setSort(int sort) {
this.sort = sort;
}
} }
} }
...@@ -91,15 +91,27 @@ public class TableListPresenter extends BasePresenter<TableListContract.Model, T ...@@ -91,15 +91,27 @@ public class TableListPresenter extends BasePresenter<TableListContract.Model, T
* 組合區域集合 * 組合區域集合
*/ */
public List<TableArea> assembleAreaList(List<TableItem> tableList) { public List<TableArea> assembleAreaList(List<TableItem> tableList) {
boolean addOther = false;
List<TableArea> areaList = new ArrayList<>(); List<TableArea> areaList = new ArrayList<>();
for (TableItem table : tableList) { for (TableItem table : tableList) {
if (table.getRegionId() != 0 && !equalsAreaId(areaList, table.getRegionId())) { if (table.getRegionId() != -1) {
TableArea newArea = new TableArea(); if (!equalsAreaId(areaList, table.getRegionId())) {
newArea.setId(table.getRegionId()); TableArea newArea = new TableArea();
newArea.setRegionName("大廳"); newArea.setId(table.getRegionId());
areaList.add(newArea); newArea.setRegionName(table.getRegionName());
areaList.add(newArea);
}
} else {
addOther = true;
} }
} }
if (addOther) {
//將沒有區域的檯 放到其他下面
TableArea newArea = new TableArea();
newArea.setId(-1);
newArea.setRegionName("其他");
areaList.add(newArea);
}
return areaList; return areaList;
} }
......
...@@ -174,9 +174,16 @@ public class TableManagePresenter extends BasePresenter<TableManageContract.Mode ...@@ -174,9 +174,16 @@ public class TableManagePresenter extends BasePresenter<TableManageContract.Mode
if (info != null && info.isSuccess()) { if (info != null && info.isSuccess()) {
if (info.getData() != null) { if (info.getData() != null) {
List<TableArea> tableAreas = JsonUtils.parseArray(info.getData(), TableArea.class); List<TableArea> tableAreas = JsonUtils.parseArray(info.getData(), TableArea.class);
mRootView.queryAreasSuccess(tableAreas, TableManageActivity.QUERY_AREA_SUCCESS); if (tableAreas.size() > 0) {
mRootView.queryAreasSuccess(tableAreas, TableManageActivity.QUERY_AREA_SUCCESS);
} else {
mRootView.showEmptyView(true, 0, null);
}
} else {
mRootView.showEmptyView(true, 0, null);
} }
} else { } else {
mRootView.showEmptyView(false, 0, null);
mRootView.showMessage("查詢失敗"); mRootView.showMessage("查詢失敗");
} }
} }
...@@ -190,6 +197,7 @@ public class TableManagePresenter extends BasePresenter<TableManageContract.Mode ...@@ -190,6 +197,7 @@ public class TableManagePresenter extends BasePresenter<TableManageContract.Mode
@Override @Override
public void onError(Throwable t) { public void onError(Throwable t) {
super.onError(t); super.onError(t);
mRootView.showEmptyView(false, 0, t);
resetRefreshLayout(); resetRefreshLayout();
} }
...@@ -256,7 +264,7 @@ public class TableManagePresenter extends BasePresenter<TableManageContract.Mode ...@@ -256,7 +264,7 @@ public class TableManagePresenter extends BasePresenter<TableManageContract.Mode
}); });
} }
public void updateTable(TableRequest.Add request) { public void updateTable(TableRequest.Update request) {
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), GsonUtils.GsonString(request)); RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), GsonUtils.GsonString(request));
String json = GsonUtils.GsonString(request); String json = GsonUtils.GsonString(request);
mModel.updateTable(requestBody) mModel.updateTable(requestBody)
...@@ -273,12 +281,22 @@ public class TableManagePresenter extends BasePresenter<TableManageContract.Mode ...@@ -273,12 +281,22 @@ public class TableManagePresenter extends BasePresenter<TableManageContract.Mode
if (info != null && info.isSuccess()) { if (info != null && info.isSuccess()) {
if (info.getData() != null) { if (info.getData() != null) {
List<TableItem> tableItems = JsonUtils.parseArray(info.getData(), TableItem.class); List<TableItem> tableItems = JsonUtils.parseArray(info.getData(), TableItem.class);
mRootView.queryTablesSuccess(tableItems, TableManageActivity.UPDATE_TABLE_SUCCESS); if (tableItems.size() > 0) {
mRootView.queryTablesSuccess(tableItems, TableManageActivity.UPDATE_TABLE_SUCCESS);
} else {
}
} else {
} }
} else { } else {
mRootView.showMessage("更新失敗"); mRootView.showMessage("更新失敗");
} }
} }
@Override
public void onError(Throwable t) {
super.onError(t);
}
}); });
} }
...@@ -301,9 +319,16 @@ public class TableManagePresenter extends BasePresenter<TableManageContract.Mode ...@@ -301,9 +319,16 @@ public class TableManagePresenter extends BasePresenter<TableManageContract.Mode
if (info != null && info.isSuccess()) { if (info != null && info.isSuccess()) {
if (info.getData() != null) { if (info.getData() != null) {
List<TableItem> tableItems = JsonUtils.parseArray(info.getData(), TableItem.class); List<TableItem> tableItems = JsonUtils.parseArray(info.getData(), TableItem.class);
mRootView.queryTablesSuccess(tableItems, TableManageActivity.QUERY_TABLE_SUCCESS); if (tableItems.size() > 0) {
mRootView.queryTablesSuccess(tableItems, TableManageActivity.QUERY_TABLE_SUCCESS);
} else {
mRootView.showEmptyView(true, 0, null);
}
} else {
mRootView.showEmptyView(true, 0, null);
} }
} else { } else {
mRootView.showEmptyView(false, 0, null);
mRootView.showMessage("查詢失敗"); mRootView.showMessage("查詢失敗");
} }
} }
...@@ -317,6 +342,7 @@ public class TableManagePresenter extends BasePresenter<TableManageContract.Mode ...@@ -317,6 +342,7 @@ public class TableManagePresenter extends BasePresenter<TableManageContract.Mode
@Override @Override
public void onError(Throwable t) { public void onError(Throwable t) {
super.onError(t); super.onError(t);
mRootView.showEmptyView(false, 0, t);
resetRefreshLayout(); resetRefreshLayout();
} }
......
...@@ -2,6 +2,7 @@ package com.gingersoft.gsa.cloud.manager.mvp.ui.activity; ...@@ -2,6 +2,7 @@ package com.gingersoft.gsa.cloud.manager.mvp.ui.activity;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.view.View;
import android.view.animation.AnimationUtils; import android.view.animation.AnimationUtils;
import android.widget.Button; import android.widget.Button;
import android.widget.FrameLayout; import android.widget.FrameLayout;
...@@ -34,6 +35,7 @@ import com.gingersoft.gsa.cloud.manager.R; ...@@ -34,6 +35,7 @@ import com.gingersoft.gsa.cloud.manager.R;
import com.jess.arms.utils.RxLifecycleUtils; import com.jess.arms.utils.RxLifecycleUtils;
import com.qmuiteam.qmui.alpha.QMUIAlphaTextView; import com.qmuiteam.qmui.alpha.QMUIAlphaTextView;
import com.qmuiteam.qmui.widget.QMUITopBar; import com.qmuiteam.qmui.widget.QMUITopBar;
import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet;
import com.qmuiteam.qmui.widget.section.QMUIStickySectionLayout; import com.qmuiteam.qmui.widget.section.QMUIStickySectionLayout;
import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.api.RefreshLayout;
...@@ -151,7 +153,7 @@ public class TableManageActivity extends BaseFragmentActivity<TableManagePresent ...@@ -151,7 +153,7 @@ public class TableManageActivity extends BaseFragmentActivity<TableManagePresent
mPresenter.deleteTable(ids); mPresenter.deleteTable(ids);
} }
public void updateTable(TableRequest.Add request) { public void updateTable(TableRequest.Update request) {
mPresenter.updateTable(request); mPresenter.updateTable(request);
} }
...@@ -159,7 +161,6 @@ public class TableManageActivity extends BaseFragmentActivity<TableManagePresent ...@@ -159,7 +161,6 @@ public class TableManageActivity extends BaseFragmentActivity<TableManagePresent
mPresenter.queryTables(refreshLayout); mPresenter.queryTables(refreshLayout);
} }
@Override @Override
public void initIntent() { public void initIntent() {
} }
...@@ -253,15 +254,16 @@ public class TableManageActivity extends BaseFragmentActivity<TableManagePresent ...@@ -253,15 +254,16 @@ public class TableManageActivity extends BaseFragmentActivity<TableManagePresent
public void queryTablesSuccess(List<TableItem> tables, int type) { public void queryTablesSuccess(List<TableItem> tables, int type) {
ISupportFragment fragment = getTopFragment(); ISupportFragment fragment = getTopFragment();
if (fragment != null) { if (fragment != null) {
fragment = getTopFragment(); if (fragment instanceof TableListFragment) {
TableListFragment tableListFragment = (TableListFragment) fragment; TableListFragment tableListFragment = (TableListFragment) fragment;
tableListFragment.updateTableData(tables); tableListFragment.updateTableData(tables);
}
switch (type) { switch (type) {
case ADD_TABLE_SUCCESS: case ADD_TABLE_SUCCESS:
case UPDATE_TABLE_SUCCESS: case UPDATE_TABLE_SUCCESS:
AddTableFragment addTableFragment = (AddTableFragment) fragment; AddTableFragment addTableFragment = (AddTableFragment) fragment;
addTableFragment.pop(); addTableFragment.pop();
tableListFragment = findFragment(TableListFragment.class); TableListFragment tableListFragment = findFragment(TableListFragment.class);
if (tableListFragment != null) { if (tableListFragment != null) {
tableListFragment.updateTableData(tables); tableListFragment.updateTableData(tables);
} }
...@@ -277,14 +279,14 @@ public class TableManageActivity extends BaseFragmentActivity<TableManagePresent ...@@ -277,14 +279,14 @@ public class TableManageActivity extends BaseFragmentActivity<TableManagePresent
} }
@Override @Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { public void showEmptyView(boolean isSuccess, int size, Throwable t) {
super.onActivityResult(requestCode, resultCode, data); ISupportFragment fragment = getTopFragment();
if (requestCode == ADD_TABLE_RESULT_SUCCESS && resultCode == 200) { if (fragment instanceof TableListFragment) {
//更新餐檯列表數據 TableListFragment tableListFragment = (TableListFragment) fragment;
tableListFragment.showEmptyView(isSuccess, size, t);
} else if (requestCode == ADD_AREA_RESULT_SUCCESS && resultCode == 200) { } else if (fragment instanceof AreaListFragment) {
//更新區域數據 AreaListFragment areaListFragment = (AreaListFragment) fragment;
areaListFragment.showEmptyView(isSuccess, size, t);
} }
} }
......
...@@ -78,7 +78,7 @@ public class TableManageSectiontAdapter extends QMUIDefaultStickySectionAdapter< ...@@ -78,7 +78,7 @@ public class TableManageSectiontAdapter extends QMUIDefaultStickySectionAdapter<
viewHolder.tv_name.setText(tableItem.getTableName()); viewHolder.tv_name.setText(tableItem.getTableName());
if (tableItem.getServiceCharge() > 0) { if (tableItem.getServiceCharge() > 0) {
viewHolder.tv_service_fee.setText("$" + tableItem.getServiceCharge()); viewHolder.tv_service_fee.setText(tableItem.getServiceCharge() + "%");
viewHolder.tv_service_fee.setVisibility(View.VISIBLE); viewHolder.tv_service_fee.setVisibility(View.VISIBLE);
} else { } else {
viewHolder.tv_service_fee.setVisibility(View.INVISIBLE); viewHolder.tv_service_fee.setVisibility(View.INVISIBLE);
......
...@@ -136,8 +136,8 @@ public class AddAreaFragment extends BaseFragment<AddAreaPresenter> implements A ...@@ -136,8 +136,8 @@ public class AddAreaFragment extends BaseFragment<AddAreaPresenter> implements A
if (mTableArea != null) { if (mTableArea != null) {
ed_area_name.setText(mTableArea.getRegionName()); ed_area_name.setText(mTableArea.getRegionName());
} }
ed_area_name.setWidth(QMUIDisplayHelper.dp2px(mActivity,65)); ed_area_name.setWidth(QMUIDisplayHelper.dp2px(mActivity,75));
ed_area_name.setTextSize(QMUIDisplayHelper.dpToPx(8)); ed_area_name.setTextSize(16);
ed_area_name.setBackgroundColor(ContextCompat.getColor(mContext, R.color.trans)); ed_area_name.setBackgroundColor(ContextCompat.getColor(mContext, R.color.trans));
areaNameItemView.addAccessoryCustomView(ed_area_name); areaNameItemView.addAccessoryCustomView(ed_area_name);
...@@ -149,12 +149,12 @@ public class AddAreaFragment extends BaseFragment<AddAreaPresenter> implements A ...@@ -149,12 +149,12 @@ public class AddAreaFragment extends BaseFragment<AddAreaPresenter> implements A
if (mTableArea != null) { if (mTableArea != null) {
ed_area_sort.setText(mTableArea.getSort() + ""); ed_area_sort.setText(mTableArea.getSort() + "");
} }
ed_area_sort.setWidth(QMUIDisplayHelper.dp2px(mActivity,65)); ed_area_sort.setWidth(QMUIDisplayHelper.dp2px(mActivity,75));
ed_area_sort.setTextSize(QMUIDisplayHelper.dpToPx(8)); ed_area_sort.setTextSize(16);
ed_area_sort.setBackgroundColor(ContextCompat.getColor(mContext, R.color.trans)); ed_area_sort.setBackgroundColor(ContextCompat.getColor(mContext, R.color.trans));
areaSortItemView.addAccessoryCustomView(ed_area_sort); areaSortItemView.addAccessoryCustomView(ed_area_sort);
areaSortItemView.showNewTip(true); areaSortItemView.showNewTip(true);
areaSortItemView.setNewTipImage(R.drawable.ic_delete_bill_method); areaSortItemView.setNewTipImage(R.drawable.question_prompt);
areaSortItemView.setNewTipClick(new View.OnClickListener() { areaSortItemView.setNewTipClick(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
......
...@@ -121,7 +121,7 @@ public class AddTableFragment extends BaseFragment<AddTablePresenter> implements ...@@ -121,7 +121,7 @@ public class AddTableFragment extends BaseFragment<AddTablePresenter> implements
rightButton.setOnClickListener(v -> { rightButton.setOnClickListener(v -> {
if (mTableItem != null) { if (mTableItem != null) {
//修改 //修改
mActivity.updateTable(createAddTableRequest()); mActivity.updateTable(createUpdateTableRequest(mTableItem.getId()));
} else { } else {
if (addCondition()) { if (addCondition()) {
mActivity.addTable(createAddTableRequest()); mActivity.addTable(createAddTableRequest());
...@@ -155,8 +155,8 @@ public class AddTableFragment extends BaseFragment<AddTablePresenter> implements ...@@ -155,8 +155,8 @@ public class AddTableFragment extends BaseFragment<AddTablePresenter> implements
if (mTableItem != null) { if (mTableItem != null) {
tableNameEditText.setText(mTableItem.getTableName()); tableNameEditText.setText(mTableItem.getTableName());
} }
tableNameEditText.setWidth(QMUIDisplayHelper.dp2px(mActivity,65)); tableNameEditText.setWidth(QMUIDisplayHelper.dp2px(mActivity, 75));
tableNameEditText.setTextSize(QMUIDisplayHelper.dpToPx(8)); tableNameEditText.setTextSize(16);
tableNameEditText.setBackgroundColor(ContextCompat.getColor(mContext, R.color.trans)); tableNameEditText.setBackgroundColor(ContextCompat.getColor(mContext, R.color.trans));
tableNameItemView.addAccessoryCustomView(tableNameEditText); tableNameItemView.addAccessoryCustomView(tableNameEditText);
...@@ -167,22 +167,22 @@ public class AddTableFragment extends BaseFragment<AddTablePresenter> implements ...@@ -167,22 +167,22 @@ public class AddTableFragment extends BaseFragment<AddTablePresenter> implements
if (mTableItem != null) { if (mTableItem != null) {
peopleNumberEditText.setText(mTableItem.getSeatCount() + ""); peopleNumberEditText.setText(mTableItem.getSeatCount() + "");
} }
peopleNumberEditText.setWidth(QMUIDisplayHelper.dp2px(mActivity,65)); peopleNumberEditText.setWidth(QMUIDisplayHelper.dp2px(mActivity, 75));
peopleNumberEditText.setTextSize(QMUIDisplayHelper.dpToPx(8)); peopleNumberEditText.setTextSize(16);
peopleNumberEditText.setBackgroundColor(ContextCompat.getColor(mContext, R.color.trans)); peopleNumberEditText.setBackgroundColor(ContextCompat.getColor(mContext, R.color.trans));
peopleNumberEditText.setInputType(EditorInfo.TYPE_CLASS_NUMBER); peopleNumberEditText.setInputType(EditorInfo.TYPE_CLASS_NUMBER);
peopleNumberItemView.addAccessoryCustomView(peopleNumberEditText); peopleNumberItemView.addAccessoryCustomView(peopleNumberEditText);
QMUICommonListItemView serverchargeItemView = mGroupListView.createItemView("服務費"); QMUICommonListItemView serverchargeItemView = mGroupListView.createItemView("服務費%");
serverchargeItemView.setAccessoryType(QMUICommonListItemView.ACCESSORY_TYPE_CUSTOM); serverchargeItemView.setAccessoryType(QMUICommonListItemView.ACCESSORY_TYPE_CUSTOM);
serverchargeEditText = new EditText(mContext); serverchargeEditText = new EditText(mContext);
serverchargeEditText.setHint("0"); serverchargeEditText.setHint("0");
if (mTableItem != null) { if (mTableItem != null) {
serverchargeEditText.setText(mTableItem.getServiceCharge() + ""); serverchargeEditText.setText(mTableItem.getServiceCharge() + "");
} }
serverchargeEditText.setWidth(QMUIDisplayHelper.dp2px(mActivity,65)); serverchargeEditText.setWidth(QMUIDisplayHelper.dp2px(mActivity, 75));
serverchargeEditText.setTextSize(QMUIDisplayHelper.dpToPx(8)); serverchargeEditText.setTextSize(16);
serverchargeEditText.setBackgroundColor(ContextCompat.getColor(mContext, R.color.trans)); serverchargeEditText.setBackgroundColor(ContextCompat.getColor(mContext, R.color.trans));
serverchargeEditText.setInputType(EditorInfo.TYPE_CLASS_NUMBER); serverchargeEditText.setInputType(EditorInfo.TYPE_CLASS_NUMBER);
serverchargeItemView.addAccessoryCustomView(serverchargeEditText); serverchargeItemView.addAccessoryCustomView(serverchargeEditText);
...@@ -191,17 +191,19 @@ public class AddTableFragment extends BaseFragment<AddTablePresenter> implements ...@@ -191,17 +191,19 @@ public class AddTableFragment extends BaseFragment<AddTablePresenter> implements
QMUICommonListItemView tableSortItemView = mGroupListView.createItemView("餐桌排序"); QMUICommonListItemView tableSortItemView = mGroupListView.createItemView("餐桌排序");
tableSortItemView.setAccessoryType(QMUICommonListItemView.ACCESSORY_TYPE_CUSTOM); tableSortItemView.setAccessoryType(QMUICommonListItemView.ACCESSORY_TYPE_CUSTOM);
tableSortEditText = new EditText(mContext); tableSortEditText = new EditText(mContext);
tableSortEditText.setHint("100"); // tableSortEditText.setHint("100");
if (mTableItem != null) { if (mTableItem != null) {
tableSortEditText.setText(mTableItem.getSort() + ""); tableSortEditText.setText(mTableItem.getSort() + "");
}else {
tableSortEditText.setText("100");
} }
tableSortEditText.setWidth(QMUIDisplayHelper.dp2px(mActivity,65)); tableSortEditText.setWidth(QMUIDisplayHelper.dp2px(mActivity, 75));
tableSortEditText.setTextSize(QMUIDisplayHelper.dpToPx(8)); tableSortEditText.setTextSize(16);
tableSortEditText.setBackgroundColor(ContextCompat.getColor(mContext, R.color.trans)); tableSortEditText.setBackgroundColor(ContextCompat.getColor(mContext, R.color.trans));
tableSortEditText.setInputType(EditorInfo.TYPE_CLASS_NUMBER); tableSortEditText.setInputType(EditorInfo.TYPE_CLASS_NUMBER);
tableSortItemView.addAccessoryCustomView(tableSortEditText); tableSortItemView.addAccessoryCustomView(tableSortEditText);
tableSortItemView.showNewTip(true); tableSortItemView.showNewTip(true);
tableSortItemView.setNewTipImage(R.drawable.ic_delete_bill_method); tableSortItemView.setNewTipImage(R.drawable.question_prompt);
tableSortItemView.setNewTipClick(new View.OnClickListener() { tableSortItemView.setNewTipClick(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
...@@ -235,7 +237,7 @@ public class AddTableFragment extends BaseFragment<AddTablePresenter> implements ...@@ -235,7 +237,7 @@ public class AddTableFragment extends BaseFragment<AddTablePresenter> implements
List<TableArea> areaList, List<TableArea> areaList,
boolean allowDragDismiss, boolean allowDragDismiss,
boolean withMark) { boolean withMark) {
QMUIBottomSheet.BottomListSheetBuilder builder = new QMUIBottomSheet.BottomListSheetBuilder(mContext); QMUIBottomSheet.BottomListSheetBuilder builder = new QMUIBottomSheet.BottomListSheetBuilder(getActivity());
builder.setGravityCenter(gravityCenter) builder.setGravityCenter(gravityCenter)
.setTitle(title) .setTitle(title)
.setAddCancelBtn(addCancelBtn) .setAddCancelBtn(addCancelBtn)
...@@ -244,9 +246,9 @@ public class AddTableFragment extends BaseFragment<AddTablePresenter> implements ...@@ -244,9 +246,9 @@ public class AddTableFragment extends BaseFragment<AddTablePresenter> implements
.setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() {
@Override @Override
public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) {
dialog.cancel();
currentAreaId = areaList.get(position).getId(); currentAreaId = areaList.get(position).getId();
areaItemView.setDetailText(tag); areaItemView.setDetailText(tag);
dialog.dismiss();
} }
}); });
if (withMark) { if (withMark) {
...@@ -289,14 +291,15 @@ public class AddTableFragment extends BaseFragment<AddTablePresenter> implements ...@@ -289,14 +291,15 @@ public class AddTableFragment extends BaseFragment<AddTablePresenter> implements
String areaName = ""; String areaName = "";
if (mTableItem != null) { if (mTableItem != null) {
//修改操作 //修改操作
mTableItem.getRegionName(); areaName = mTableItem.getRegionName();
currentAreaId = mTableItem.getId(); currentAreaId = mTableItem.getRegionId();
} else { } else {
//添加操作 //添加操作
if (mActivity.getTableAreaList().size() > 0) { if (mActivity.getTableAreaList().size() > 0) {
areaName = mActivity.getTableAreaList().get(0).getRegionName(); areaName = mActivity.getTableAreaList().get(0).getRegionName();
currentAreaId = mActivity.getTableAreaList().get(0).getId();
} else { } else {
areaName = "大廳"; areaName = "其他";
} }
} }
return areaName; return areaName;
...@@ -339,7 +342,7 @@ public class AddTableFragment extends BaseFragment<AddTablePresenter> implements ...@@ -339,7 +342,7 @@ public class AddTableFragment extends BaseFragment<AddTablePresenter> implements
public TableRequest.Add createAddTableRequest() { public TableRequest.Add createAddTableRequest() {
TableRequest.Add addTableRequest = new TableRequest.Add(); TableRequest.Add addTableRequest = new TableRequest.Add();
addTableRequest.setAreaId(currentAreaId); addTableRequest.setRegionId(currentAreaId);
addTableRequest.setRestaurantId(GsaCloudApplication.getRestaurantId(mActivity)); addTableRequest.setRestaurantId(GsaCloudApplication.getRestaurantId(mActivity));
addTableRequest.setTableName(tableNameEditText.getText().toString()); addTableRequest.setTableName(tableNameEditText.getText().toString());
if (!TextUtils.isEmpty(serverchargeEditText.getText().toString())) { if (!TextUtils.isEmpty(serverchargeEditText.getText().toString())) {
...@@ -354,6 +357,24 @@ public class AddTableFragment extends BaseFragment<AddTablePresenter> implements ...@@ -354,6 +357,24 @@ public class AddTableFragment extends BaseFragment<AddTablePresenter> implements
return addTableRequest; return addTableRequest;
} }
public TableRequest.Update createUpdateTableRequest(int id) {
TableRequest.Update update = new TableRequest.Update();
update.setId(id);
update.setRegionId(currentAreaId);
update.setRestaurantId(GsaCloudApplication.getRestaurantId(mActivity));
update.setTableName(tableNameEditText.getText().toString());
if (!TextUtils.isEmpty(serverchargeEditText.getText().toString())) {
update.setServiceCharge(Double.parseDouble(serverchargeEditText.getText().toString()));
}
if (!TextUtils.isEmpty(peopleNumberEditText.getText().toString())) {
update.setSeatCount(Integer.parseInt(peopleNumberEditText.getText().toString()));
}
if (!TextUtils.isEmpty(tableSortEditText.getText().toString())) {
update.setSort(Integer.parseInt(tableSortEditText.getText().toString()));
}
return update;
}
public boolean addCondition() { public boolean addCondition() {
if (TextUtils.isEmpty(tableNameEditText.getText().toString())) { if (TextUtils.isEmpty(tableNameEditText.getText().toString())) {
showMessage("請輸入餐檯名稱"); showMessage("請輸入餐檯名稱");
......
...@@ -2,6 +2,7 @@ package com.gingersoft.gsa.cloud.manager.mvp.ui.fragment; ...@@ -2,6 +2,7 @@ package com.gingersoft.gsa.cloud.manager.mvp.ui.fragment;
import android.content.Intent; import android.content.Intent;
import android.graphics.Color; import android.graphics.Color;
import android.net.ParseException;
import android.os.Bundle; import android.os.Bundle;
import android.os.Message; import android.os.Message;
import android.text.TextUtils; import android.text.TextUtils;
...@@ -23,6 +24,8 @@ import com.gingersoft.gsa.cloud.manager.mvp.ui.adapter.AreaManageAdapter; ...@@ -23,6 +24,8 @@ import com.gingersoft.gsa.cloud.manager.mvp.ui.adapter.AreaManageAdapter;
import com.gingersoft.gsa.cloud.ui.recylcler.decorator.DividerItemDecoration; import com.gingersoft.gsa.cloud.ui.recylcler.decorator.DividerItemDecoration;
import com.gingersoft.gsa.cloud.ui.widget.dialog.CommonTipDialog; import com.gingersoft.gsa.cloud.ui.widget.dialog.CommonTipDialog;
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog; import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
import com.google.gson.JsonIOException;
import com.google.gson.JsonParseException;
import com.jess.arms.base.BaseFragment; import com.jess.arms.base.BaseFragment;
import com.jess.arms.base.DefaultAdapter; import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.di.component.AppComponent; import com.jess.arms.di.component.AppComponent;
...@@ -33,6 +36,7 @@ import com.gingersoft.gsa.cloud.manager.mvp.contract.AreaListContract; ...@@ -33,6 +36,7 @@ import com.gingersoft.gsa.cloud.manager.mvp.contract.AreaListContract;
import com.gingersoft.gsa.cloud.manager.mvp.presenter.AreaListPresenter; import com.gingersoft.gsa.cloud.manager.mvp.presenter.AreaListPresenter;
import com.gingersoft.gsa.cloud.manager.R; import com.gingersoft.gsa.cloud.manager.R;
import com.qmuiteam.qmui.alpha.QMUIAlphaFrameLayout;
import com.qmuiteam.qmui.alpha.QMUIAlphaTextView; import com.qmuiteam.qmui.alpha.QMUIAlphaTextView;
import com.qmuiteam.qmui.widget.QMUIEmptyView; import com.qmuiteam.qmui.widget.QMUIEmptyView;
import com.qmuiteam.qmui.widget.QMUITopBarLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout;
...@@ -47,6 +51,10 @@ import com.yanzhenjie.recyclerview.touch.OnItemMoveListener; ...@@ -47,6 +51,10 @@ import com.yanzhenjie.recyclerview.touch.OnItemMoveListener;
import com.yanzhenjie.recyclerview.touch.OnItemStateChangedListener; import com.yanzhenjie.recyclerview.touch.OnItemStateChangedListener;
import com.yanzhenjie.recyclerview.widget.DefaultItemDecoration; import com.yanzhenjie.recyclerview.widget.DefaultItemDecoration;
import org.json.JSONException;
import java.net.SocketTimeoutException;
import java.net.UnknownHostException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
...@@ -87,8 +95,8 @@ public class AreaListFragment extends BaseFragment<AreaListPresenter> implements ...@@ -87,8 +95,8 @@ public class AreaListFragment extends BaseFragment<AreaListPresenter> implements
@BindView(R2.id.emptyView) @BindView(R2.id.emptyView)
QMUIEmptyView mEmptyView; QMUIEmptyView mEmptyView;
@BindView(R2.id.tv_add_area) @BindView(R2.id.fl_add_area)
QMUIAlphaTextView tv_add_area; QMUIAlphaFrameLayout fl_add_area;
@BindView(R2.id.ll_bottom_operat) @BindView(R2.id.ll_bottom_operat)
LinearLayout ll_bottom_operat; LinearLayout ll_bottom_operat;
...@@ -144,6 +152,7 @@ public class AreaListFragment extends BaseFragment<AreaListPresenter> implements ...@@ -144,6 +152,7 @@ public class AreaListFragment extends BaseFragment<AreaListPresenter> implements
rightButton.setOnClickListener(v -> { rightButton.setOnClickListener(v -> {
isRadioEdit = !isRadioEdit; isRadioEdit = !isRadioEdit;
if (isRadioEdit) { if (isRadioEdit) {
initCheckedStatus();
rightButton.setText("取消"); rightButton.setText("取消");
} else { } else {
rightButton.setText("編輯"); rightButton.setText("編輯");
...@@ -176,7 +185,13 @@ public class AreaListFragment extends BaseFragment<AreaListPresenter> implements ...@@ -176,7 +185,13 @@ public class AreaListFragment extends BaseFragment<AreaListPresenter> implements
mAreaManageAdapter.setOnItemClickListener(new DefaultAdapter.OnRecyclerViewItemClickListener() { mAreaManageAdapter.setOnItemClickListener(new DefaultAdapter.OnRecyclerViewItemClickListener() {
@Override @Override
public void onItemClick(View view, int viewType, Object data, int position) { public void onItemClick(View view, int viewType, Object data, int position) {
start(AddAreaFragment.newInstance((TableArea) data)); if (isRadioEdit) {
TableArea tableArea = (TableArea) data;
tableArea.setChecked(!tableArea.isChecked());
mAreaManageAdapter.notifyDataSetChanged();
} else {
start(AddAreaFragment.newInstance((TableArea) data));
}
} }
}); });
} }
...@@ -187,17 +202,23 @@ public class AreaListFragment extends BaseFragment<AreaListPresenter> implements ...@@ -187,17 +202,23 @@ public class AreaListFragment extends BaseFragment<AreaListPresenter> implements
} }
mTableAreaList.addAll(tableAreaList); mTableAreaList.addAll(tableAreaList);
mAreaManageAdapter.notifyDataSetChanged(); mAreaManageAdapter.notifyDataSetChanged();
}
public void deleteSuccess(){
mEmptyView.hide();
recycler_area.setVisibility(View.VISIBLE);
} }
@Override @Override
public void setData(@Nullable Object data) { public void setData(@Nullable Object data) {
} }
@OnClick(R2.id.tv_add_area) private void initCheckedStatus(){
for (int i = 0; i < mTableAreaList.size(); i++) {
mTableAreaList.get(i).setChecked(false);
}
mAreaManageAdapter.notifyDataSetChanged();
}
@OnClick(R2.id.fl_add_area)
void onClickAddArea() { void onClickAddArea() {
startForResult(AddAreaFragment.newInstance(null), ADD_AREA_RESULT_SUCCESS); startForResult(AddAreaFragment.newInstance(null), ADD_AREA_RESULT_SUCCESS);
} }
...@@ -228,7 +249,7 @@ public class AreaListFragment extends BaseFragment<AreaListPresenter> implements ...@@ -228,7 +249,7 @@ public class AreaListFragment extends BaseFragment<AreaListPresenter> implements
} }
Class[] parameterTypes = {String.class}; Class[] parameterTypes = {String.class};
Object[] parameters = {ids}; Object[] parameters = {ids};
CommonTipDialog.showDoubtDialog(mActivity, "是否刪除所選區域", TableManageActivity.class, mActivity, "deleteArea", parameterTypes, parameters); CommonTipDialog.showSurpisedDialog(mActivity, "是否刪除所選區域", TableManageActivity.class, mActivity, "deleteArea", parameterTypes, parameters);
} }
private String getDeleteIds() { private String getDeleteIds() {
...@@ -277,6 +298,47 @@ public class AreaListFragment extends BaseFragment<AreaListPresenter> implements ...@@ -277,6 +298,47 @@ public class AreaListFragment extends BaseFragment<AreaListPresenter> implements
_mActivity.onBackPressed(); _mActivity.onBackPressed();
} }
private View.OnClickListener onRetryClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
//重新加載
mActivity.queryAreas(null);
}
};
@Override
public void showEmptyView(boolean isSuccess, int size, Throwable t) {
if (t != null) {
if (t instanceof UnknownHostException) {
//沒有網絡
mEmptyView.show(false, getResources().getString(R.string.emptyView_mode_desc_fail_title), getResources().getString(R.string.emptyView_mode_desc_fail_desc), getResources().getString(R.string.emptyView_mode_desc_retry), onRetryClickListener);
} else if (t instanceof SocketTimeoutException) {
//請求超時
mEmptyView.show(false, getResources().getString(R.string.emptyView_mode_desc_fail_title), getResources().getString(R.string.emptyView_mode_desc_fail_desc), getResources().getString(R.string.emptyView_mode_desc_retry), onRetryClickListener);
} else if (t instanceof JsonParseException || t instanceof ParseException || t instanceof JSONException || t instanceof JsonIOException) {
//數據解析錯誤
mEmptyView.show(false, getResources().getString(R.string.response_error_data_parsing_error), null, getResources().getString(R.string.emptyView_mode_desc_retry), onRetryClickListener);
} else {
//其他error
mEmptyView.show(false, getResources().getString(R.string.emptyView_mode_desc_fail_title), null, getResources().getString(R.string.emptyView_mode_desc_retry), onRetryClickListener);
}
recycler_area.setVisibility(View.INVISIBLE);
return;
}
if (!isSuccess) {
mEmptyView.show(false, getResources().getString(R.string.emptyView_mode_desc_fail_title), null, getResources().getString(R.string.emptyView_mode_desc_retry), onRetryClickListener);
recycler_area.setVisibility(View.INVISIBLE);
return;
}
if (size == 0) {
mEmptyView.show(getResources().getString(R.string.emptyView_mode_desc_double), null);
recycler_area.setVisibility(View.INVISIBLE);
return;
}
mEmptyView.hide();
recycler_area.setVisibility(View.VISIBLE);
}
@Override @Override
public void setAdapter(DefaultAdapter adapter) { public void setAdapter(DefaultAdapter adapter) {
recycler_area.setAdapter(adapter); recycler_area.setAdapter(adapter);
...@@ -285,10 +347,10 @@ public class AreaListFragment extends BaseFragment<AreaListPresenter> implements ...@@ -285,10 +347,10 @@ public class AreaListFragment extends BaseFragment<AreaListPresenter> implements
private void showRadioEdit() { private void showRadioEdit() {
if (isRadioEdit) { if (isRadioEdit) {
tv_add_area.setVisibility(View.GONE); fl_add_area.setVisibility(View.GONE);
ll_bottom_operat.setVisibility(View.VISIBLE); ll_bottom_operat.setVisibility(View.VISIBLE);
} else { } else {
tv_add_area.setVisibility(View.VISIBLE); fl_add_area.setVisibility(View.VISIBLE);
ll_bottom_operat.setVisibility(View.GONE); ll_bottom_operat.setVisibility(View.GONE);
} }
} }
......
...@@ -2,6 +2,7 @@ package com.gingersoft.gsa.cloud.manager.mvp.ui.fragment; ...@@ -2,6 +2,7 @@ package com.gingersoft.gsa.cloud.manager.mvp.ui.fragment;
import android.content.Intent; import android.content.Intent;
import android.graphics.Rect; import android.graphics.Rect;
import android.net.ParseException;
import android.os.Bundle; import android.os.Bundle;
import android.os.Message; import android.os.Message;
import android.text.TextUtils; import android.text.TextUtils;
...@@ -28,6 +29,8 @@ import com.gingersoft.gsa.cloud.ui.bean.view.SectionHeader; ...@@ -28,6 +29,8 @@ import com.gingersoft.gsa.cloud.ui.bean.view.SectionHeader;
import com.gingersoft.gsa.cloud.ui.utils.AnimateUtils; import com.gingersoft.gsa.cloud.ui.utils.AnimateUtils;
import com.gingersoft.gsa.cloud.ui.widget.dialog.CommonTipDialog; import com.gingersoft.gsa.cloud.ui.widget.dialog.CommonTipDialog;
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog; import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
import com.google.gson.JsonIOException;
import com.google.gson.JsonParseException;
import com.jess.arms.base.BaseFragment; import com.jess.arms.base.BaseFragment;
import com.jess.arms.di.component.AppComponent; import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils; import com.jess.arms.utils.ArmsUtils;
...@@ -35,6 +38,7 @@ import com.gingersoft.gsa.cloud.manager.mvp.contract.TableListContract; ...@@ -35,6 +38,7 @@ import com.gingersoft.gsa.cloud.manager.mvp.contract.TableListContract;
import com.gingersoft.gsa.cloud.manager.mvp.presenter.TableListPresenter; import com.gingersoft.gsa.cloud.manager.mvp.presenter.TableListPresenter;
import com.gingersoft.gsa.cloud.manager.R; import com.gingersoft.gsa.cloud.manager.R;
import com.qmuiteam.qmui.alpha.QMUIAlphaFrameLayout;
import com.qmuiteam.qmui.alpha.QMUIAlphaTextView; import com.qmuiteam.qmui.alpha.QMUIAlphaTextView;
import com.qmuiteam.qmui.util.QMUIDisplayHelper; import com.qmuiteam.qmui.util.QMUIDisplayHelper;
import com.qmuiteam.qmui.widget.QMUIEmptyView; import com.qmuiteam.qmui.widget.QMUIEmptyView;
...@@ -46,6 +50,10 @@ import com.scwang.smartrefresh.layout.api.RefreshLayout; ...@@ -46,6 +50,10 @@ import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener;
import com.scwang.smartrefresh.layout.listener.OnRefreshListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
import org.json.JSONException;
import java.net.SocketTimeoutException;
import java.net.UnknownHostException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
...@@ -88,8 +96,8 @@ public class TableListFragment extends BaseFragment<TableListPresenter> implemen ...@@ -88,8 +96,8 @@ public class TableListFragment extends BaseFragment<TableListPresenter> implemen
@BindView(R2.id.emptyView) @BindView(R2.id.emptyView)
QMUIEmptyView mEmptyView; QMUIEmptyView mEmptyView;
@BindView(R2.id.tv_add_table) @BindView(R2.id.fl_add_table)
QMUIAlphaTextView tv_add_table; QMUIAlphaFrameLayout fl_add_table;
@BindView(R2.id.tv_area) @BindView(R2.id.tv_area)
QMUIAlphaTextView tv_area; QMUIAlphaTextView tv_area;
...@@ -102,7 +110,7 @@ public class TableListFragment extends BaseFragment<TableListPresenter> implemen ...@@ -102,7 +110,7 @@ public class TableListFragment extends BaseFragment<TableListPresenter> implemen
private List<TableArea> mAreaList = new ArrayList<>(); private List<TableArea> mAreaList = new ArrayList<>();
private TableManageSectiontAdapter mAdapter; private TableManageSectiontAdapter mAdapter;
private List<QMUISection<SectionHeader, TableItem>> mTableAreaSectionList; private List<QMUISection<SectionHeader, TableItem>> mTableAreaSectionList = new ArrayList<>();
/** /**
* 是否編輯 * 是否編輯
...@@ -168,6 +176,7 @@ public class TableListFragment extends BaseFragment<TableListPresenter> implemen ...@@ -168,6 +176,7 @@ public class TableListFragment extends BaseFragment<TableListPresenter> implemen
rightButton.setOnClickListener(v -> { rightButton.setOnClickListener(v -> {
isRadioEdit = !isRadioEdit; isRadioEdit = !isRadioEdit;
if (isRadioEdit) { if (isRadioEdit) {
initCheckedStatus();
rightButton.setText("取消"); rightButton.setText("取消");
} else { } else {
rightButton.setText("編輯"); rightButton.setText("編輯");
...@@ -209,7 +218,12 @@ public class TableListFragment extends BaseFragment<TableListPresenter> implemen ...@@ -209,7 +218,12 @@ public class TableListFragment extends BaseFragment<TableListPresenter> implemen
TableManageSectiontAdapter.ViewHolder viewHolder = (TableManageSectiontAdapter.ViewHolder) holder; TableManageSectiontAdapter.ViewHolder viewHolder = (TableManageSectiontAdapter.ViewHolder) holder;
if (viewHolder.getTvName().getText() != null) { if (viewHolder.getTvName().getText() != null) {
TableItem item = viewHolder.getTableItem(position); TableItem item = viewHolder.getTableItem(position);
start(AddTableFragment.newInstance(item)); if(isRadioEdit){
item.setChecked(!item.isChecked());
mAdapter.notifyDataSetChanged();
}else {
start(AddTableFragment.newInstance(item));
}
} }
} else { } else {
//點擊的頭部,折疊 //點擊的頭部,折疊
...@@ -233,7 +247,6 @@ public class TableListFragment extends BaseFragment<TableListPresenter> implemen ...@@ -233,7 +247,6 @@ public class TableListFragment extends BaseFragment<TableListPresenter> implemen
} }
}); });
mSectionLayout.setAdapter(mAdapter, true); mSectionLayout.setAdapter(mAdapter, true);
mAdapter.setData(mTableAreaSectionList);
} }
private RecyclerView.LayoutManager createLayoutManager() { private RecyclerView.LayoutManager createLayoutManager() {
...@@ -265,8 +278,11 @@ public class TableListFragment extends BaseFragment<TableListPresenter> implemen ...@@ -265,8 +278,11 @@ public class TableListFragment extends BaseFragment<TableListPresenter> implemen
item.setRegionId(-1); item.setRegionId(-1);
} }
} }
mTableAreaSectionList = mPresenter.tableAreaTransformToSection(mPresenter.assembleTableArea(mPresenter.assembleAreaList(mTableList), mTableList)); mTableAreaSectionList.addAll(mPresenter.tableAreaTransformToSection(mPresenter.assembleTableArea(mPresenter.assembleAreaList(mTableList), mTableList)));
mAdapter.setData(mTableAreaSectionList); mAdapter.setData(mTableAreaSectionList);
mEmptyView.hide();
mSectionLayout.setVisibility(View.VISIBLE);
} }
private void initParms() { private void initParms() {
...@@ -281,22 +297,26 @@ public class TableListFragment extends BaseFragment<TableListPresenter> implemen ...@@ -281,22 +297,26 @@ public class TableListFragment extends BaseFragment<TableListPresenter> implemen
} }
} }
public void deleteSuccess(){
}
@Override @Override
public void setData(@Nullable Object data) { public void setData(@Nullable Object data) {
} }
private void initCheckedStatus(){
for (int i = 0; i < mTableAreaSectionList.size(); i++) {
for (int j = 0; j < mTableAreaSectionList.get(i).getItemCount(); j++) {
mTableAreaSectionList.get(i).getItemAt(j).setChecked(false);
}
}
mAdapter.setData(mTableAreaSectionList);
}
@OnClick(R2.id.tv_area) @OnClick(R2.id.tv_area)
void onClickToArea() { void onClickToArea() {
startForResult(AreaListFragment.newInstance(), ADD_AREA_RESULT_SUCCESS); startForResult(AreaListFragment.newInstance(), ADD_AREA_RESULT_SUCCESS);
} }
@OnClick(R2.id.tv_add_table) @OnClick(R2.id.fl_add_table)
void onClickAddTable() { void onClickAddTable() {
startForResult(AddTableFragment.newInstance(null), ADD_TABLE_RESULT_SUCCESS); startForResult(AddTableFragment.newInstance(null), ADD_TABLE_RESULT_SUCCESS);
} }
...@@ -331,7 +351,7 @@ public class TableListFragment extends BaseFragment<TableListPresenter> implemen ...@@ -331,7 +351,7 @@ public class TableListFragment extends BaseFragment<TableListPresenter> implemen
} }
Class[] parameterTypes = {String.class}; Class[] parameterTypes = {String.class};
Object[] parameters = {ids}; Object[] parameters = {ids};
CommonTipDialog.showDoubtDialog(mActivity, "是否刪除所選餐檯", TableManageActivity.class, mActivity, "deleteTable", parameterTypes, parameters); CommonTipDialog.showSurpisedDialog(mActivity, "是否刪除所選餐檯", TableManageActivity.class, mActivity, "deleteTable", parameterTypes, parameters);
} }
...@@ -384,13 +404,55 @@ public class TableListFragment extends BaseFragment<TableListPresenter> implemen ...@@ -384,13 +404,55 @@ public class TableListFragment extends BaseFragment<TableListPresenter> implemen
_mActivity.finish(); _mActivity.finish();
} }
private View.OnClickListener onRetryClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
//重新加載
mActivity.queryAreas(null);
mActivity.queryTables(null);
}
};
@Override
public void showEmptyView(boolean isSuccess, int size, Throwable t) {
if (t != null) {
if (t instanceof UnknownHostException) {
//沒有網絡
mEmptyView.show(false, getResources().getString(R.string.emptyView_mode_desc_fail_title), getResources().getString(R.string.emptyView_mode_desc_fail_desc), getResources().getString(R.string.emptyView_mode_desc_retry), onRetryClickListener);
} else if (t instanceof SocketTimeoutException) {
//請求超時
mEmptyView.show(false, getResources().getString(R.string.emptyView_mode_desc_fail_title), getResources().getString(R.string.emptyView_mode_desc_fail_desc), getResources().getString(R.string.emptyView_mode_desc_retry), onRetryClickListener);
} else if (t instanceof JsonParseException || t instanceof ParseException || t instanceof JSONException || t instanceof JsonIOException) {
//數據解析錯誤
mEmptyView.show(false, getResources().getString(R.string.response_error_data_parsing_error), null, getResources().getString(R.string.emptyView_mode_desc_retry), onRetryClickListener);
} else {
//其他error
mEmptyView.show(false, getResources().getString(R.string.emptyView_mode_desc_fail_title), null, getResources().getString(R.string.emptyView_mode_desc_retry), onRetryClickListener);
}
mSectionLayout.setVisibility(View.INVISIBLE);
return;
}
if (!isSuccess) {
mEmptyView.show(false, getResources().getString(R.string.emptyView_mode_desc_fail_title), null, getResources().getString(R.string.emptyView_mode_desc_retry), onRetryClickListener);
mSectionLayout.setVisibility(View.INVISIBLE);
return;
}
if (size == 0) {
mEmptyView.show(getResources().getString(R.string.emptyView_mode_desc_double), null);
mSectionLayout.setVisibility(View.INVISIBLE);
return;
}
mEmptyView.hide();
mSectionLayout.setVisibility(View.VISIBLE);
}
private void showRadioEdit() { private void showRadioEdit() {
if (isRadioEdit) { if (isRadioEdit) {
tv_add_table.setVisibility(View.GONE); fl_add_table.setVisibility(View.GONE);
tv_area.setVisibility(View.GONE); tv_area.setVisibility(View.GONE);
ll_bottom_operat.setVisibility(View.VISIBLE); ll_bottom_operat.setVisibility(View.VISIBLE);
} else { } else {
tv_add_table.setVisibility(View.VISIBLE); fl_add_table.setVisibility(View.VISIBLE);
tv_area.setVisibility(View.VISIBLE); tv_area.setVisibility(View.VISIBLE);
ll_bottom_operat.setVisibility(View.GONE); ll_bottom_operat.setVisibility(View.GONE);
} }
......
...@@ -67,24 +67,40 @@ ...@@ -67,24 +67,40 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginLeft="@dimen/dp_1" android:layout_marginLeft="@dimen/dp_1"
android:layout_weight="1" android:layout_weight="1"
android:background="@color/green_400" android:background="@color/theme_red_color"
android:text="確認" android:text="刪除"
android:textColor="@color/theme_white_color" android:textColor="@color/theme_white_color"
android:textSize="@dimen/sp_14" /> android:textSize="@dimen/sp_14" />
</LinearLayout> </LinearLayout>
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView <!-- <com.qmuiteam.qmui.alpha.QMUIAlphaTextView-->
android:id="@+id/tv_add_area" <!-- android:id="@+id/tv_add_area"-->
<!-- android:layout_width="@dimen/dp_65"-->
<!-- android:layout_height="@dimen/dp_65"-->
<!-- android:layout_gravity="bottom|right"-->
<!-- android:layout_marginBottom="@dimen/dp_20"-->
<!-- android:layout_marginRight="@dimen/dp_20"-->
<!-- android:background="@drawable/manage_shape_add_btn_oval"-->
<!-- android:gravity="center"-->
<!-- android:text="+"-->
<!-- android:textColor="@color/theme_white_color"-->
<!-- android:textSize="@dimen/sp_14" />-->
<com.qmuiteam.qmui.alpha.QMUIAlphaFrameLayout
android:id="@+id/fl_add_area"
android:layout_width="@dimen/dp_65" android:layout_width="@dimen/dp_65"
android:layout_height="@dimen/dp_65" android:layout_height="@dimen/dp_65"
android:layout_gravity="bottom|right" android:layout_gravity="bottom|right"
android:layout_marginBottom="@dimen/dp_20" android:layout_marginBottom="@dimen/dp_20"
android:layout_marginRight="@dimen/dp_20" android:layout_marginRight="@dimen/dp_20"
android:background="@drawable/manage_shape_add_btn_oval" android:background="@drawable/manage_shape_add_btn_oval">
android:gravity="center" <ImageView
android:text="+" android:layout_width="wrap_content"
android:textColor="@color/theme_white_color" android:layout_height="wrap_content"
android:textSize="@dimen/sp_14" /> android:layout_gravity="center"
android:src="@drawable/add_white" />
</com.qmuiteam.qmui.alpha.QMUIAlphaFrameLayout>
<com.qmuiteam.qmui.widget.QMUITopBarLayout <com.qmuiteam.qmui.widget.QMUITopBarLayout
android:id="@+id/topbar" android:id="@+id/topbar"
......
...@@ -16,52 +16,53 @@ ...@@ -16,52 +16,53 @@
android:id="@+id/frameLayout" android:id="@+id/frameLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_above="@+id/ll_bottom_operat"/> android:layout_marginBottom="@dimen/dp_40">
<com.scwang.smartrefresh.layout.SmartRefreshLayout <com.scwang.smartrefresh.layout.SmartRefreshLayout
android:id="@+id/refreshLayout" android:id="@+id/refreshLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
app:srlEnableLoadMore="false" app:srlEnableLoadMore="false"
android:layout_above="@+id/tv_add_table"
android:layout_marginBottom="@dimen/dp_10"> android:layout_marginBottom="@dimen/dp_10">
<com.qmuiteam.qmui.widget.section.QMUIStickySectionLayout <com.qmuiteam.qmui.widget.section.QMUIStickySectionLayout
android:id="@+id/section_table" android:id="@+id/section_table"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_above="@+id/tv_add_table"
android:layout_marginBottom="@dimen/dp_10"/> android:layout_marginBottom="@dimen/dp_10"/>
</com.scwang.smartrefresh.layout.SmartRefreshLayout> </com.scwang.smartrefresh.layout.SmartRefreshLayout>
</FrameLayout>
<com.qmuiteam.qmui.widget.QMUIEmptyView <com.qmuiteam.qmui.widget.QMUIEmptyView
android:id="@+id/emptyView" android:id="@+id/emptyView"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:fitsSystemWindows="true" /> android:fitsSystemWindows="true" />
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView <com.qmuiteam.qmui.alpha.QMUIAlphaFrameLayout
android:id="@+id/tv_add_table" android:id="@+id/fl_add_table"
android:layout_width="@dimen/dp_65" android:layout_width="@dimen/dp_65"
android:layout_height="@dimen/dp_65" android:layout_height="@dimen/dp_65"
android:layout_alignParentBottom="true" android:layout_alignParentBottom="true"
android:layout_alignParentRight="true" android:layout_alignParentRight="true"
android:layout_marginBottom="@dimen/dp_20" android:layout_marginBottom="@dimen/dp_15"
android:layout_marginRight="@dimen/dp_20" android:layout_marginRight="@dimen/dp_20"
android:background="@drawable/manage_shape_add_btn_oval" android:background="@drawable/manage_shape_add_btn_oval">
android:gravity="center" <ImageView
android:text="+" android:layout_width="wrap_content"
android:textColor="@color/theme_white_color" android:layout_height="wrap_content"
android:textSize="@dimen/sp_14" /> android:layout_gravity="center"
android:src="@drawable/add_white" />
</com.qmuiteam.qmui.alpha.QMUIAlphaFrameLayout>
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView <com.qmuiteam.qmui.alpha.QMUIAlphaTextView
android:id="@+id/tv_area" android:id="@+id/tv_area"
android:layout_width="@dimen/dp_65" android:layout_width="@dimen/dp_65"
android:layout_height="@dimen/dp_65" android:layout_height="@dimen/dp_65"
android:layout_alignParentBottom="true" android:layout_alignParentBottom="true"
android:layout_marginBottom="@dimen/dp_20" android:layout_marginBottom="@dimen/dp_15"
android:layout_marginRight="@dimen/dp_15" android:layout_marginRight="@dimen/dp_15"
android:layout_toLeftOf="@+id/tv_add_table" android:layout_toLeftOf="@+id/fl_add_table"
android:background="@drawable/ui_shape_theme_oval" android:background="@drawable/ui_shape_theme_oval"
android:gravity="center" android:gravity="center"
android:text="@string/manager_area" android:text="@string/manager_area"
...@@ -106,8 +107,8 @@ ...@@ -106,8 +107,8 @@
android:layout_marginLeft="@dimen/dp_1" android:layout_marginLeft="@dimen/dp_1"
android:textColor="@color/theme_white_color" android:textColor="@color/theme_white_color"
android:textSize="@dimen/sp_14" android:textSize="@dimen/sp_14"
android:background="@color/green_400" android:background="@color/theme_red_color"
android:text="確認"/> android:text="刪除"/>
</LinearLayout> </LinearLayout>
</RelativeLayout> </RelativeLayout>
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:ellipsize="end" android:ellipsize="end"
android:maxLines="1" android:maxLines="1"
android:text="餐檯1" android:text=""
android:textColor="@color/theme_black" android:textColor="@color/theme_black"
android:textSize="@dimen/sp_16" /> android:textSize="@dimen/sp_16" />
...@@ -28,8 +28,8 @@ ...@@ -28,8 +28,8 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_2" android:layout_marginTop="@dimen/dp_2"
android:text="$2" android:text=""
android:textColor="@color/theme_grey_color" android:textColor="@color/theme_text_pice_color"
android:textSize="@dimen/sp_16" /> android:textSize="@dimen/sp_16" />
<CheckBox <CheckBox
......
...@@ -41,7 +41,7 @@ public class PrintPrjKitchen extends PrinterRoot { ...@@ -41,7 +41,7 @@ public class PrintPrjKitchen extends PrinterRoot {
public Map<String, List<Bitmap>> getPrintBitmap(Context mContext) { public Map<String, List<Bitmap>> getPrintBitmap(Context mContext) {
Map<String, List<Bitmap>> bitmapMaps = new HashMap<>(); Map<String, List<Bitmap>> bitmapMaps = new HashMap<>();
//通過打印位置生成多張用於打印的bitmap //通過打印位置生成多張用於打印的bitmap
for (Map.Entry<String, List<PrjBean.DataBean.Bean>> entry : prjMap.entrySet()) { for (Map.Entry<String, List<PrjBean.DataBean.Bean>> entry : getPrjMap().entrySet()) {
String key = entry.getKey(); String key = entry.getKey();
List<Bitmap> bitmaps = new ArrayList<>(); List<Bitmap> bitmaps = new ArrayList<>();
......
...@@ -165,22 +165,24 @@ public class QMUIBottomSheet extends QMUIBaseDialog { ...@@ -165,22 +165,24 @@ public class QMUIBottomSheet extends QMUIBaseDialog {
public void cancel() { public void cancel() {
if (mBehavior.getState() == BottomSheetBehavior.STATE_HIDDEN) { if (mBehavior.getState() == BottomSheetBehavior.STATE_HIDDEN) {
mAnimateToCancel = false; mAnimateToCancel = false;
super.cancel(); // super.cancel();
} else { } else {
mAnimateToCancel = true; mAnimateToCancel = true;
mBehavior.setState(BottomSheetBehavior.STATE_HIDDEN); mBehavior.setState(BottomSheetBehavior.STATE_HIDDEN);
} }
super.cancel();
} }
@Override @Override
public void dismiss() { public void dismiss() {
if (mBehavior.getState() == BottomSheetBehavior.STATE_HIDDEN) { if (mBehavior.getState() == BottomSheetBehavior.STATE_HIDDEN) {
mAnimateToDismiss = false; mAnimateToDismiss = false;
super.dismiss(); // super.dismiss();
} else { } else {
mAnimateToDismiss = true; mAnimateToDismiss = true;
mBehavior.setState(BottomSheetBehavior.STATE_HIDDEN); mBehavior.setState(BottomSheetBehavior.STATE_HIDDEN);
} }
super.dismiss();
} }
public void setOnBottomSheetShowListener(OnBottomSheetShowListener onBottomSheetShowListener) { public void setOnBottomSheetShowListener(OnBottomSheetShowListener onBottomSheetShowListener) {
......
...@@ -151,12 +151,10 @@ public class QMUIDialog extends QMUIBaseDialog { ...@@ -151,12 +151,10 @@ public class QMUIDialog extends QMUIBaseDialog {
assignMessageTvWithAttr(tv, hasTitle(), R.attr.qmui_dialog_message_content_style); assignMessageTvWithAttr(tv, hasTitle(), R.attr.qmui_dialog_message_content_style);
tv.setText(mMessage); tv.setText(mMessage);
tv.setMovementMethodDefault(); tv.setMovementMethodDefault();
QMUISkinValueBuilder valueBuilder = QMUISkinValueBuilder.acquire(); QMUISkinValueBuilder valueBuilder = QMUISkinValueBuilder.acquire();
valueBuilder.textColor(R.attr.qmui_skin_support_dialog_message_text_color); valueBuilder.textColor(R.attr.qmui_skin_support_dialog_message_text_color);
QMUISkinHelper.setSkinValue(tv, valueBuilder); QMUISkinHelper.setSkinValue(tv, valueBuilder);
QMUISkinValueBuilder.release(valueBuilder); QMUISkinValueBuilder.release(valueBuilder);
return wrapWithScroll(tv); return wrapWithScroll(tv);
} }
return null; return null;
......
...@@ -9,6 +9,7 @@ include 'cc-register', ...@@ -9,6 +9,7 @@ include 'cc-register',
'qm-arch-annotation', 'qm-arch-annotation',
'qm-skin-maker', 'qm-skin-maker',
'fragmentation_core', 'fragmentation_core',
'updateApk',
'base-module', 'base-module',
'login-module', 'login-module',
...@@ -18,6 +19,6 @@ include 'cc-register', ...@@ -18,6 +19,6 @@ include 'cc-register',
'print-module', 'print-module',
'manager-module', 'manager-module',
'manager-module', 'manager-module',
'other_order_mode', ':fragmentation_core' 'other_order_mode'
...@@ -28,10 +28,10 @@ ...@@ -28,10 +28,10 @@
android:value="ConfigModule" /> android:value="ConfigModule" />
<meta-data <meta-data
android:name="design_width_in_dp" android:name="design_width_in_dp"
android:value="380"/> android:value="360"/>
<meta-data <meta-data
android:name="design_height_in_dp" android:name="design_height_in_dp"
android:value="680"/> android:value="640"/>
</application> </application>
<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" /> <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
......
...@@ -3,13 +3,13 @@ package com.gingersoft.gsa.cloud.table.di.component; ...@@ -3,13 +3,13 @@ package com.gingersoft.gsa.cloud.table.di.component;
import dagger.BindsInstance; import dagger.BindsInstance;
import dagger.Component; import dagger.Component;
import com.gingersoft.gsa.cloud.table.mvp.contract.FineItemOneselfContract;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.FineItemOneselfFragment;
import com.jess.arms.di.component.AppComponent; import com.jess.arms.di.component.AppComponent;
import com.gingersoft.gsa.cloud.table.di.module.FineItemKindModule; import com.gingersoft.gsa.cloud.table.di.module.FineItemOneselfModule;
import com.gingersoft.gsa.cloud.table.mvp.contract.FineItemKindContract;
import com.jess.arms.di.scope.FragmentScope; import com.jess.arms.di.scope.FragmentScope;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.FineItemKindFragment;
/** /**
...@@ -25,17 +25,17 @@ import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.FineItemKindFragment; ...@@ -25,17 +25,17 @@ import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.FineItemKindFragment;
* ================================================ * ================================================
*/ */
@FragmentScope @FragmentScope
@Component(modules = FineItemKindModule.class, dependencies = AppComponent.class) @Component(modules = FineItemOneselfModule.class, dependencies = AppComponent.class)
public interface FineItemKindComponent { public interface FineItemOneselfComponent {
void inject(FineItemKindFragment fragment); void inject(FineItemOneselfFragment fragment);
@Component.Builder @Component.Builder
interface Builder { interface Builder {
@BindsInstance @BindsInstance
FineItemKindComponent.Builder view(FineItemKindContract.View view); FineItemOneselfComponent.Builder view(FineItemOneselfContract.View view);
FineItemKindComponent.Builder appComponent(AppComponent appComponent); FineItemOneselfComponent.Builder appComponent(AppComponent appComponent);
FineItemKindComponent build(); FineItemOneselfComponent build();
} }
} }
\ No newline at end of file
...@@ -3,8 +3,8 @@ package com.gingersoft.gsa.cloud.table.di.module; ...@@ -3,8 +3,8 @@ package com.gingersoft.gsa.cloud.table.di.module;
import dagger.Binds; import dagger.Binds;
import dagger.Module; import dagger.Module;
import com.gingersoft.gsa.cloud.table.mvp.contract.FineItemKindContract; import com.gingersoft.gsa.cloud.table.mvp.contract.FineItemOneselfContract;
import com.gingersoft.gsa.cloud.table.mvp.model.FineItemKindModel; import com.gingersoft.gsa.cloud.table.mvp.model.FineItemOneselfModel;
/** /**
...@@ -20,8 +20,8 @@ import com.gingersoft.gsa.cloud.table.mvp.model.FineItemKindModel; ...@@ -20,8 +20,8 @@ import com.gingersoft.gsa.cloud.table.mvp.model.FineItemKindModel;
* ================================================ * ================================================
*/ */
@Module @Module
public abstract class FineItemKindModule { public abstract class FineItemOneselfModule {
@Binds @Binds
abstract FineItemKindContract.Model bindFineItemKindModel(FineItemKindModel model); abstract FineItemOneselfContract.Model bindFineItemOneselfModel(FineItemOneselfModel model);
} }
\ No newline at end of file
...@@ -2,10 +2,14 @@ package com.gingersoft.gsa.cloud.table.mvp.contract; ...@@ -2,10 +2,14 @@ package com.gingersoft.gsa.cloud.table.mvp.contract;
import android.app.Activity; import android.app.Activity;
import com.gingersoft.gsa.cloud.database.bean.ComboItem;
import com.gingersoft.gsa.cloud.database.bean.Modifier;
import com.jess.arms.base.DefaultAdapter; import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.mvp.IView; import com.jess.arms.mvp.IView;
import com.jess.arms.mvp.IModel; import com.jess.arms.mvp.IModel;
import java.util.List;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
...@@ -21,27 +25,25 @@ import androidx.recyclerview.widget.RecyclerView; ...@@ -21,27 +25,25 @@ import androidx.recyclerview.widget.RecyclerView;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a> * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================ * ================================================
*/ */
public interface FineItemKindContract { public interface FineItemOneselfContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息 //对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView { interface View extends IView {
Activity getCurrentActivity(); Activity getCurrentActivity();
void setFineItemKindAdapter(DefaultAdapter adapter); void setComboAdapter(DefaultAdapter adapter);
void setFineItemKindItemAdapter(DefaultAdapter adapter);
void setFineItemKindRecycleSpanCount(int size); void setModifierAdapter(DefaultAdapter adapter);
void setFineItemKindItemRecycleSpanCount(int size); void setModifierTop(int margins);
RecyclerView getRecycle_fine_item_kind();
RecyclerView getRecycle_fine_item_kind_item();
} }
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存 //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface Model extends IModel { interface Model extends IModel {
List<Modifier> queryDB_ModifierList(long fid, int mode);
List<ComboItem> queryDB_ComboList(long fid);
} }
} }
...@@ -4,6 +4,7 @@ import com.gingersoft.gsa.cloud.base.common.bean.BaseResult; ...@@ -4,6 +4,7 @@ import com.gingersoft.gsa.cloud.base.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.base.common.bean.FoodBean; import com.gingersoft.gsa.cloud.base.common.bean.FoodBean;
import com.gingersoft.gsa.cloud.database.bean.ComboItem; import com.gingersoft.gsa.cloud.database.bean.ComboItem;
import com.gingersoft.gsa.cloud.database.bean.Food; import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.database.bean.Modifier;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.SoldoutCtrFood; import com.gingersoft.gsa.cloud.table.mvp.model.bean.SoldoutCtrFood;
import com.jess.arms.base.DefaultAdapter; import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.mvp.IModel; import com.jess.arms.mvp.IModel;
...@@ -75,14 +76,14 @@ public interface SoldoutCtrlContract { ...@@ -75,14 +76,14 @@ public interface SoldoutCtrlContract {
List<Food> queryDB_FoodList(long parentId); List<Food> queryDB_FoodList(long parentId);
List<ComboItem> queryDB_ComboList(long fid);
Observable<BaseResult> getCurrentSoldoutFood(RequestBody requestBody); Observable<BaseResult> getCurrentSoldoutFood(RequestBody requestBody);
Observable<BaseResult> insertSoldoutCtrl(RequestBody requestBody, int operatTtpe, int type); Observable<BaseResult> insertSoldoutCtrl(RequestBody requestBody, int operatTtpe, int type);
Observable<BaseResult> restoreSoldoutCtrl( RequestBody requestBody); Observable<BaseResult> restoreSoldoutCtrl( RequestBody requestBody);
Observable<BaseResult> updateInvisible( RequestBody requestBody);
Observable<FoodBean> downFoodList(int restaurantId); Observable<FoodBean> downFoodList(int restaurantId);
Observable<BaseResult> downFoodModifier(int restaurantId); Observable<BaseResult> downFoodModifier(int restaurantId);
......
package com.gingersoft.gsa.cloud.table.mvp.contract; package com.gingersoft.gsa.cloud.table.mvp.contract;
import com.gingersoft.gsa.cloud.base.common.bean.BaseResult; import com.gingersoft.gsa.cloud.base.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.database.bean.Modifier;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.BaseRespose; import com.gingersoft.gsa.cloud.table.mvp.model.bean.BaseRespose;
import com.gingersoft.gsa.cloud.base.common.bean.TableBean; import com.gingersoft.gsa.cloud.base.common.bean.TableBean;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.TableDetail; import com.gingersoft.gsa.cloud.table.mvp.model.bean.TableDetail;
...@@ -63,6 +64,8 @@ public interface TableContract { ...@@ -63,6 +64,8 @@ public interface TableContract {
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存 //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface Model extends IModel { interface Model extends IModel {
List<Modifier> queryDB_ModifierList(long fid, int mode);
Observable<TableBean> getTables(int restaurantId); Observable<TableBean> getTables(int restaurantId);
Observable<TableDetail> getTable(int tableId); Observable<TableDetail> getTable(int tableId);
......
...@@ -2,15 +2,20 @@ package com.gingersoft.gsa.cloud.table.mvp.model; ...@@ -2,15 +2,20 @@ package com.gingersoft.gsa.cloud.table.mvp.model;
import android.app.Application; import android.app.Application;
import com.gingersoft.gsa.cloud.database.bean.ComboItem;
import com.gingersoft.gsa.cloud.database.bean.Modifier;
import com.gingersoft.gsa.cloud.database.utils.ComboItemDaoUtils;
import com.gingersoft.gsa.cloud.database.utils.ModifierDaoUtils;
import com.gingersoft.gsa.cloud.table.mvp.contract.FineItemOneselfContract;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.jess.arms.integration.IRepositoryManager; import com.jess.arms.integration.IRepositoryManager;
import com.jess.arms.mvp.BaseModel; import com.jess.arms.mvp.BaseModel;
import com.jess.arms.di.scope.FragmentScope; import com.jess.arms.di.scope.FragmentScope;
import javax.inject.Inject; import java.util.List;
import com.gingersoft.gsa.cloud.table.mvp.contract.FineItemKindContract; import javax.inject.Inject;
/** /**
...@@ -26,14 +31,14 @@ import com.gingersoft.gsa.cloud.table.mvp.contract.FineItemKindContract; ...@@ -26,14 +31,14 @@ import com.gingersoft.gsa.cloud.table.mvp.contract.FineItemKindContract;
* ================================================ * ================================================
*/ */
@FragmentScope @FragmentScope
public class FineItemKindModel extends BaseModel implements FineItemKindContract.Model { public class FineItemOneselfModel extends BaseModel implements FineItemOneselfContract.Model {
@Inject @Inject
Gson mGson; Gson mGson;
@Inject @Inject
Application mApplication; Application mApplication;
@Inject @Inject
public FineItemKindModel(IRepositoryManager repositoryManager) { public FineItemOneselfModel(IRepositoryManager repositoryManager) {
super(repositoryManager); super(repositoryManager);
} }
...@@ -43,4 +48,17 @@ public class FineItemKindModel extends BaseModel implements FineItemKindContract ...@@ -43,4 +48,17 @@ public class FineItemKindModel extends BaseModel implements FineItemKindContract
this.mGson = null; this.mGson = null;
this.mApplication = null; this.mApplication = null;
} }
@Override
public List<Modifier> queryDB_ModifierList(long fid, int mode) {
ModifierDaoUtils daoUtils = new ModifierDaoUtils(mApplication);
return daoUtils.queryModifiersByFid(fid, mode);
}
@Override
public List<ComboItem> queryDB_ComboList(long fid) {
ComboItemDaoUtils comboItemDao = new ComboItemDaoUtils(mApplication);
List<ComboItem> foodCombo = comboItemDao.queryComboItemsByFidQueryBuilder(fid);
return foodCombo;
}
} }
\ No newline at end of file
...@@ -7,8 +7,10 @@ import com.gingersoft.gsa.cloud.base.common.bean.BaseResult; ...@@ -7,8 +7,10 @@ import com.gingersoft.gsa.cloud.base.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.base.common.bean.FoodBean; import com.gingersoft.gsa.cloud.base.common.bean.FoodBean;
import com.gingersoft.gsa.cloud.database.bean.ComboItem; import com.gingersoft.gsa.cloud.database.bean.ComboItem;
import com.gingersoft.gsa.cloud.database.bean.Food; import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.database.bean.Modifier;
import com.gingersoft.gsa.cloud.database.utils.ComboItemDaoUtils; import com.gingersoft.gsa.cloud.database.utils.ComboItemDaoUtils;
import com.gingersoft.gsa.cloud.database.utils.FoodDaoUtils; import com.gingersoft.gsa.cloud.database.utils.FoodDaoUtils;
import com.gingersoft.gsa.cloud.database.utils.ModifierDaoUtils;
import com.gingersoft.gsa.cloud.table.mvp.contract.SoldoutCtrlContract; import com.gingersoft.gsa.cloud.table.mvp.contract.SoldoutCtrlContract;
import com.gingersoft.gsa.cloud.table.mvp.model.service.MealService; import com.gingersoft.gsa.cloud.table.mvp.model.service.MealService;
import com.google.gson.Gson; import com.google.gson.Gson;
...@@ -78,13 +80,6 @@ public class SoldoutCtrlModel extends BaseModel implements SoldoutCtrlContract.M ...@@ -78,13 +80,6 @@ public class SoldoutCtrlModel extends BaseModel implements SoldoutCtrlContract.M
} }
@Override @Override
public List<ComboItem> queryDB_ComboList(long fid) {
ComboItemDaoUtils comboItemDao = new ComboItemDaoUtils(mApplication);
List<ComboItem> foodCombo = comboItemDao.queryComboItemsByFidQueryBuilder(fid);
return foodCombo;
}
@Override
public Observable<BaseResult> getCurrentSoldoutFood(RequestBody requestBody) { public Observable<BaseResult> getCurrentSoldoutFood(RequestBody requestBody) {
return mRepositoryManager.obtainRetrofitService(MealService.class) return mRepositoryManager.obtainRetrofitService(MealService.class)
.getCurrentSoldoutFood(requestBody); .getCurrentSoldoutFood(requestBody);
...@@ -123,6 +118,12 @@ public class SoldoutCtrlModel extends BaseModel implements SoldoutCtrlContract.M ...@@ -123,6 +118,12 @@ public class SoldoutCtrlModel extends BaseModel implements SoldoutCtrlContract.M
} }
@Override @Override
public Observable<BaseResult> updateInvisible(RequestBody requestBody) {
return mRepositoryManager.obtainRetrofitService(MealService.class)
.updateInvisible(requestBody);
}
@Override
public Observable<FoodBean> downFoodList(int restaurantId) { public Observable<FoodBean> downFoodList(int restaurantId) {
return mRepositoryManager.obtainRetrofitService(MealService.class) return mRepositoryManager.obtainRetrofitService(MealService.class)
.downFoodList(restaurantId); .downFoodList(restaurantId);
......
...@@ -2,6 +2,10 @@ package com.gingersoft.gsa.cloud.table.mvp.model; ...@@ -2,6 +2,10 @@ package com.gingersoft.gsa.cloud.table.mvp.model;
import android.app.Application; import android.app.Application;
import com.gingersoft.gsa.cloud.database.bean.ComboItem;
import com.gingersoft.gsa.cloud.database.bean.Modifier;
import com.gingersoft.gsa.cloud.database.utils.ComboItemDaoUtils;
import com.gingersoft.gsa.cloud.database.utils.ModifierDaoUtils;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.BaseRespose; import com.gingersoft.gsa.cloud.table.mvp.model.bean.BaseRespose;
import com.gingersoft.gsa.cloud.base.common.bean.TableBean; import com.gingersoft.gsa.cloud.base.common.bean.TableBean;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.TableDetail; import com.gingersoft.gsa.cloud.table.mvp.model.bean.TableDetail;
...@@ -17,6 +21,8 @@ import javax.inject.Inject; ...@@ -17,6 +21,8 @@ import javax.inject.Inject;
import com.gingersoft.gsa.cloud.table.mvp.contract.TableContract; import com.gingersoft.gsa.cloud.table.mvp.contract.TableContract;
import java.util.List;
import io.reactivex.Observable; import io.reactivex.Observable;
import okhttp3.RequestBody; import okhttp3.RequestBody;
...@@ -53,6 +59,12 @@ public class TableModel extends BaseModel implements TableContract.Model { ...@@ -53,6 +59,12 @@ public class TableModel extends BaseModel implements TableContract.Model {
} }
@Override @Override
public List<Modifier> queryDB_ModifierList(long fid, int mode) {
ModifierDaoUtils daoUtils = new ModifierDaoUtils(mApplication);
return daoUtils.queryModifiersByFid(fid, mode);
}
@Override
public Observable<TableBean> getTables(int restaurantId) { public Observable<TableBean> getTables(int restaurantId) {
return mRepositoryManager.obtainRetrofitService(TableService.class) return mRepositoryManager.obtainRetrofitService(TableService.class)
.getTables(restaurantId); .getTables(restaurantId);
......
...@@ -54,6 +54,8 @@ public class OrderDetailItem implements Serializable { ...@@ -54,6 +54,8 @@ public class OrderDetailItem implements Serializable {
private int totalPoints; private int totalPoints;
/**支付金額*/ /**支付金額*/
private double amount; private double amount;
/**賬單小數*/
private Double rounding;
private String payName; private String payName;
private String orderPayType; private String orderPayType;
private double tipsPrice; private double tipsPrice;
...@@ -126,6 +128,14 @@ public class OrderDetailItem implements Serializable { ...@@ -126,6 +128,14 @@ public class OrderDetailItem implements Serializable {
this.orderPayType = orderPayType; this.orderPayType = orderPayType;
} }
public Double getRounding() {
return rounding;
}
public void setRounding(Double rounding) {
this.rounding = rounding;
}
public double getTipsPrice() { public double getTipsPrice() {
return tipsPrice; return tipsPrice;
} }
......
...@@ -60,6 +60,25 @@ public class SoldoutCtrFood { ...@@ -60,6 +60,25 @@ public class SoldoutCtrFood {
return ""; return "";
} }
public SoldoutCtrFood() {
}
public SoldoutCtrFood(SoldoutCtrFood ctrFood) {
this.id = ctrFood.id;
this.restaurantId = ctrFood.restaurantId;
this.brandId = ctrFood.brandId;
this.foodId = ctrFood.foodId;
this.modifierId = ctrFood.modifierId;
this.type = ctrFood.type;
this.remainingNumber = ctrFood.remainingNumber;
this.useNumber = ctrFood.useNumber;
this.foodName = ctrFood.foodName;
this.foodName1 = ctrFood.foodName1;
this.foodName2 = ctrFood.foodName2;
this.isStop = ctrFood.isStop;
this.selected = ctrFood.selected;
}
public long getId() { public long getId() {
return id; return id;
} }
......
...@@ -19,6 +19,8 @@ public class DeleteOrderRequest { ...@@ -19,6 +19,8 @@ public class DeleteOrderRequest {
private List<Map<Byte, DeleteOrderRequest.DeleteBean>> mapsDelete; private List<Map<Byte, DeleteOrderRequest.DeleteBean>> mapsDelete;
private long orderId ; private long orderId ;
private byte type; private byte type;
/**賬單小數*/
private Double rounding;
private long reasonId; private long reasonId;
public List<Map<Byte, DeleteOrderRequest.DeleteBean>> getMapsDelete() { public List<Map<Byte, DeleteOrderRequest.DeleteBean>> getMapsDelete() {
...@@ -45,6 +47,14 @@ public class DeleteOrderRequest { ...@@ -45,6 +47,14 @@ public class DeleteOrderRequest {
this.type = type; this.type = type;
} }
public Double getRounding() {
return rounding;
}
public void setRounding(Double rounding) {
this.rounding = rounding;
}
public long getReasonId() { public long getReasonId() {
return reasonId; return reasonId;
} }
......
...@@ -42,6 +42,9 @@ public interface MealService { ...@@ -42,6 +42,9 @@ public interface MealService {
@POST("foodChecklist/updatePrg" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2) @POST("foodChecklist/updatePrg" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> restoreSoldoutCtrl(@Body RequestBody requestBody); Observable<BaseResult> restoreSoldoutCtrl(@Body RequestBody requestBody);
@POST("food/updateInvisible" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> updateInvisible(@Body RequestBody requestBody);
@POST("order/send" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2) @POST("order/send" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> createOrder(@Body RequestBody requestBody); Observable<BaseResult> createOrder(@Body RequestBody requestBody);
...@@ -75,7 +78,4 @@ public interface MealService { ...@@ -75,7 +78,4 @@ public interface MealService {
@GET(Api.food_modifiere_relation + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2) @GET(Api.food_modifiere_relation + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> downFoodModifier(@Query("restaurantId") int restaurantId); Observable<BaseResult> downFoodModifier(@Query("restaurantId") int restaurantId);
@POST("food/updateInvisible" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> updateInvisible(@Query("restaurantId") int restaurantId);
} }
...@@ -519,14 +519,23 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -519,14 +519,23 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
private void transferFood(TableBean.DataBean dataBean) { private void transferFood(TableBean.DataBean dataBean) {
String orderDetailsIds = getSelectOldFoodIds(); //删除食品前先保存一份
List<OrderDetail> recodeOrderFoods = new ArrayList<>();
recodeOrderFoods.addAll(getOrderFoodLists());
long orderId = MyOrderManage.getInstance().getOrderId(); String ids = getSelectedOldFoodIds();
if (TextUtils.isEmpty(ids)) {
return;
}
//删除已选中食品 重新计算账单小数 折扣
removeSelectedFoods();
updateOrderMoneyItem();
RequestBody requestBody = new FormBody.Builder() RequestBody requestBody = new FormBody.Builder()
.add("id", String.valueOf(dataBean.getId())) .add("id", String.valueOf(dataBean.getId()))
.add("orderId", String.valueOf(orderId)) .add("orderId", String.valueOf(MyOrderManage.getInstance().getOrderId()))
.add("orderDetailsIds", orderDetailsIds) .add("orderDetailsIds", ids)
.build(); .build();
mModel.transferFood(requestBody) mModel.transferFood(requestBody)
...@@ -538,10 +547,23 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -538,10 +547,23 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
.compose(RxLifecycleUtils.bindToLifecycle(mRootView)) .compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSubscriber<BaseRespose>(mErrorHandler) { .subscribe(new ErrorHandleSubscriber<BaseRespose>(mErrorHandler) {
private void restoreOrderDetails(){
getOrderFoodLists().addAll(recodeOrderFoods);
recodeOrderFoods.clear();
mSelectMealAdapter.notifyDataSetChanged();
}
@Override
public void onError(Throwable t) {
super.onError(t);
restoreOrderDetails();
}
@Override @Override
public void onNext(@NonNull BaseRespose info) { public void onNext(@NonNull BaseRespose info) {
if (info == null) { if (info == null) {
restoreOrderDetails();
mRootView.showMessage("轉移失敗"); mRootView.showMessage("轉移失敗");
return; return;
} }
...@@ -579,7 +601,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -579,7 +601,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
mDiscountDialog.setOnClickListener(new DiscountDialog.Builder.OnClickListener() { mDiscountDialog.setOnClickListener(new DiscountDialog.Builder.OnClickListener() {
@Override @Override
public void onItemClick(Discount item, int position) { public void onItemClick(Discount item, int position) {
addOrderDiscount(item, 0, false); addOrderDiscount(item, 0);
updateOrderMoneyItem(); updateOrderMoneyItem();
} }
}); });
......
...@@ -16,7 +16,9 @@ import com.gingersoft.gsa.cloud.base.utils.time.TimeUtils; ...@@ -16,7 +16,9 @@ import com.gingersoft.gsa.cloud.base.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.constans.GoldConstants; import com.gingersoft.gsa.cloud.constans.GoldConstants;
import com.gingersoft.gsa.cloud.database.bean.FoodCombo; import com.gingersoft.gsa.cloud.database.bean.FoodCombo;
import com.gingersoft.gsa.cloud.database.bean.Function; import com.gingersoft.gsa.cloud.database.bean.Function;
import com.gingersoft.gsa.cloud.database.bean.Modifier;
import com.gingersoft.gsa.cloud.database.utils.FoodComboDaoUtils; import com.gingersoft.gsa.cloud.database.utils.FoodComboDaoUtils;
import com.gingersoft.gsa.cloud.database.utils.ModifierDaoUtils;
import com.gingersoft.gsa.cloud.function.FunctionManager; import com.gingersoft.gsa.cloud.function.FunctionManager;
import com.gingersoft.gsa.cloud.table.ComponentTable; import com.gingersoft.gsa.cloud.table.ComponentTable;
import com.gingersoft.gsa.cloud.table.R; import com.gingersoft.gsa.cloud.table.R;
...@@ -56,6 +58,7 @@ import okhttp3.FormBody; ...@@ -56,6 +58,7 @@ import okhttp3.FormBody;
import okhttp3.RequestBody; import okhttp3.RequestBody;
import static com.gingersoft.gsa.cloud.base.common.bean.OrderDetail.FOOD_TYPE; import static com.gingersoft.gsa.cloud.base.common.bean.OrderDetail.FOOD_TYPE;
import static com.gingersoft.gsa.cloud.base.common.bean.OrderDetail.MODIFIER_TYPE;
/** /**
...@@ -393,23 +396,38 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont ...@@ -393,23 +396,38 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
* @param orderDetailsBeans * @param orderDetailsBeans
*/ */
private void setTopId(List<OrderBean.OrderDetailsBean> orderDetailsBeans) { private void setTopId(List<OrderBean.OrderDetailsBean> orderDetailsBeans) {
long paroductId = 0;
long topId = 0;
for (int i = 0; i < orderDetailsBeans.size(); i++) { for (int i = 0; i < orderDetailsBeans.size(); i++) {
OrderBean.OrderDetailsBean orderDetailsBean = orderDetailsBeans.get(i); OrderBean.OrderDetailsBean orderDetailsBean = orderDetailsBeans.get(i);
long topId;
if (orderDetailsBean.getType() == FOOD_TYPE) { if (orderDetailsBean.getType() == FOOD_TYPE) {
topId = getComboIdByFid((int) orderDetailsBean.getProductId()); int nextIndex = i + 1;
if (orderDetailsBean.getParentId() == 0 || (orderDetailsBeans.size() > nextIndex && orderDetailsBeans.get(nextIndex).getType() == MODIFIER_TYPE) ) {
paroductId = orderDetailsBean.getProductId();
}
topId = getComboIdByFid(paroductId);
} else { } else {
topId = CommonConfiguration.getInstance().getModifierTopIdMid((int) orderDetailsBean.getProductId()); topId = 0;
List<Modifier> modifierList = mModel.queryDB_ModifierList(paroductId, ModifierDaoUtils.modifierMode_All);
for (Modifier modifier : modifierList) {
if (modifier.getMid() == orderDetailsBean.getProductId()) {
topId = modifier.getTopId();
break;
}
}
// topId = CommonConfiguration.getInstance().getModifierTopIdMid((int) orderDetailsBean.getProductId());
}
if (orderDetailsBean.getParentId() != 0) {
orderDetailsBean.setTopId(topId);
} }
orderDetailsBean.setTopId(topId);
} }
} }
private long getComboIdByFid(int fid) { private long getComboIdByFid(long fid) {
FoodComboDaoUtils daoUtils = new FoodComboDaoUtils(GsaCloudApplication.getAppContext()); FoodComboDaoUtils daoUtils = new FoodComboDaoUtils(GsaCloudApplication.getAppContext());
List<FoodCombo> foodCombos = daoUtils.queryCombosByQueryBuilder(fid); List<FoodCombo> foodCombos = daoUtils.queryCombosByQueryBuilder(fid);
if (foodCombos != null && foodCombos.size() > 1) { if (foodCombos != null && foodCombos.size() > 0) {
return foodCombos.get(1).getComId(); return foodCombos.get(0).getComId();
} }
return 0; return 0;
} }
......
...@@ -68,6 +68,7 @@ import com.gingersoft.gsa.cloud.ui.view.RecyclerViewNoBugLinearLayoutManager; ...@@ -68,6 +68,7 @@ import com.gingersoft.gsa.cloud.ui.view.RecyclerViewNoBugLinearLayoutManager;
import com.gingersoft.gsa.cloud.ui.view.SearchKeyBoardView; import com.gingersoft.gsa.cloud.ui.view.SearchKeyBoardView;
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog; import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
import com.jess.arms.base.BaseActivity; import com.jess.arms.base.BaseActivity;
import com.jess.arms.base.BaseFragmentActivity;
import com.jess.arms.base.DefaultAdapter; import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.di.component.AppComponent; import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils; import com.jess.arms.utils.ArmsUtils;
...@@ -101,7 +102,7 @@ import static com.jess.arms.utils.Preconditions.checkNotNull; ...@@ -101,7 +102,7 @@ import static com.jess.arms.utils.Preconditions.checkNotNull;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a> * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================ * ================================================
*/ */
public class MealStandActivity extends BaseActivity<MealStandPresenter> implements MealStandContract.View, PagerGridLayoutManager.PageListener { public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter> implements MealStandContract.View, PagerGridLayoutManager.PageListener {
private SparseArray<View> map = new SparseArray<>(); private SparseArray<View> map = new SparseArray<>();
...@@ -356,9 +357,11 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen ...@@ -356,9 +357,11 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen
if (!mPresenter.foodGroupConditionFilter(datasBean, false)) { if (!mPresenter.foodGroupConditionFilter(datasBean, false)) {
return; return;
} }
datasBean.setSelected(true);
mPresenter.setRvMealClicked(false); mPresenter.setRvMealClicked(false);
mPresenter.changedMealByParentId(datasBean.getId()); mPresenter.changedMealByParentId(datasBean.getId());
mPresenter.setFoodSoldoutCtrData(); mPresenter.updateFoodSoldoutCtrData(mPresenter.getSoldoutCtrList());
} }
}); });
...@@ -650,11 +653,17 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen ...@@ -650,11 +653,17 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen
// } // }
@Override @Override
public void onBackPressed() { public void onBackPressedSupport() {
super.onBackPressed(); super.onBackPressedSupport();
returnBeforeActivity(true); returnBeforeActivity(true);
} }
// @Override
// public void onBackPressed() {
// super.onBackPressed();
// returnBeforeActivity(true);
// }
public void returnBeforeActivity(boolean initTable) { public void returnBeforeActivity(boolean initTable) {
SPUtils.put(this, MealConstant.EXIT_IS_PLU_MODE, isPluMode); SPUtils.put(this, MealConstant.EXIT_IS_PLU_MODE, isPluMode);
if (initTable && OpenTableManage.getDefault().getTableBean() != null && !MyOrderManage.getInstance().isModifyOrder()) { if (initTable && OpenTableManage.getDefault().getTableBean() != null && !MyOrderManage.getInstance().isModifyOrder()) {
...@@ -1045,11 +1054,11 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen ...@@ -1045,11 +1054,11 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen
productId = mPresenter.getCurrentOrderDetailBean().getProductId(); productId = mPresenter.getCurrentOrderDetailBean().getProductId();
} }
if (mPresenter.getSelectMealAdapter().getSelectedMode() == SelectMealAdapter.SINGLE_SELECTED) { if (mPresenter.getSelectMealAdapter().getSelectedMode() == SelectMealAdapter.SINGLE_SELECTED) {
modMsgFineItemFragment.onModMsgMidEvent(productId); modMsgFineItemFragment.loadModMsgData(productId);
modSasteFineItemFragment.onModSasteEvent(productId); modSasteFineItemFragment.loadModSasteData(productId);
} else { } else {
modMsgFineItemFragment.onModCommMidEvent(productId); modMsgFineItemFragment.loadModCommData(productId);
modSasteFineItemFragment.onModSasteEvent(productId); modSasteFineItemFragment.loadModSasteData(productId);
} }
setFineItemSlodoutListFull(mPresenter.getSoldoutCtrList()); setFineItemSlodoutListFull(mPresenter.getSoldoutCtrList());
} }
...@@ -1061,10 +1070,12 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen ...@@ -1061,10 +1070,12 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen
*/ */
public void setFineItemSlodoutListFull(List<SoldoutCtrFood> slodoutListFull) { public void setFineItemSlodoutListFull(List<SoldoutCtrFood> slodoutListFull) {
if (modMsgFineItemFragment != null) { if (modMsgFineItemFragment != null) {
modMsgFineItemFragment.updateCurrentSlodoutFoodList_Full(slodoutListFull); modMsgFineItemFragment.setModifierSoldoutFoodList_Full(slodoutListFull);
modMsgFineItemFragment.updateParentModifierSlodoutFoodList_Full();
} }
if (modSasteFineItemFragment != null) { if (modSasteFineItemFragment != null) {
modSasteFineItemFragment.updateCurrentSlodoutFoodList_Full(slodoutListFull); modSasteFineItemFragment.setModifierSoldoutFoodList_Full(slodoutListFull);
modSasteFineItemFragment.updateParentModifierSlodoutFoodList_Full();
} }
} }
......
...@@ -40,6 +40,7 @@ import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.InputTableFragment; ...@@ -40,6 +40,7 @@ import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.InputTableFragment;
import com.gingersoft.gsa.cloud.table.mvp.ui.widget.ChooseNumberDialog; import com.gingersoft.gsa.cloud.table.mvp.ui.widget.ChooseNumberDialog;
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog; import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
import com.jess.arms.base.BaseActivity; import com.jess.arms.base.BaseActivity;
import com.jess.arms.base.BaseFragmentActivity;
import com.jess.arms.base.DefaultAdapter; import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.di.component.AppComponent; import com.jess.arms.di.component.AppComponent;
import com.jess.arms.integration.AppManager; import com.jess.arms.integration.AppManager;
...@@ -86,7 +87,7 @@ import static com.jess.arms.utils.Preconditions.checkNotNull; ...@@ -86,7 +87,7 @@ import static com.jess.arms.utils.Preconditions.checkNotNull;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a> * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================ * ================================================
*/ */
public class OrderContentActivity extends BaseActivity<OrderContentPresenter> implements OrderContentContract.View { public class OrderContentActivity extends BaseFragmentActivity<OrderContentPresenter> implements OrderContentContract.View {
@Inject @Inject
AppManager mAppManager; AppManager mAppManager;
...@@ -253,11 +254,18 @@ public class OrderContentActivity extends BaseActivity<OrderContentPresenter> im ...@@ -253,11 +254,18 @@ public class OrderContentActivity extends BaseActivity<OrderContentPresenter> im
// backPressed(); // backPressed();
// } // }
@Override @Override
public void onBackPressed() { public void onBackPressedSupport() {
super.onBackPressedSupport();
backPressed(); backPressed();
} }
// @Override
// public void onBackPressed() {
// backPressed();
// }
@Override @Override
public void initIntent() { public void initIntent() {
......
...@@ -151,7 +151,12 @@ public class OrderDetailActivity extends BaseActivity<OrderDetailPresenter> impl ...@@ -151,7 +151,12 @@ public class OrderDetailActivity extends BaseActivity<OrderDetailPresenter> impl
@Override @Override
public void initData(@Nullable Bundle savedInstanceState) { public void initData(@Nullable Bundle savedInstanceState) {
scrollview.post(new Runnable() {
@Override
public void run() {
scrollview.scrollTo(0,0);
}
});
initOrderDetail(mOrderDetailItem); initOrderDetail(mOrderDetailItem);
} }
...@@ -189,9 +194,13 @@ public class OrderDetailActivity extends BaseActivity<OrderDetailPresenter> impl ...@@ -189,9 +194,13 @@ public class OrderDetailActivity extends BaseActivity<OrderDetailPresenter> impl
if (mOrderCenterMoneyList.size() > 0) { if (mOrderCenterMoneyList.size() > 0) {
mOrderCenterMoneyList.clear(); mOrderCenterMoneyList.clear();
} }
Discount discount = getOrderDiscount(orderDetailItem, totalMoney); List<SectionTextItem3> discountSections = getOrderDiscountSections(orderDetailItem, totalMoney);
if (discount != null) { if (discountSections != null) {
mOrderCenterMoneyList.addAll(SectionTextItem3.discountTransSectionTextItem3(discount)); mOrderCenterMoneyList.addAll(discountSections);
}
SectionTextItem3 roudingSection = getOrderRoudingSection(orderDetailItem);
if (roudingSection != null) {
mOrderCenterMoneyList.add(roudingSection);
} }
if (mOrderCenterMoneyAdapter == null) { if (mOrderCenterMoneyAdapter == null) {
mOrderCenterMoneyAdapter = new OrderCenterMoneyAdapter(mOrderCenterMoneyList); mOrderCenterMoneyAdapter = new OrderCenterMoneyAdapter(mOrderCenterMoneyList);
...@@ -259,7 +268,13 @@ public class OrderDetailActivity extends BaseActivity<OrderDetailPresenter> impl ...@@ -259,7 +268,13 @@ public class OrderDetailActivity extends BaseActivity<OrderDetailPresenter> impl
return payMethodList; return payMethodList;
} }
private Discount getOrderDiscount(OrderDetailItem orderDetailItem, double totalMoney) { /**
* 獲取賬單折扣列
* @param orderDetailItem
* @param totalMoney
* @return
*/
private List<SectionTextItem3> getOrderDiscountSections(OrderDetailItem orderDetailItem, double totalMoney) {
if (orderDetailItem.getRemark() != null) { if (orderDetailItem.getRemark() != null) {
//折扣 //折扣
Discount discount = new Discount(); Discount discount = new Discount();
...@@ -268,7 +283,19 @@ public class OrderDetailActivity extends BaseActivity<OrderDetailPresenter> impl ...@@ -268,7 +283,19 @@ public class OrderDetailActivity extends BaseActivity<OrderDetailPresenter> impl
discount.setDiscount_value(orderDetailItem.getDiscountValue()); discount.setDiscount_value(orderDetailItem.getDiscountValue());
double discountPrice = Discount.calculationDiscount(discount, totalMoney); double discountPrice = Discount.calculationDiscount(discount, totalMoney);
discount.setAmount(discountPrice); discount.setAmount(discountPrice);
return discount; return SectionTextItem3.discountTransSectionTextItem3(discount);
}
return null;
}
/**
* 獲取賬單小數列
* @param orderDetailItem
* @return
*/
private SectionTextItem3 getOrderRoudingSection(OrderDetailItem orderDetailItem) {
if (orderDetailItem.getRounding() != null && orderDetailItem.getRounding() != 0) {
return SectionTextItem3.roundingTransSectionTextItem3(orderDetailItem.getRounding());
} }
return null; return null;
} }
......
...@@ -148,13 +148,13 @@ public class FineItemTwoAdapter extends DefaultAdapter<Modifier> { ...@@ -148,13 +148,13 @@ public class FineItemTwoAdapter extends DefaultAdapter<Modifier> {
} }
private void setReturnButton(Modifier datasBean) { private void setReturnButton(Modifier datasBean) {
// tv_food_name.setBackgroundColor(datasBean.getColor());
tv_food_name.setTextColor(android.graphics.Color.parseColor("#FFFFFF"));
tv_food_name.setMaxWidth(mColwidth); tv_food_name.setMaxWidth(mColwidth);
tv_food_name.setMinWidth(mColwidth); tv_food_name.setMinWidth(mColwidth);
tv_food_name.setWidth(mColwidth); tv_food_name.setWidth(mColwidth);
tv_food_name.setText(datasBean.getModifierName()); tv_food_name.setText(datasBean.getModifierName());
tv_food_name.setTextColor(android.graphics.Color.parseColor("#FFFFFF"));
tv_food_name.setBackgroundColor(datasBean.getBgColor());
tv_food_name.setTextSize(mModFontSize); tv_food_name.setTextSize(mModFontSize);
tv_food_name.setHeight(mColHeight); tv_food_name.setHeight(mColHeight);
tv_food_name.setGravity(Gravity.CENTER); tv_food_name.setGravity(Gravity.CENTER);
...@@ -172,7 +172,7 @@ public class FineItemTwoAdapter extends DefaultAdapter<Modifier> { ...@@ -172,7 +172,7 @@ public class FineItemTwoAdapter extends DefaultAdapter<Modifier> {
String desc = ""; String desc = "";
// switch (GsaCloudApplication.androidSetting.getDataLanguage()) { // switch (GsaCloudApplication.androidSetting.getDataLanguage()) {
// case 1: // case 1:
// desc = datasBean.getDesc1(); desc = datasBean.getModifierName();
// break; // break;
// case 2: // case 2:
// desc = datasBean.getDesc2(); // desc = datasBean.getDesc2();
......
package com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal; package com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal;
import android.content.Context; import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.GradientDrawable; import android.graphics.drawable.GradientDrawable;
import android.text.TextUtils;
import android.view.Gravity; import android.view.Gravity;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView; import android.widget.TextView;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication; import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.database.bean.ComboItem; import com.gingersoft.gsa.cloud.database.bean.ComboItem;
import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.database.bean.Modifier; import com.gingersoft.gsa.cloud.database.bean.Modifier;
import com.gingersoft.gsa.cloud.table.R; import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.R2; import com.gingersoft.gsa.cloud.table.R2;
...@@ -97,7 +102,9 @@ public class ComboAdapter extends DefaultAdapter<ComboItem> { ...@@ -97,7 +102,9 @@ public class ComboAdapter extends DefaultAdapter<ComboItem> {
initModifierName(datasBean.getModifier()); initModifierName(datasBean.getModifier());
initModifierSoldout(datasBean.getModifier()); initModifierSoldout(datasBean.getModifier());
} }
setSolodStatus(datasBean);
initComboLayoutParams(); initComboLayoutParams();
tv_name.setOnClickListener(new View.OnClickListener() { tv_name.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
...@@ -186,6 +193,38 @@ public class ComboAdapter extends DefaultAdapter<ComboItem> { ...@@ -186,6 +193,38 @@ public class ComboAdapter extends DefaultAdapter<ComboItem> {
initComboColor(datasBean); initComboColor(datasBean);
} }
private void setSolodStatus(ComboItem datasBean) {
tv_soldout.setMaxHeight(OrderNumberChildFontSize);
tv_soldout.setMinHeight(OrderNumberChildFontSize);
tv_soldout.setTextSize(OrderNumberChildFontSize);
tv_soldout.setTextColor(Color.parseColor("#000000"));
tv_soldout.setBackgroundDrawable(mContext.getResources().getDrawable(R.drawable.ui_selector_white_rect));
tv_soldout.setMinWidth(15);
tv_soldout.setTextSize(8);
tv_soldout.setGravity(Gravity.CENTER);
RelativeLayout.LayoutParams lp2 = new RelativeLayout.LayoutParams(new ViewGroup.MarginLayoutParams(60, 40));
lp2.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
lp2.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
tv_soldout.setLayoutParams(lp2);
tv_soldout.setVisibility(View.INVISIBLE);
iv_qty_sold.setVisibility(View.INVISIBLE);
String qty = datasBean.getCurrentMaxNumber();
if (TextUtils.isEmpty(qty)) {
tv_soldout.setVisibility(View.INVISIBLE);
} else {
if (qty.equalsIgnoreCase("售罄")) {
iv_qty_sold.setVisibility(View.VISIBLE);
} else {
tv_soldout.setVisibility(View.VISIBLE);
tv_soldout.setText(qty);
}
}
}
private void initComboColor(ComboItem datasBean) { private void initComboColor(ComboItem datasBean) {
GradientDrawable drawable = new GradientDrawable(); GradientDrawable drawable = new GradientDrawable();
drawable.setShape(GradientDrawable.RECTANGLE); drawable.setShape(GradientDrawable.RECTANGLE);
......
...@@ -50,8 +50,6 @@ public class FoodGroupAdapter extends DefaultAdapter<Food> { ...@@ -50,8 +50,6 @@ public class FoodGroupAdapter extends DefaultAdapter<Food> {
private int mParentColHeight; private int mParentColHeight;
private int mLayoutQtyHeight; private int mLayoutQtyHeight;
private int currentSelectPosition = 0;
/** /**
* 作為那個頁面的適配器:1=餐牌頁;2=沽清頁 * 作為那個頁面的適配器:1=餐牌頁;2=沽清頁
*/ */
...@@ -124,15 +122,8 @@ public class FoodGroupAdapter extends DefaultAdapter<Food> { ...@@ -124,15 +122,8 @@ public class FoodGroupAdapter extends DefaultAdapter<Food> {
for (int i = 0; i < mInfos.size(); i++) { for (int i = 0; i < mInfos.size(); i++) {
mInfos.get(i).setSelected(false); mInfos.get(i).setSelected(false);
} }
if (currentSelectPosition != position) {
//设置当前选中item颜色
datasBean.setSelected(true);
tv_name.setBackgroundColor(mContext.getResources().getColor(R.color.orange_500));
//保存上次操作的position
currentSelectPosition = position;
}
notifyDataSetChanged();
mOnItemClickListener.onItemClick(datasBean, position); mOnItemClickListener.onItemClick(datasBean, position);
notifyDataSetChanged();
} }
} }
}); });
......
package com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal; package com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal;
import android.content.Context; import android.content.Context;
import android.text.TextUtils;
import android.view.Gravity; import android.view.Gravity;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
...@@ -145,32 +146,29 @@ public class ModifierAdapter extends DefaultAdapter<Modifier> { ...@@ -145,32 +146,29 @@ public class ModifierAdapter extends DefaultAdapter<Modifier> {
private void initModifierSoldout(Modifier datasBean) { private void initModifierSoldout(Modifier datasBean) {
// if (datasBean.isSoldout()) { // String qty = datasBean.getCurrentMaxNumber();
// iv_qty_sold.setVisibility(View.VISIBLE); // if (qty.equals("")) {
// tv_soldout.setVisibility(View.INVISIBLE);
// } else { // } else {
// iv_qty_sold.setVisibility(View.INVISIBLE);
// }
// int maxNumber = datasBean.getMaxNumber();
// int number = datasBean.getNumber();
// if (number >= maxNumber) {
// tv_soldout.setVisibility(View.VISIBLE); // tv_soldout.setVisibility(View.VISIBLE);
// tv_soldout.setText(maxNumber); // tv_soldout.setText(datasBean.getCurrentMaxNumber());
// } else {
// tv_soldout.setVisibility(View.INVISIBLE);
// } // }
tv_soldout.setMaxHeight(OrderNumberChildShowSize);
tv_soldout.setMinHeight(OrderNumberChildShowSize);
tv_soldout.setTextSize(OrderNumberChildFontSize);
String qty = datasBean.getCurrentMaxNumber(); String qty = datasBean.getCurrentMaxNumber();
if (qty.equals("")) { if (TextUtils.isEmpty(qty)) {
tv_soldout.setVisibility(View.INVISIBLE); tv_soldout.setVisibility(View.INVISIBLE);
} else { } else {
tv_soldout.setVisibility(View.VISIBLE); if (qty.equalsIgnoreCase("售罄")) {
tv_soldout.setText(datasBean.getCurrentMaxNumber()); iv_qty_sold.setVisibility(View.VISIBLE);
} else {
tv_soldout.setVisibility(View.VISIBLE);
tv_soldout.setText(qty);
}
} }
tv_soldout.setMaxHeight(OrderNumberChildShowSize);
tv_soldout.setMinHeight(OrderNumberChildShowSize);
tv_soldout.setTextSize(OrderNumberChildFontSize);
} }
private void initModifierLayoutParams() { private void initModifierLayoutParams() {
......
...@@ -9,6 +9,7 @@ import android.view.View; ...@@ -9,6 +9,7 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication; import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.database.bean.Modifier;
import com.gingersoft.gsa.cloud.table.R; import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.R2; import com.gingersoft.gsa.cloud.table.R2;
import com.gingersoft.gsa.cloud.table.di.component.DaggerFineItemAllComponent; import com.gingersoft.gsa.cloud.table.di.component.DaggerFineItemAllComponent;
...@@ -24,6 +25,7 @@ import com.gingersoft.gsa.cloud.table.mvp.presenter.FineItemAllPresenter; ...@@ -24,6 +25,7 @@ import com.gingersoft.gsa.cloud.table.mvp.presenter.FineItemAllPresenter;
import org.simple.eventbus.Subscriber; import org.simple.eventbus.Subscriber;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
...@@ -94,25 +96,38 @@ public class FineItemAllFragment extends BaseFragment<FineItemAllPresenter> impl ...@@ -94,25 +96,38 @@ public class FineItemAllFragment extends BaseFragment<FineItemAllPresenter> impl
} }
public void updateCurrentSlodoutFoodList_Full(List<SoldoutCtrFood> event) { public void setModifierSoldoutFoodList_Full(List<SoldoutCtrFood> soldoutCtrFoodList) {
if (event == null) { if (soldoutCtrFoodList == null) {
return; return;
} }
mPresenter.updateParentModifierSlodoutFoodList_Full(event); mPresenter.setModifierSoldoutFoodList_Full(soldoutCtrFoodList);
} }
public void onModSasteEvent(long fid) { public void updateParentModifierSlodoutFoodList_Full() {
mPresenter.updateParentModifierSoldoutFoodList_Full();
}
public void loadModSasteData(long fid) {
mPresenter.initModSasteFineItemKindData(fid); mPresenter.initModSasteFineItemKindData(fid);
} }
public void onModMsgMidEvent(long fid) { public void loadModMsgData(long fid) {
mPresenter.initModMsgFineItemData(fid); mPresenter.initModMsgFineItemData(fid);
} }
public void onModCommMidEvent(long fid) { public void loadModCommData(long fid) {
mPresenter.initModCommFineItemKindData(fid); mPresenter.initModCommFineItemKindData(fid);
} }
private List<SoldoutCtrFood> getNewSoldoutCtrFoodList(List<SoldoutCtrFood> soldoutCtrFoodList) {
List<SoldoutCtrFood> newSoldoutCtrFoodList = new ArrayList<>();
for (SoldoutCtrFood soldoutCtrFood : soldoutCtrFoodList) {
SoldoutCtrFood newSoldout = new SoldoutCtrFood(soldoutCtrFood);
newSoldoutCtrFoodList.add(newSoldout);
}
return newSoldoutCtrFoodList;
}
@Override @Override
public void showLoading(String message) { public void showLoading(String message) {
...@@ -126,7 +141,7 @@ public class FineItemAllFragment extends BaseFragment<FineItemAllPresenter> impl ...@@ -126,7 +141,7 @@ public class FineItemAllFragment extends BaseFragment<FineItemAllPresenter> impl
@Override @Override
public void showMessage(@NonNull String message) { public void showMessage(@NonNull String message) {
checkNotNull(message); checkNotNull(message);
ArmsUtils.makeText(getCurrentActivity(),message); ArmsUtils.makeText(getCurrentActivity(), message);
} }
@Override @Override
...@@ -226,5 +241,4 @@ public class FineItemAllFragment extends BaseFragment<FineItemAllPresenter> impl ...@@ -226,5 +241,4 @@ public class FineItemAllFragment extends BaseFragment<FineItemAllPresenter> impl
} }
} }
...@@ -3,23 +3,29 @@ package com.gingersoft.gsa.cloud.table.mvp.ui.fragment; ...@@ -3,23 +3,29 @@ package com.gingersoft.gsa.cloud.table.mvp.ui.fragment;
import android.app.Activity; import android.app.Activity;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.os.Message;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication; import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.common.bean.TableBean;
import com.gingersoft.gsa.cloud.table.R; import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.R2; import com.gingersoft.gsa.cloud.table.R2;
import com.gingersoft.gsa.cloud.table.di.component.DaggerFineItemKindComponent; import com.gingersoft.gsa.cloud.table.di.component.DaggerFineItemOneselfComponent;
import com.gingersoft.gsa.cloud.table.mvp.contract.FineItemOneselfContract;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.SoldoutCtrFood;
import com.jess.arms.base.BaseFragment; import com.jess.arms.base.BaseFragment;
import com.jess.arms.base.DefaultAdapter; import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.di.component.AppComponent; import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils; import com.jess.arms.utils.ArmsUtils;
import com.gingersoft.gsa.cloud.table.mvp.contract.FineItemKindContract; import com.gingersoft.gsa.cloud.table.mvp.presenter.FineItemOneselfPresenter;
import com.gingersoft.gsa.cloud.table.mvp.presenter.FineItemKindPresenter;
import org.simple.eventbus.Subscriber; import org.simple.eventbus.Subscriber;
import java.util.List;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.recyclerview.widget.DefaultItemAnimator; import androidx.recyclerview.widget.DefaultItemAnimator;
...@@ -43,24 +49,23 @@ import static com.jess.arms.utils.Preconditions.checkNotNull; ...@@ -43,24 +49,23 @@ import static com.jess.arms.utils.Preconditions.checkNotNull;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a> * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================ * ================================================
*/ */
public class FineItemKindFragment extends BaseFragment<FineItemKindPresenter> implements FineItemKindContract.View { public class FineItemOneselfFragment extends BaseFragment<FineItemOneselfPresenter> implements FineItemOneselfContract.View {
@BindView(R2.id.recycle_fine_item_kind)
RecyclerView recycle_fine_item_kind; //细项分类
@BindView(R2.id.recycle_fine_item_kind_item) @BindView(R2.id.rv_combo)
RecyclerView recycle_fine_item_kind_item;//细项分类详细数据 RecyclerView rv_combo;
@BindView(R2.id.rv_modifier)
RecyclerView rv_modifier;
private int modCol; private long mFid;
public static FineItemKindFragment newInstance() { public static FineItemOneselfFragment newInstance() {
FineItemKindFragment fragment = new FineItemKindFragment(); FineItemOneselfFragment fragment = new FineItemOneselfFragment();
return fragment; return fragment;
} }
@Override @Override
public void setupFragmentComponent(@NonNull AppComponent appComponent) { public void setupFragmentComponent(@NonNull AppComponent appComponent) {
DaggerFineItemKindComponent //如找不到该类,请编译一下项目 DaggerFineItemOneselfComponent //如找不到该类,请编译一下项目
.builder() .builder()
.appComponent(appComponent) .appComponent(appComponent)
.view(this) .view(this)
...@@ -70,38 +75,33 @@ public class FineItemKindFragment extends BaseFragment<FineItemKindPresenter> im ...@@ -70,38 +75,33 @@ public class FineItemKindFragment extends BaseFragment<FineItemKindPresenter> im
@Override @Override
public View initView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { public View initView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.table_fragment_fine_item_kind, container, false); return inflater.inflate(R.layout.table_fragment_fine_itemoneself, container, false);
} }
@Override @Override
public void initData(@Nullable Bundle savedInstanceState) { public void initData(@Nullable Bundle savedInstanceState) {
modCol = GsaCloudApplication.androidSetting.getModCol();
mPresenter.initAdapter(); mPresenter.initAdapter();
mPresenter.initItemListener(mContext); mPresenter.initItemListener(mContext);
} }
// @Subscriber(tag = "FineItemKindFragment_onCurrentSlodoutFoodList_FullEvent") public void loadComboData(Long fid) {
// public void onCurrentSlodoutFoodList_FullEvent(List<SoldoutCtrFood.DatasBean> event) { if(fid != null){
// if (event == null) { this.mFid = fid;
// return;
// }
// mPresenter.updateCurrentSlodoutFoodList_Full1(event);
// mPresenter.updateCurrentSlodoutFoodList_Full2(event);
// }
@Subscriber(tag = "FineItemKindFragment_onMidEvent")
public void onMidEvent(long mid) {
if (mid == 0) {
return;
} }
mPresenter.initFineItemKindData(mid); mPresenter.loadComboData(mFid);
}
public void setSoldoutFoodList_Full(List<SoldoutCtrFood> soldoutCtrList){
mPresenter.setSoldoutFoodList_Full(soldoutCtrList);
}
public void updateSoldoutFoodList_Full(){
mPresenter.updateSoldoutFoodList_Full();
} }
@Override @Override
public void setData(@Nullable Object data) { public void setData(@Nullable Object data) {
} }
@Override @Override
...@@ -117,7 +117,7 @@ public class FineItemKindFragment extends BaseFragment<FineItemKindPresenter> im ...@@ -117,7 +117,7 @@ public class FineItemKindFragment extends BaseFragment<FineItemKindPresenter> im
@Override @Override
public void showMessage(@NonNull String message) { public void showMessage(@NonNull String message) {
checkNotNull(message); checkNotNull(message);
ArmsUtils.makeText(getCurrentActivity(),message); ArmsUtils.makeText(getCurrentActivity(), message);
} }
@Override @Override
...@@ -132,81 +132,25 @@ public class FineItemKindFragment extends BaseFragment<FineItemKindPresenter> im ...@@ -132,81 +132,25 @@ public class FineItemKindFragment extends BaseFragment<FineItemKindPresenter> im
} }
@Override @Override
public void setFineItemKindAdapter(DefaultAdapter adapter) { public Activity getCurrentActivity() {
recycle_fine_item_kind.setAdapter(adapter); return (Activity) mContext;
initFineItemOneRecycleView();
}
@Override
public void setFineItemKindItemAdapter(DefaultAdapter adapter) {
recycle_fine_item_kind_item.setAdapter(adapter);
initFineItemTwoRecycleView();
}
@Override
public RecyclerView getRecycle_fine_item_kind() {
return recycle_fine_item_kind;
}
@Override
public RecyclerView getRecycle_fine_item_kind_item() {
return recycle_fine_item_kind_item;
}
private GridLayoutManager mFineItemOneRecycleLayoutManager;
private GridLayoutManager mFineItemTwoRecycleLayoutManager;
public void initFineItemOneRecycleView() {
mFineItemOneRecycleLayoutManager = new GridLayoutManager(mContext, 1, LinearLayoutManager.VERTICAL, false);
recycle_fine_item_kind.setLayoutManager(mFineItemOneRecycleLayoutManager);
recycle_fine_item_kind.setItemAnimator(new DefaultItemAnimator());
}
public void initFineItemOneRecycleView2() {
mFineItemOneRecycleLayoutManager = new GridLayoutManager(mContext, 1, LinearLayoutManager.HORIZONTAL, false);
recycle_fine_item_kind.setLayoutManager(mFineItemOneRecycleLayoutManager);
recycle_fine_item_kind.setItemAnimator(new DefaultItemAnimator());
}
public void initFineItemTwoRecycleView() {
mFineItemTwoRecycleLayoutManager = new GridLayoutManager(mContext, 1, LinearLayoutManager.VERTICAL, false);
recycle_fine_item_kind_item.setLayoutManager(mFineItemTwoRecycleLayoutManager);
recycle_fine_item_kind_item.setItemAnimator(new DefaultItemAnimator());
}
public void initFineItemTwoRecycleView2() {
mFineItemTwoRecycleLayoutManager = new GridLayoutManager(mContext, 1, LinearLayoutManager.HORIZONTAL, false);
recycle_fine_item_kind_item.setLayoutManager(mFineItemTwoRecycleLayoutManager);
recycle_fine_item_kind_item.setItemAnimator(new DefaultItemAnimator());
} }
@Override @Override
public void setFineItemKindRecycleSpanCount(int size) { public void setComboAdapter(DefaultAdapter adapter) {
if (size > 0) { // rv_combo.setAdapter(adapter);
if (size > modCol) {
initFineItemOneRecycleView();
mFineItemOneRecycleLayoutManager.setSpanCount(modCol);
} else {
initFineItemOneRecycleView2();
}
}
} }
@Override @Override
public void setFineItemKindItemRecycleSpanCount(int size) { public void setModifierAdapter(DefaultAdapter adapter) {
if (size > 0) { rv_modifier.setAdapter(adapter);
if (size > modCol) {
initFineItemTwoRecycleView();
mFineItemTwoRecycleLayoutManager.setSpanCount(modCol);
} else {
initFineItemTwoRecycleView2();
}
}
} }
@Override @Override
public Activity getCurrentActivity() { public void setModifierTop(int margins) {
return (Activity) mContext; LinearLayout.LayoutParams layoutParam = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
layoutParam.setMargins(0, margins, 0, 0);
rv_modifier.setLayoutParams(layoutParam);
} }
@Override @Override
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
...@@ -8,18 +8,23 @@ ...@@ -8,18 +8,23 @@
android:orientation="vertical"> android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycle_fine_item_kind" android:id="@+id/rv_combo"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:divider="@null"
android:fadeScrollbars="false" android:fadeScrollbars="false"
android:orientation="vertical"
app:spanCount="4"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"/> app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"/>
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycle_fine_item_kind_item" android:id="@+id/rv_modifier"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:divider="@null"
android:fadeScrollbars="false" android:fadeScrollbars="false"
android:visibility="invisible" android:orientation="vertical"
app:spanCount="4"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"/> app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"/>
</FrameLayout> </LinearLayout>
\ No newline at end of file \ No newline at end of file
ext.alwaysLib = true //虽然apply了cc-settings-2.gradle,但一直作为library编译,否则别的组件依赖此module时会报错
apply from: rootProject.file("cc-settings.gradle")
android {
compileSdkVersion rootProject.ext.android["compileSdkVersion"]
buildToolsVersion rootProject.ext.android["buildToolsVersion"]
// useLibrary 'org.apache.http.legacy'
compileOptions {
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_1_8
}
defaultConfig {
minSdkVersion rootProject.ext.android["minSdkVersion"]
targetSdkVersion rootProject.ext.android["targetSdkVersion"]
versionCode rootProject.ext.android["versionCode"]
versionName rootProject.ext.android["versionName"]
}
buildTypes {
debug {
buildConfigField "boolean", "LOG_DEBUG", "true"
buildConfigField "boolean", "USE_CANARY", "true"
minifyEnabled false
proguardFiles 'proguard.cfg'
}
release {
buildConfigField "boolean", "LOG_DEBUG", "false"
buildConfigField "boolean", "USE_CANARY", "false"
minifyEnabled false
shrinkResources false
zipAlignEnabled false
proguardFiles 'proguard.cfg'
}
}
lintOptions {
abortOnError false
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
api(rootProject.ext.dependencies["appcompat-v7"]) {
exclude module: 'support-annotations'
exclude module: 'support-v4'
}
implementation 'com.liulishuo.filedownloader:library:1.6.8'
}
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles main_function_setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="teprinciple.updateapputils">
<uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<application
android:allowBackup="true"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name="activity.UpdateAppActivity"
android:theme="@style/DialogActivityTheme" />
<service android:name="service.UpdateAppService"/>
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/update_file_paths"/>
</provider>
</application>
</manifest>
\ No newline at end of file
package activity;
import android.Manifest;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;
import model.UpdateBean;
import service.UpdateAppService;
import teprinciple.updateapputils.R;
import util.DownloadAppUtils;
import util.UpdateAppUtils;
import view.ConfirmDialog;
import view.DownloadDialog;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2019/2/16
* 修订历史:2019/2/16
* 描述:
*/
public class UpdateAppActivity extends AppCompatActivity {
private static String KEY_OF_INTENT_UPDATE_BEAN = "KEY_OF_INTENT_UPDATE_BEAN";
public static void launch(Context context, UpdateBean updateBean) {
Intent intent = new Intent(context, UpdateAppActivity.class);
intent.putExtra(KEY_OF_INTENT_UPDATE_BEAN, updateBean);
context.startActivity(intent);
}
private TextView tv_title;
private TextView content;
private TextView sureBtn;
private TextView cancleBtn;
private ProgressBar progressBar;
private LinearLayout ll_bottom;
private UpdateBean updateBean;
private static final int PERMISSION_CODE = 1001;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view_version_tips_dialog);
updateBean = getIntent().getParcelableExtra(KEY_OF_INTENT_UPDATE_BEAN);
initView();
initOperation();
}
private void initView() {
tv_title = (TextView) findViewById(R.id.tv_title);
sureBtn = (TextView) findViewById(R.id.dialog_confirm_sure);
cancleBtn = (TextView) findViewById(R.id.dialog_confirm_cancle);
content = (TextView) findViewById(R.id.dialog_confirm_title);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
ll_bottom = (LinearLayout) findViewById(R.id.ll_bottom);
String contentStr = "發現新版本:" + updateBean.getServerVersionName() + "\n是否下載更新?";
if (!TextUtils.isEmpty(updateBean.getUpdateInfo())) {
contentStr = "發現新版本:" + updateBean.getServerVersionName() + "是否下載更新?\n\n" + updateBean.getUpdateInfo();
}
content.setText(contentStr);
if (updateBean.getForce()) {
cancleBtn.setText("exit");
} else {
cancleBtn.setText("cancel");
}
}
private void initOperation() {
cancleBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (updateBean.getForce()) {
System.exit(0);
} else {
finish();
}
}
});
sureBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
preDownLoad();
}
});
}
/**
* 预备下载 进行 6.0权限检查
*/
private void preDownLoad() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
download();
} else {
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
download();
} else {//申请权限
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, PERMISSION_CODE);
}
}
}
private void download() {
startService(new Intent(this, UpdateAppService.class));
if (updateBean.getDownloadBy() == UpdateAppUtils.DOWNLOAD_BY_APP) {
if (isWifiConnected(this)) {
showProgressBar();
DownloadAppUtils.download(UpdateAppActivity.this, updateBean.getApkPath(), updateBean.getServerVersionName(), progressBar,content);
} else {
new ConfirmDialog(this, new ConfirmDialog.Callback() {
@Override
public void callback(int position) {
if (position == 1) {
showProgressBar();
DownloadAppUtils.download(UpdateAppActivity.this, updateBean.getApkPath(), updateBean.getServerVersionName(), progressBar,content);
} else {
if (updateBean.getForce()) {
System.exit(0);
} else {
finish();
}
}
}
}).setContent("目前手機不是WiFi狀態\n確認是否繼續下載更新?").show();
}
} else if (updateBean.getDownloadBy() == UpdateAppUtils.DOWNLOAD_BY_BROWSER) {
DownloadAppUtils.downloadForWebView(this, updateBean.getApkPath());
}
}
/**
* 权限请求结果
*/
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case PERMISSION_CODE:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
download();
} else {
new ConfirmDialog(this, new ConfirmDialog.Callback() {
@Override
public void callback(int position) {
if (position == 1) {
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.setData(Uri.parse("package:" + getPackageName())); // 根据包名打开对应的设置界面
startActivity(intent);
}
}
}).setContent("暫無讀寫SD卡權限\n是否前往設置?").show();
}
break;
}
}
/**
* 检测wifi是否连接
*/
private boolean isWifiConnected(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (cm != null) {
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
return true;
}
}
return false;
}
public void showProgressBar() {
ll_bottom.setVisibility(View.GONE);
progressBar.setVisibility(View.VISIBLE);
tv_title.setText("downloading...");
}
}
package model;
import android.os.Parcel;
import android.os.Parcelable;
import util.UpdateAppUtils;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2019/2/16
* 修订历史:2019/2/16
* 描述:
*/
public class UpdateBean implements Parcelable {
private int downloadBy = UpdateAppUtils.DOWNLOAD_BY_APP; // 下载方式:默认app下载
private String apkPath = ""; // apk 下载地址
private String updateInfo = ""; // 更新说明
private Boolean isForce = false; // 是否强制更新
private String serverVersionName = ""; // 服务器上版本名
private int serverVersionCode = 0; // 服务器上版本号
private String localVersionName = ""; // 当前本地版本名
private int localVersionCode = 0; // 当前本地版本号
private int checkBy = UpdateAppUtils.CHECK_BY_VERSION_CODE; // 检查方式 按版本名或版本号
private boolean showNotification = true; // 是否在通知栏显示
public boolean isShowNotification() {
return showNotification;
}
public void setShowNotification(boolean showNotification) {
this.showNotification = showNotification;
}
public int getDownloadBy() {
return downloadBy;
}
public void setDownloadBy(int downloadBy) {
this.downloadBy = downloadBy;
}
public String getApkPath() {
return apkPath;
}
public void setApkPath(String apkPath) {
this.apkPath = apkPath;
}
public String getUpdateInfo() {
return updateInfo;
}
public void setUpdateInfo(String updateInfo) {
this.updateInfo = updateInfo;
}
public Boolean getForce() {
return isForce;
}
public void setForce(Boolean force) {
isForce = force;
}
public String getServerVersionName() {
return serverVersionName;
}
public void setServerVersionName(String serverVersionName) {
this.serverVersionName = serverVersionName;
}
public int getServerVersionCode() {
return serverVersionCode;
}
public void setServerVersionCode(int serverVersionCode) {
this.serverVersionCode = serverVersionCode;
}
public String getLocalVersionName() {
return localVersionName;
}
public void setLocalVersionName(String localVersionName) {
this.localVersionName = localVersionName;
}
public int getLocalVersionCode() {
return localVersionCode;
}
public void setLocalVersionCode(int localVersionCode) {
this.localVersionCode = localVersionCode;
}
public int getCheckBy() {
return checkBy;
}
public void setCheckBy(int checkBy) {
this.checkBy = checkBy;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(this.downloadBy);
dest.writeString(this.apkPath);
dest.writeString(this.updateInfo);
dest.writeValue(this.isForce);
dest.writeString(this.serverVersionName);
dest.writeInt(this.serverVersionCode);
dest.writeString(this.localVersionName);
dest.writeInt(this.localVersionCode);
dest.writeInt(this.checkBy);
dest.writeByte(this.showNotification ? (byte) 1 : (byte) 0);
}
public UpdateBean() {
}
protected UpdateBean(Parcel in) {
this.downloadBy = in.readInt();
this.apkPath = in.readString();
this.updateInfo = in.readString();
this.isForce = (Boolean) in.readValue(Boolean.class.getClassLoader());
this.serverVersionName = in.readString();
this.serverVersionCode = in.readInt();
this.localVersionName = in.readString();
this.localVersionCode = in.readInt();
this.checkBy = in.readInt();
this.showNotification = in.readByte() != 0;
}
public static final Parcelable.Creator<UpdateBean> CREATOR = new Parcelable.Creator<UpdateBean>() {
@Override
public UpdateBean createFromParcel(Parcel source) {
return new UpdateBean(source);
}
@Override
public UpdateBean[] newArray(int size) {
return new UpdateBean[size];
}
};
}
package service;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.IBinder;
import android.support.annotation.Nullable;
import util.UpdateAppReceiver;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2019/2/16
* 修订历史:2019/2/16
* 描述:
*/
public class UpdateAppService extends Service {
private BroadcastReceiver receiver = new UpdateAppReceiver();
@Override
public void onCreate() {
super.onCreate();
// 动态注册receiver 适配8.0 receiver 静态注册没收不到广播
IntentFilter intentFilter = new IntentFilter("teprinciple.update");
registerReceiver(receiver, intentFilter);
}
@Override
public void onDestroy() {
super.onDestroy();
unregisterReceiver(receiver); // 注销广播
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
package util;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.TextView;
import com.liulishuo.filedownloader.BaseDownloadTask;
import com.liulishuo.filedownloader.FileDownloadLargeFileListener;
import com.liulishuo.filedownloader.FileDownloader;
import java.io.File;
import activity.UpdateAppActivity;
import teprinciple.updateapputils.R;
import view.DownloadDialog;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2019/2/16
* 修订历史:2019/2/16
* 描述:
*/
public class DownloadAppUtils {
private static final String TAG = DownloadAppUtils.class.getSimpleName();
public static String downloadUpdateApkFilePath;//下载更新Apk 文件路径
public static String APK = "Download";//安装包目录放在系统目录
public static final String APK_PATH = File.separator + APK + File.separator;
private Context context;
/**
* 通过浏览器下载APK包
*/
public static void downloadForWebView(Context context, String url) {
Uri uri = Uri.parse(url);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
public static void download(final Activity context, String url, final String serverVersionName, ProgressBar progressBar, TextView content) {
String packageName = context.getPackageName();
String filePath = null;
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {//外部存储卡
filePath = Environment.getExternalStorageDirectory().getAbsolutePath() + APK_PATH;
} else {
Log.i(TAG, "没有SD卡");
return;
}
String apkLocalPath = filePath + "GsAndroid" + "_" + serverVersionName + ".apk";
deleteOldGsAndroidApkFiles(new File(filePath));
downloadUpdateApkFilePath = apkLocalPath;
FileDownloader.setup(context);
BaseDownloadTask downloadTask = FileDownloader.getImpl().create(url);
downloadTask.setPath(apkLocalPath);
downloadTask.setListener(new FileDownloadLargeFileListener() {
@Override
protected void started(BaseDownloadTask task) {
content.setText("");
}
@Override
protected void pending(BaseDownloadTask task, long soFarBytes, long totalBytes) {
}
@Override
protected void progress(BaseDownloadTask task, long soFarBytes, long totalBytes) {
int pro = (int) (soFarBytes * 100.0 / totalBytes);
progressBar.setProgress(pro);
content.setText(pro + "%");
send(context, pro, serverVersionName);
}
@Override
protected void paused(BaseDownloadTask task, long soFarBytes, long totalBytes) {
}
@Override
protected void completed(BaseDownloadTask task) {
context.finish();
send(context, 100, serverVersionName);
}
@Override
protected void error(BaseDownloadTask task, Throwable e) {
//Toast.makeText(context, "下载出错", Toast.LENGTH_SHORT).show();
}
@Override
protected void warn(BaseDownloadTask task) {
}
}).start();
}
/**
* 删除目录下旧GsaAndroid Apk
*
* @param file
*/
private static void deleteOldGsAndroidApkFiles(File file) {
File files[] = file.listFiles();
if (files != null)
for (File f : files) {
if (f.getName().contains("GsAndroid") && f.exists()) {// 判断是否存在  
deleteOldGsAndroidApkFiles(f);
try {
f.delete();
} catch (Exception e) {
}
}
}
}
private static void send(Context context, int progress, String serverVersionName) {
Intent intent = new Intent("teprinciple.update");
intent.putExtra("progress", progress);
intent.putExtra("title", serverVersionName);
context.sendBroadcast(intent);
}
}
package util;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.support.v4.content.FileProvider;
import android.webkit.DownloadListener;
import java.io.File;
import teprinciple.updateapputils.R;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2019/2/16
* 修订历史:2019/2/16
* 描述:
*/
public class UpdateAppReceiver extends BroadcastReceiver {
private String notificationChannel = "1001";
@Override
public void onReceive(Context context, Intent intent) {
int progress = intent.getIntExtra("progress", 0);
String title = intent.getStringExtra("title");
NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
// 显示通知栏
int notifyId = 1;
if (UpdateAppUtils.showNotification) {
showNotification(context, notifyId, progress, title, notificationChannel, nm);
}
// 下载完成
if (progress == 100) {
handleDownloadComplete(context, notifyId, nm);
}
}
/**
* 下载完成后的逻辑
*/
private void handleDownloadComplete(Context context, int notifyId, NotificationManager nm) {
// 关闭通知栏
if (nm != null) {
nm.cancel(notifyId);
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.O) {
nm.deleteNotificationChannel(notificationChannel);
}
}
// 安装apk
if (DownloadAppUtils.downloadUpdateApkFilePath != null) {
toInstall(context);
}
}
/**
* 通知栏显示
*/
private void showNotification(Context context, int notifyId, int progress, String title, String notificationChannel, NotificationManager nm) {
String notificationName = "notification";
// 适配8.0
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// 通知渠道
NotificationChannel channel = new NotificationChannel(notificationChannel, notificationName, NotificationManager.IMPORTANCE_HIGH);
channel.enableLights(false); // 是否在桌面icon右上角展示小红点
channel.setShowBadge(false); // 是否在久按桌面图标时显示此渠道的通知
channel.enableVibration(false);
// 最后在notificationmanager中创建该通知渠道
nm.createNotificationChannel(channel);
}
Notification.Builder builder = new Notification.Builder(context);
//NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
builder.setChannelId(notificationChannel);
}
builder.setContentTitle("正在下載 " + title);
builder.setSmallIcon(R.drawable.logo);
builder.setProgress(100, progress, false);
Notification notification = null;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
notification = builder.build();
} else {
notification = builder.getNotification();
}
nm.notify(notifyId, notification);
}
/**
* 跳转安装
*/
private void toInstall(Context context) {
Intent i = new Intent(Intent.ACTION_VIEW);
File apkFile = new File(DownloadAppUtils.downloadUpdateApkFilePath);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
i.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
Uri contentUri = FileProvider.getUriForFile(
context, context.getPackageName() + ".fileprovider", apkFile);
i.setDataAndType(contentUri, "application/vnd.android.package-archive");
} else {
i.setDataAndType(Uri.fromFile(apkFile), "application/vnd.android.package-archive");
}
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}
package util;
import android.app.Activity;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.util.Log;
import activity.UpdateAppActivity;
import model.UpdateBean;
import view.DownloadDialog;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2019/2/16
* 修订历史:2019/2/16
* 描述:
*/
public class UpdateAppUtils {
private final String TAG = "UpdateAppUtils";
public static final int CHECK_BY_VERSION_NAME = 1001;
public static final int CHECK_BY_VERSION_CODE = 1002;
public static final int DOWNLOAD_BY_APP = 1003;
public static final int DOWNLOAD_BY_BROWSER = 1004;
private Activity activity;
public static boolean showNotification = true;
// 将所有的 属性 放入model
private UpdateBean updateBean = new UpdateBean();
private UpdateAppUtils(Activity activity) {
this.activity = activity;
getAPPLocalVersion(activity);
}
public static UpdateAppUtils from(Activity activity) {
return new UpdateAppUtils(activity);
}
public UpdateAppUtils checkBy(int checkBy) {
updateBean.setCheckBy(checkBy);
return this;
}
public UpdateAppUtils apkPath(String apkPath) {
updateBean.setApkPath(apkPath);
return this;
}
public UpdateAppUtils downloadBy(int downloadBy) {
updateBean.setDownloadBy(downloadBy);
return this;
}
public UpdateAppUtils showNotification(boolean showNotification) {
updateBean.setShowNotification(showNotification);
this.showNotification = showNotification;
return this;
}
public UpdateAppUtils updateInfo(String updateInfo) {
updateBean.setUpdateInfo(updateInfo);
return this;
}
public UpdateAppUtils serverVersionCode(int serverVersionCode) {
updateBean.setServerVersionCode(serverVersionCode);
return this;
}
public UpdateAppUtils serverVersionName(String serverVersionName) {
updateBean.setServerVersionName(serverVersionName);
return this;
}
public UpdateAppUtils isForce(boolean isForce) {
updateBean.setForce(isForce);
return this;
}
/**
* 获取apk的版本号 currentVersionCode
*/
private void getAPPLocalVersion(Context ctx) {
PackageManager manager = ctx.getPackageManager();
try {
PackageInfo info = manager.getPackageInfo(ctx.getPackageName(), 0);
updateBean.setLocalVersionCode(info.versionCode);
updateBean.setLocalVersionName(info.versionName);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
}
/**
* 检查更新
*/
public void update() {
switch (updateBean.getCheckBy()) {
case CHECK_BY_VERSION_CODE:
if (updateBean.getServerVersionCode() > updateBean.getLocalVersionCode()) {
toUpdate();
} else {
Log.i(TAG, "当前版本是最新版本" + updateBean.getServerVersionCode() + "/" + updateBean.getServerVersionName());
}
break;
case CHECK_BY_VERSION_NAME:
if (!updateBean.getServerVersionName().equals(updateBean.getLocalVersionName())) {
toUpdate();
} else {
Log.i(TAG, "当前版本是最新版本" + updateBean.getServerVersionCode() + "/" + updateBean.getServerVersionName());
}
break;
}
}
/**
* 更新
*/
private void toUpdate() {
UpdateAppActivity.launch(activity, updateBean);
}
}
package view;
import android.app.Dialog;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import teprinciple.updateapputils.R;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2019/2/16
* 修订历史:2019/2/16
* 描述:
*/
public class ConfirmDialog extends Dialog {
Callback callback;
private TextView content;
private TextView sureBtn;
private TextView cancleBtn;
public ConfirmDialog(Context context, Callback callback) {
super(context, R.style.CustomDialog);
this.callback = callback;
setCustomDialog();
}
private void setCustomDialog() {
View mView = LayoutInflater.from(getContext()).inflate(R.layout.dialog_confirm, null);
sureBtn = (TextView) mView.findViewById(R.id.dialog_confirm_sure);
cancleBtn = (TextView) mView.findViewById(R.id.dialog_confirm_cancle);
content = (TextView) mView.findViewById(R.id.dialog_confirm_title);
sureBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
callback.callback(1);
ConfirmDialog.this.cancel();
}
});
cancleBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
callback.callback(0);
ConfirmDialog.this.cancel();
}
});
super.setContentView(mView);
}
public ConfirmDialog setContent(String s) {
content.setText(s);
return this;
}
public interface Callback {
void callback(int position);
}
}
package view;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.widget.ProgressBar;
import android.widget.TextView;
import teprinciple.updateapputils.R;
/**
* @company: JOE工作室
* @ClassName: DownloadDialog
* @Description: TODO(下载进度对话框)
* @Author: JOE
* @Date: 2016-9-10 上午11:30:43
*/
public class DownloadDialog extends Dialog {
private TextView textTitle;
private ProgressBar progress_bar;
private TextView progress_value;
private TextView close_btn;
private android.view.View.OnClickListener listener;
public DownloadDialog(Context context) {
super(context);
}
public DownloadDialog(Context context, int theme, android.view.View.OnClickListener listener) {
super(context, theme);
this.listener = listener;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_download_dialog);
initView();
}
private void initView() {
textTitle = (TextView) findViewById(R.id.dialog_title);
progress_bar = (ProgressBar) findViewById(R.id.progress_bar);
progress_value = (TextView) findViewById(R.id.progress_value);
close_btn = (TextView) findViewById(R.id.close_btn);
int themeColor = getContext().getResources().getColor(R.color.colorPrimary);
textTitle.setTextColor(themeColor);
progress_value.setTextColor(themeColor);
close_btn.setTextColor(themeColor);
close_btn.setOnClickListener(listener);
}
public void setTitle(String title) {
textTitle.setText(title);
}
public void updateProgress(int value) {
progress_value.setText(value + "%");
progress_bar.setProgress(value);
if (100 == value)
dismiss();
}
public void setBottomText(String text) {
close_btn.setText(text);
}
}
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<size
android:width="40dp"
android:height="20dp" />
<solid android:color="#EFEFEF" />
<corners android:radius="12dp" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="270dp"
android:layout_height="wrap_content"
android:background="@drawable/bg_dialog_confirm"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginTop="15dp"
android:layout_marginRight="15dp"
android:gravity="center_horizontal"
android:text="提示"
android:textColor="@color/text_black"
android:textSize="19sp" />
<TextView
android:id="@+id/dialog_confirm_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginTop="10dp"
android:layout_marginRight="15dp"
android:layout_marginBottom="10dp"
android:gravity="center_horizontal"
android:lineSpacingExtra="5dp"
android:textColor="@color/text_black"
android:textSize="17sp" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="13dp"
android:background="#DFDFDF" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="44dp"
android:orientation="horizontal">
<TextView
android:id="@+id/dialog_confirm_cancle"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:clickable="true"
android:gravity="center"
android:text="@string/cancel"
android:textColor="@color/text_blue"
android:textSize="17sp" />
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="#DFDFDF" />
<TextView
android:id="@+id/dialog_confirm_sure"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:clickable="true"
android:gravity="center"
android:text="@string/sure"
android:textColor="@color/text_blue"
android:textSize="17sp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="280dip"
android:layout_height="wrap_content"
android:layout_marginBottom="15dip"
android:background="#FFFFFF"
android:orientation="vertical"
android:paddingLeft="10dip"
android:paddingTop="15dip"
android:paddingRight="10dip">
<TextView
android:id="@+id/dialog_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dip"
android:gravity="center"
android:text="downloading..."
android:textColor="@color/colorPrimary"
android:textSize="16sp" />
<ProgressBar
android:id="@+id/progress_bar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="5dp"
android:max="100"
android:progress="0" />
<TextView
android:id="@+id/progress_value"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="6dip"
android:layout_marginBottom="10dip"
android:text="0%"
android:textColor="@color/colorAccent"
android:textSize="14sp" />
<TextView
android:id="@+id/close_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="1dip"
android:layout_marginBottom="5dip"
android:padding="5dip"
android:text="@string/cancel"
android:textColor="#000000" />
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="270dp"
android:layout_height="wrap_content"
android:background="@drawable/bg_dialog_confirm"
android:orientation="vertical">
<TextView
android:id="@+id/tv_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginTop="15dp"
android:layout_marginRight="15dp"
android:gravity="center_horizontal"
android:text="提示"
android:textColor="@color/text_black"
android:textSize="19sp" />
<TextView
android:id="@+id/dialog_confirm_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginTop="10dp"
android:layout_marginRight="15dp"
android:layout_marginBottom="10dp"
android:gravity="center_horizontal"
android:lineSpacingExtra="5dp"
android:textColor="@color/text_black"
android:textSize="16sp" />
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_gravity="center"
android:visibility="gone"
android:progress="88"/>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="13dp"
android:background="#DFDFDF" />
<LinearLayout
android:id="@+id/ll_bottom"
android:layout_width="match_parent"
android:layout_height="44dp"
android:orientation="horizontal">
<TextView
android:id="@+id/dialog_confirm_cancle"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:clickable="true"
android:gravity="center"
android:text="@string/cancel"
android:textColor="@color/text_blue"
android:textSize="17sp" />
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="#DFDFDF" />
<TextView
android:id="@+id/dialog_confirm_sure"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:clickable="true"
android:gravity="center"
android:text="@string/sure"
android:textColor="@color/text_blue"
android:textSize="17sp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#1296db</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
<color name="text_blue">#0076FF</color>
<color name="text_black">#333333</color>
</resources>
\ No newline at end of file
<resources>
<string name="app_name">Library</string>
<string name="cancel">cancel</string>
<string name="sure">sure</string>
</resources>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="CustomDialog" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">false</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@drawable/bg_dialog_confirm</item>
<item name="android:backgroundDimEnabled">true</item>
</style>
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar"/>
<style name="DialogActivityTheme" parent="Theme.AppCompat.Dialog">
<item name="android:windowFrame">@null</item>
<!-- 边框 -->
<item name="android:windowIsFloating">true</item>
<!-- 是否浮现在activity之上 -->
<item name="android:windowIsTranslucent">true</item>
<!-- 半透明 -->
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:background">@android:color/transparent</item>
<item name="android:backgroundDimEnabled">true</item>
<!-- 模糊 -->
<item name="android:windowCloseOnTouchOutside">false</item>
<!-- 重点,去掉标题 -->
<item name="windowNoTitle">true</item>
</style>
</resources>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-path path="" name="files_root" />
</paths>
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