Commit 3b6c598e by 王宇航

Merge remote-tracking branch 'origin/master'

parents 9455d475 fb8a4454
...@@ -20,14 +20,18 @@ import android.content.Context; ...@@ -20,14 +20,18 @@ import android.content.Context;
import android.os.Bundle; import android.os.Bundle;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.View; import android.view.View;
import com.jess.arms.base.delegate.IActivity; import com.jess.arms.base.delegate.IActivity;
import com.jess.arms.integration.cache.Cache; import com.jess.arms.integration.cache.Cache;
import com.jess.arms.integration.cache.CacheType; import com.jess.arms.integration.cache.CacheType;
import com.jess.arms.integration.lifecycle.ActivityLifecycleable; import com.jess.arms.integration.lifecycle.ActivityLifecycleable;
import com.jess.arms.mvp.IPresenter; import com.jess.arms.mvp.IPresenter;
import com.jess.arms.utils.AndroidWorkaround;
import com.jess.arms.utils.ArmsUtils; import com.jess.arms.utils.ArmsUtils;
import com.trello.rxlifecycle2.android.ActivityEvent; import com.trello.rxlifecycle2.android.ActivityEvent;
import javax.inject.Inject; import javax.inject.Inject;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
...@@ -36,6 +40,7 @@ import butterknife.ButterKnife; ...@@ -36,6 +40,7 @@ import butterknife.ButterKnife;
import butterknife.Unbinder; import butterknife.Unbinder;
import io.reactivex.subjects.BehaviorSubject; import io.reactivex.subjects.BehaviorSubject;
import io.reactivex.subjects.Subject; import io.reactivex.subjects.Subject;
import static com.jess.arms.utils.ThirdViewUtil.convertAutoView; import static com.jess.arms.utils.ThirdViewUtil.convertAutoView;
/** /**
...@@ -91,6 +96,10 @@ public abstract class BaseActivity<P extends IPresenter> extends AppCompatActivi ...@@ -91,6 +96,10 @@ public abstract class BaseActivity<P extends IPresenter> extends AppCompatActivi
//如果initView返回0,框架则不会调用setContentView(),当然也不会 Bind ButterKnife //如果initView返回0,框架则不会调用setContentView(),当然也不会 Bind ButterKnife
if (layoutResID != 0) { if (layoutResID != 0) {
setContentView(layoutResID); setContentView(layoutResID);
String name = getClass().getSimpleName();
if (!name.equals("DownloadActivity")) {
AndroidWorkaround.assistActivity(findViewById(android.R.id.content));
}
//绑定到butterknife //绑定到butterknife
mUnbinder = ButterKnife.bind(this); mUnbinder = ButterKnife.bind(this);
} }
...@@ -125,6 +134,7 @@ public abstract class BaseActivity<P extends IPresenter> extends AppCompatActivi ...@@ -125,6 +134,7 @@ public abstract class BaseActivity<P extends IPresenter> extends AppCompatActivi
public boolean useEventBus() { public boolean useEventBus() {
return true; return true;
} }
/** /**
* 这个Activity是否会使用Fragment,框架会根据这个属性判断是否注册 * 这个Activity是否会使用Fragment,框架会根据这个属性判断是否注册
* 如果返回false,那意味着这个Activity不需要绑定Fragment,那你再在这个Activity中绑定继承于 {@link com.jess.arms.base.BaseFragment} 的Fragment将不起任何作用 * 如果返回false,那意味着这个Activity不需要绑定Fragment,那你再在这个Activity中绑定继承于 {@link com.jess.arms.base.BaseFragment} 的Fragment将不起任何作用
......
package com.jess.arms.utils;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Rect;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import java.lang.reflect.Method;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2020-02-29
* 修订历史:2020-02-29
* 描述:
*/
public class AndroidWorkaround {
/**
* 关联要监听的视图
*
* @param viewObserving
*/
public static void assistActivity(View viewObserving) {
new AndroidWorkaround(viewObserving);
}
private View mViewObserved;//被监听的视图
private int usableHeightPrevious;//视图变化前的可用高度
private ViewGroup.LayoutParams frameLayoutParams;
private AndroidWorkaround(View viewObserving) {
mViewObserved = viewObserving;
//给View添加全局的布局监听器
mViewObserved.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
public void onGlobalLayout() {
resetLayoutByUsableHeight(computeUsableHeight());
}
});
frameLayoutParams = mViewObserved.getLayoutParams();
}
private void resetLayoutByUsableHeight(int usableHeightNow) {
//比较布局变化前后的View的可用高度
if (usableHeightNow != usableHeightPrevious) {
//如果两次高度不一致
//将当前的View的可用高度设置成View的实际高度
frameLayoutParams.height = usableHeightNow;
mViewObserved.requestLayout();//请求重新布局
usableHeightPrevious = usableHeightNow;
}
}
/**
* 计算视图可视高度
*
* @return
*/
private int computeUsableHeight() {
Rect r = new Rect();
mViewObserved.getWindowVisibleDisplayFrame(r);
return (r.bottom - r.top);
}
}
package com.gingersoft.gsa.cloud.base.application; package com.gingersoft.gsa.cloud.base.application;
import android.app.Activity;
import android.content.Context; import android.content.Context;
import com.billy.cc.core.component.CC; import com.billy.cc.core.component.CC;
...@@ -31,7 +32,8 @@ public class GsaCloudApplication extends BaseApplication { ...@@ -31,7 +32,8 @@ public class GsaCloudApplication extends BaseApplication {
/** /**
* 系统上下文 * 系统上下文
*/ */
private static Context mAppContext; private static GsaCloudApplication mAppContext;
private Activity mCurrentActivity;
/** /**
* 设置请求超时默认20秒钟 从后台获取超时时间 * 设置请求超时默认20秒钟 从后台获取超时时间
*/ */
...@@ -57,6 +59,13 @@ public class GsaCloudApplication extends BaseApplication { ...@@ -57,6 +59,13 @@ public class GsaCloudApplication extends BaseApplication {
androidSetting = new CurrentAndroidSetting(); androidSetting = new CurrentAndroidSetting();
} }
public Activity getCurrentActivity() {
return mCurrentActivity;
}
public void setCurrentActivity(Activity mCurrentActivity) {
this.mCurrentActivity = mCurrentActivity;
}
private void initXLog() { private void initXLog() {
LogConfiguration config = new LogConfiguration.Builder() LogConfiguration config = new LogConfiguration.Builder()
...@@ -97,7 +106,7 @@ public class GsaCloudApplication extends BaseApplication { ...@@ -97,7 +106,7 @@ public class GsaCloudApplication extends BaseApplication {
/** /**
* 获取系统上下文:用于ToastUtil类 * 获取系统上下文:用于ToastUtil类
*/ */
public static Context getAppContext() { public static GsaCloudApplication getAppContext() {
return mAppContext; return mAppContext;
} }
......
...@@ -165,6 +165,7 @@ public class MyOrderManage { ...@@ -165,6 +165,7 @@ public class MyOrderManage {
OrderDetail datasBean = orderFoodList.get(i); OrderDetail datasBean = orderFoodList.get(i);
if (datasBean.getParentIndex() == parentIndex) { if (datasBean.getParentIndex() == parentIndex) {
datasBean.setNumber(number); datasBean.setNumber(number);
setCalculatePrice(datasBean);
} }
} }
} }
......
...@@ -5,8 +5,8 @@ package com.gingersoft.gsa.cloud.base.utils.constans; ...@@ -5,8 +5,8 @@ package com.gingersoft.gsa.cloud.base.utils.constans;
*/ */
public class HttpsConstans { public class HttpsConstans {
public static String ROOT_SERVER_ADDRESS_FORMAL = "http://gingersoft.tpddns.cn:58201/ricepon-cloud-gsa/api/";// 深圳服务器 // public static String ROOT_SERVER_ADDRESS_FORMAL = "http://gingersoft.tpddns.cn:58201/ricepon-cloud-gsa/api/";// 深圳服务器
// public static String ROOT_SERVER_ADDRESS_FORMAL = "http://a.ricepon.com:58201/ricepon-cloud-gsa/api/";// 香港服务器 public static String ROOT_SERVER_ADDRESS_FORMAL = "http://a.ricepon.com:58201/ricepon-cloud-gsa/api/";// 香港服务器
public static String ROOT_SERVER_ADDRESS_FORMAL2 = "http://gingersoft.tpddns.cn:53000/mock/49/ricepon-cloud-gsa/api/";//測試服務器 public static String ROOT_SERVER_ADDRESS_FORMAL2 = "http://gingersoft.tpddns.cn:53000/mock/49/ricepon-cloud-gsa/api/";//測試服務器
......
...@@ -37,7 +37,7 @@ public class ComboItemDaoUtils { ...@@ -37,7 +37,7 @@ public class ComboItemDaoUtils {
/** /**
* 清除緩存 * 清除緩存
*/ */
public void detachAll(){ public void detachAll() {
ComboItemDao comboItemDao = DaoManager.getInstance().getDaoSession().getComboItemDao(); ComboItemDao comboItemDao = DaoManager.getInstance().getDaoSession().getComboItemDao();
comboItemDao.detachAll(); comboItemDao.detachAll();
} }
...@@ -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._id 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._id and f.INVISIBLE=0 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 + "'";
} }
...@@ -178,7 +178,7 @@ public class ComboItemDaoUtils { ...@@ -178,7 +178,7 @@ public class ComboItemDaoUtils {
order.setName1(c.getString(c.getColumnIndex("FOOD_NAME1"))); order.setName1(c.getString(c.getColumnIndex("FOOD_NAME1")));
order.setName2(c.getString(c.getColumnIndex("FOOD_NAME2"))); order.setName2(c.getString(c.getColumnIndex("FOOD_NAME2")));
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")));
// if (order.isVisible()) { // if (order.isVisible()) {
comboItems.add(order); comboItems.add(order);
// } // }
......
...@@ -182,7 +182,7 @@ public class FoodDaoUtils { ...@@ -182,7 +182,7 @@ public class FoodDaoUtils {
long currentTime = System.currentTimeMillis(); long currentTime = System.currentTimeMillis();
return queryBuilder.where(queryBuilder.and( return queryBuilder.where(queryBuilder.and(
FoodDao.Properties.ParentId.eq(parentId), FoodDao.Properties.ParentId.eq(parentId),
FoodDao.Properties.Invisible.notEq(1), FoodDao.Properties.Invisible.eq(0),
FoodDao.Properties.StartDate.le(currentTime), FoodDao.Properties.StartDate.le(currentTime),
FoodDao.Properties.EndDate.ge(currentTime))).orderAsc(FoodDao.Properties.SeqNo).list(); FoodDao.Properties.EndDate.ge(currentTime))).orderAsc(FoodDao.Properties.SeqNo).list();
} }
......
...@@ -295,7 +295,7 @@ public class ModifierDaoUtils { ...@@ -295,7 +295,7 @@ public class ModifierDaoUtils {
// " 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" + 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_NO,MODIFIER.SEQ_NO"; " FROM MODIFIER join FOOD_MODIFIER on MODIFIER.MID=FOOD_MODIFIER.MID where MODIFIER.INVISIBLE=0 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<>();
...@@ -308,14 +308,14 @@ public class ModifierDaoUtils { ...@@ -308,14 +308,14 @@ public class ModifierDaoUtils {
switch (mode) { switch (mode) {
case modifierMode_All: case modifierMode_All:
sqlstr = " SELECT MODIFIER.MID,MODIFIER_NAME,MODIFIER_NAME1,MODIFIER_NAME2,TOP_ID,PRICE,MOD_COMM,MOD_TASTE,MOD_MSG,VISIBLE,MULTIPLE,IS_PARENT" + sqlstr = " 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.TOP_ID=FOOD_MODIFIER.MID where MODIFIER.VISIBLE=0 and MODIFIER.IS_PARENT=1 and FOOD_MODIFIER.FID='" + fid + "' order by FOOD_MODIFIER.SEQ_NO,MODIFIER.SEQ_NO"; " FROM MODIFIER join FOOD_MODIFIER on MODIFIER.TOP_ID=FOOD_MODIFIER.MID where MODIFIER.INVISIBLE=0 and MODIFIER.IS_PARENT=1 and FOOD_MODIFIER.FID='" + fid + "' order by FOOD_MODIFIER.SEQ_NO,MODIFIER.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 MODIFIER.MID,MODIFIER_NAME,MODIFIER_NAME1,MODIFIER_NAME2,TOP_ID,PRICE,MOD_COMM,MOD_TASTE,MOD_MSG,VISIBLE,MULTIPLE,IS_PARENT" + sqlstr = " 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.TOP_ID=FOOD_MODIFIER.MID where MODIFIER.VISIBLE=0 and MODIFIER.IS_PARENT=0 and FOOD_MODIFIER.FID='" + fid + "' order by FOOD_MODIFIER.SEQ_NO,MODIFIER.SEQ_NO"; " FROM MODIFIER join FOOD_MODIFIER on MODIFIER.TOP_ID=FOOD_MODIFIER.MID where MODIFIER.INVISIBLE=0 and MODIFIER.IS_PARENT=0 and FOOD_MODIFIER.FID='" + fid + "' order by FOOD_MODIFIER.SEQ_NO,MODIFIER.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);
......
package com.gingersoft.gsa.cloud.globalconfig.applyOptions; package com.gingersoft.gsa.cloud.globalconfig.applyOptions;
import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.net.ParseException; import android.net.ParseException;
import android.text.TextUtils;
import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.base.R; import com.gingersoft.gsa.cloud.base.R;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
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.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;
import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
import org.json.JSONException; import org.json.JSONException;
import java.net.SocketTimeoutException; import java.net.SocketTimeoutException;
import java.net.UnknownHostException; import java.net.UnknownHostException;
import me.jessyan.rxerrorhandler.handler.listener.ResponseErrorListener; import me.jessyan.rxerrorhandler.handler.listener.ResponseErrorListener;
import retrofit2.HttpException; import retrofit2.HttpException;
import timber.log.Timber; import timber.log.Timber;
...@@ -20,6 +30,8 @@ public class MyResponseErrorListener implements ResponseErrorListener { ...@@ -20,6 +30,8 @@ public class MyResponseErrorListener implements ResponseErrorListener {
private final String TAG = getClass().getSimpleName(); private final String TAG = getClass().getSimpleName();
private boolean showloggedDialog = false;
@Override @Override
public void handleResponseError(Context context, Throwable t) { public void handleResponseError(Context context, Throwable t) {
/* 用来提供处理所有错误的监听 /* 用来提供处理所有错误的监听
...@@ -39,12 +51,14 @@ public class MyResponseErrorListener implements ResponseErrorListener { ...@@ -39,12 +51,14 @@ public class MyResponseErrorListener implements ResponseErrorListener {
} }
// ArmsUtils.snackbarText(msg); // ArmsUtils.snackbarText(msg);
// LogUtil.d("handleResponseError: " + t.getMessage()); // LogUtil.d("handleResponseError: " + t.getMessage());
LogUtil.d(TAG , t.getMessage()); LogUtil.d(TAG, t.getMessage());
ToastUtils.show(context, msg); if(!TextUtils.isEmpty(msg)){
ToastUtils.show(context, msg);
}
} }
private String convertStatusCode(Context context, HttpException httpException) { private String convertStatusCode(Context context, HttpException httpException) {
String msg; String msg = null;
if (httpException.code() == 500) { if (httpException.code() == 500) {
msg = ArmsUtils.getString(context, R.string.response_error_server_error); msg = ArmsUtils.getString(context, R.string.response_error_server_error);
} else if (httpException.code() == 404) { } else if (httpException.code() == 404) {
...@@ -53,9 +67,35 @@ public class MyResponseErrorListener implements ResponseErrorListener { ...@@ -53,9 +67,35 @@ public class MyResponseErrorListener implements ResponseErrorListener {
msg = ArmsUtils.getString(context, R.string.response_error_request_rejected_by_server); msg = ArmsUtils.getString(context, R.string.response_error_request_rejected_by_server);
} else if (httpException.code() == 307) { } else if (httpException.code() == 307) {
msg = ArmsUtils.getString(context, R.string.response_error_request_was_redirected_to_another_page); msg = ArmsUtils.getString(context, R.string.response_error_request_was_redirected_to_another_page);
} else if (httpException.code() == 401) {
Activity activity = GsaCloudApplication.getAppContext().getCurrentActivity();
if (!showloggedDialog && activity != null) {
showloggedDialog = true;
showloggedDialog(activity, ArmsUtils.getString(context, R.string.response_error_request_logged));
}
} else { } else {
msg = httpException.message(); msg = httpException.message();
} }
return msg; return msg;
} }
private void showloggedDialog(Activity context, String msg) {
QMUIDialog.MessageDialogBuilder dialogBuilder = new QMUIDialog.MessageDialogBuilder(context);
dialogBuilder.setTitle("溫馨提示");
dialogBuilder.setMessage(msg);
dialogBuilder.addAction(0, "確認", QMUIDialogAction.ACTION_PROP_NEGATIVE, (dialog, index) -> {
GsaCloudApplication.isLogin = false;
CC.obtainBuilder("User.Component.Login")
.setActionName("showActivityA")
.build()
.call();
showloggedDialog = false;
context.finish();
dialog.dismiss();
});
dialogBuilder.create(R.style.MyDialogTheme2).show();
}
} }
...@@ -5,6 +5,8 @@ import android.app.Activity; ...@@ -5,6 +5,8 @@ import android.app.Activity;
import android.app.Application; import android.app.Application;
import android.os.Bundle; import android.os.Bundle;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
@SuppressLint("NewApi") @SuppressLint("NewApi")
public class MyActivityLifecycle implements Application.ActivityLifecycleCallbacks { public class MyActivityLifecycle implements Application.ActivityLifecycleCallbacks {
...@@ -28,6 +30,7 @@ public class MyActivityLifecycle implements Application.ActivityLifecycleCallbac ...@@ -28,6 +30,7 @@ public class MyActivityLifecycle implements Application.ActivityLifecycleCallbac
@Override @Override
public void onActivityResumed(Activity activity) { public void onActivityResumed(Activity activity) {
GsaCloudApplication.getAppContext().setCurrentActivity(activity);
} }
@Override @Override
...@@ -36,6 +39,7 @@ public class MyActivityLifecycle implements Application.ActivityLifecycleCallbac ...@@ -36,6 +39,7 @@ public class MyActivityLifecycle implements Application.ActivityLifecycleCallbac
@Override @Override
public void onActivityStopped(Activity activity) { public void onActivityStopped(Activity activity) {
GsaCloudApplication.getAppContext().setCurrentActivity(null);
} }
@Override @Override
......
package com.gingersoft.gsa.cloud.ui.utils;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Rect;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import com.gingersoft.gsa.cloud.base.R;
import java.lang.reflect.Method;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2020-02-29
* 修订历史:2020-02-29
* 描述:
*/
public class AndroidWorkaround {
public static void assistActivity(View content) {
new AndroidWorkaround(content);
}
private View mChildOfContent;
private int usableHeightPrevious;
private ViewGroup.LayoutParams frameLayoutParams;
private AndroidWorkaround(View content) {
mChildOfContent = content;
mChildOfContent.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
public void onGlobalLayout() {
possiblyResizeChildOfContent();
}
});
frameLayoutParams = mChildOfContent.getLayoutParams();
}
private void possiblyResizeChildOfContent() {
int usableHeightNow = computeUsableHeight();
if (usableHeightNow != usableHeightPrevious) {
frameLayoutParams.height = usableHeightNow;
mChildOfContent.requestLayout();
usableHeightPrevious = usableHeightNow;
}
}
private int computeUsableHeight() {
Rect r = new Rect();
mChildOfContent.getWindowVisibleDisplayFrame(r);
return (r.bottom);
}
public static boolean checkDeviceHasNavigationBar(Context context) {
boolean hasNavigationBar = false;
Resources rs = context.getResources();
int id = rs.getIdentifier("config_showNavigationBar", "bool", "android");
if (id > 0) {
hasNavigationBar = rs.getBoolean(id);
}
try {
Class systemPropertiesClass = Class.forName("android.os.SystemProperties");
Method m = systemPropertiesClass.getMethod("get", String.class);
String navBarOverride = (String) m.invoke(systemPropertiesClass, "qemu.hw.mainkeys");
if ("1".equals(navBarOverride)) {
hasNavigationBar = false;
} else if ("0".equals(navBarOverride)) {
hasNavigationBar = true;
}
} catch (Exception e) {
}
return hasNavigationBar;
}
}
...@@ -22,6 +22,7 @@ import com.gingersoft.gsa.cloud.ui.adapter.BasTextSectiontAdapter; ...@@ -22,6 +22,7 @@ import com.gingersoft.gsa.cloud.ui.adapter.BasTextSectiontAdapter;
import com.gingersoft.gsa.cloud.ui.bean.mode.LoginBean; import com.gingersoft.gsa.cloud.ui.bean.mode.LoginBean;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionHeader; import com.gingersoft.gsa.cloud.ui.bean.view.SectionHeader;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionTextItem; import com.gingersoft.gsa.cloud.ui.bean.view.SectionTextItem;
import com.jess.arms.utils.AndroidWorkaround;
import com.qmuiteam.qmui.QMUILog; import com.qmuiteam.qmui.QMUILog;
import com.qmuiteam.qmui.util.QMUIDisplayHelper; import com.qmuiteam.qmui.util.QMUIDisplayHelper;
import com.qmuiteam.qmui.widget.QMUITopBar; import com.qmuiteam.qmui.widget.QMUITopBar;
...@@ -239,6 +240,7 @@ public class ChooseRestaurantDialog extends Dialog { ...@@ -239,6 +240,7 @@ public class ChooseRestaurantDialog extends Dialog {
mDialog = new ChooseRestaurantDialog(mContext); mDialog = new ChooseRestaurantDialog(mContext);
View contentView = buildViews(); View contentView = buildViews();
mDialog.setContentView(contentView, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, QMUIDisplayHelper.getScreenHeight(mContext))); mDialog.setContentView(contentView, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, QMUIDisplayHelper.getScreenHeight(mContext)));
AndroidWorkaround.assistActivity(contentView);
return mDialog; return mDialog;
} }
......
...@@ -107,6 +107,7 @@ ...@@ -107,6 +107,7 @@
<string name="response_error_address_does_not_exist">請求地址不存在</string> <string name="response_error_address_does_not_exist">請求地址不存在</string>
<string name="response_error_request_rejected_by_server">請求被服務器拒絕</string> <string name="response_error_request_rejected_by_server">請求被服務器拒絕</string>
<string name="response_error_request_was_redirected_to_another_page">請求被重定向到其他頁面</string> <string name="response_error_request_was_redirected_to_another_page">請求被重定向到其他頁面</string>
<string name="response_error_request_logged">賬號已在其他設備登錄</string>
<string name="app_exception">很抱歉,程序出現異常,即將退出!</string> <string name="app_exception">很抱歉,程序出現異常,即將退出!</string>
<string name="queue_write_external_storage_permission_hint">保存失敗,請先前往設置開放存儲權限</string> <string name="queue_write_external_storage_permission_hint">保存失敗,請先前往設置開放存儲權限</string>
......
...@@ -61,6 +61,8 @@ public interface MealStandContract { ...@@ -61,6 +61,8 @@ public interface MealStandContract {
void setComboAdapter(DefaultAdapter adapter); void setComboAdapter(DefaultAdapter adapter);
void setModifierAdapter(DefaultAdapter adapter);
void setDiscountAdapter(DefaultAdapter adapter); void setDiscountAdapter(DefaultAdapter adapter);
void setSelectFoodRecycleLayoutManager(); void setSelectFoodRecycleLayoutManager();
...@@ -71,6 +73,8 @@ public interface MealStandContract { ...@@ -71,6 +73,8 @@ public interface MealStandContract {
void setComboRecycleLayoutManager(int orientation); void setComboRecycleLayoutManager(int orientation);
void setModifierRecycleLayoutManager(int orientation);
void setDiscountRecycleLayoutManager(int orientation); void setDiscountRecycleLayoutManager(int orientation);
void setFoodGroupRecycleSpanCount(int size); void setFoodGroupRecycleSpanCount(int size);
...@@ -79,6 +83,8 @@ public interface MealStandContract { ...@@ -79,6 +83,8 @@ public interface MealStandContract {
void setComboRecycleSpanCount(int size); void setComboRecycleSpanCount(int size);
void setModifierRecycleSpanCount(int size);
void setDiscountRecycleSpanCount(int size); void setDiscountRecycleSpanCount(int size);
void showViewModeVisibility(int... viewMode); void showViewModeVisibility(int... viewMode);
......
...@@ -12,6 +12,7 @@ public interface MealConstant { ...@@ -12,6 +12,7 @@ public interface MealConstant {
int food_group_ViewMode = 100; int food_group_ViewMode = 100;
int food_ViewMode = 101; int food_ViewMode = 101;
int combo_ViewMode = 102; int combo_ViewMode = 102;
int modifier_ViewMode = 103;
int discount_ViewMode = 104; int discount_ViewMode = 104;
int fine_ViewMode = 105; int fine_ViewMode = 105;
int fine_tabs_ViewMode = 106; int fine_tabs_ViewMode = 106;
......
...@@ -96,13 +96,16 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas ...@@ -96,13 +96,16 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
mOrderContentActivity = (OrderContentActivity) IActivity; mOrderContentActivity = (OrderContentActivity) IActivity;
} }
foodCount = initFoodCount(); recalcOrderMoneyCount();
totalMoney = initFoodTotalMoney();
resetSelected(); resetSelected();
initOrderAdapter(); initOrderAdapter();
} }
private void recalcOrderMoneyCount() {
foodCount = initFoodCount();
totalMoney = initFoodTotalMoney();
}
@Override @Override
public void onDestroy() { public void onDestroy() {
super.onDestroy(); super.onDestroy();
...@@ -141,7 +144,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas ...@@ -141,7 +144,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
changeNumber(datasBean.getNumber() - 1); changeNumber(datasBean.getNumber() - 1);
} }
mSelectMealAdapter.notifyDataSetChanged(); mSelectMealAdapter.notifyDataSetChanged();
// recalcOrderMoneyCount(false, true); recalcOrderMoneyCount();
if (mOrderContentActivity != null) { if (mOrderContentActivity != null) {
mOrderContentActivity.initOrderDetail(); mOrderContentActivity.initOrderDetail();
} }
...@@ -149,11 +152,11 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas ...@@ -149,11 +152,11 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
@Override @Override
public void onMealCountAdd(OrderDetail datasBean, int position) { public void onMealCountAdd(OrderDetail datasBean, int position) {
changeNumber(datasBean.getNumber() - 1); changeNumber(datasBean.getNumber() +1);
recalcOrderMoneyCount();
if (mOrderContentActivity != null) { if (mOrderContentActivity != null) {
mOrderContentActivity.initOrderDetail(); mOrderContentActivity.initOrderDetail();
} }
// recalcOrderMoneyCount(false, true);
} }
}); });
} }
......
...@@ -26,6 +26,7 @@ import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity; ...@@ -26,6 +26,7 @@ import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.ComboAdapter; import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.ComboAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.FoodAdapter; import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.FoodAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.FoodGroupAdapter; import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.FoodGroupAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.ModifierAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.SelectMealAdapter; import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.SelectMealAdapter;
import com.jess.arms.di.scope.ActivityScope; import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.http.imageloader.ImageLoader; import com.jess.arms.http.imageloader.ImageLoader;
...@@ -79,13 +80,14 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -79,13 +80,14 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
private FoodAdapter mFoodAdapter; private FoodAdapter mFoodAdapter;
private ComboAdapter mComboAdapter; private ComboAdapter mComboAdapter;
private ModifierAdapter mModifierAdapter;
//食品数据 //食品数据
private List<Food> mFoodGroupList = new ArrayList<>(); private List<Food> mFoodGroupList = new ArrayList<>();
private List<Food> mFoodList = new ArrayList<>(); private List<Food> mFoodList = new ArrayList<>();
//套餐细项数据 //套餐细项数据
private List<ComboItem> mFoodComboList = new ArrayList<>(); private List<ComboItem> mFoodComboList = new ArrayList<>();
private List<Modifier> mModifierList = new ArrayList<>();
private List<ComboItem> mCurrentFoodComboList;
private OrderDetail mCurrentOrderDetailBean; private OrderDetail mCurrentOrderDetailBean;
private boolean RvMealClicked; private boolean RvMealClicked;
...@@ -139,6 +141,10 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -139,6 +141,10 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
mComboAdapter = new ComboAdapter(IActivity, mFoodComboList); mComboAdapter = new ComboAdapter(IActivity, mFoodComboList);
mRootView.setComboAdapter(mComboAdapter); mRootView.setComboAdapter(mComboAdapter);
} }
if (mModifierAdapter == null) {
mModifierAdapter = new ModifierAdapter(IActivity, mModifierList);
mRootView.setModifierAdapter(mModifierAdapter);
}
} }
public void initItemClickListener() { public void initItemClickListener() {
...@@ -198,19 +204,35 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -198,19 +204,35 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
// addModalKeyBoardModfier(datasBean.getModifier()); // addModalKeyBoardModfier(datasBean.getModifier());
// displayModalKeyBoardDialog(); // displayModalKeyBoardDialog();
// } else { // } else {
if (datasBean.isModifier()) { //设置当前操作的套餐细项
addModifierItem(datasBean.getModifier()); mCurrentOrderDetailBean = OrderDetail.comboTransOrderDetail(datasBean, 1, mCurrentOrderDetailBean.getId(), "combo", RvMealClicked);
} else { //先清除上一次选择的子项最大数
//设置当前操作的套餐细项
mCurrentOrderDetailBean = OrderDetail.comboTransOrderDetail(datasBean, 1, mCurrentOrderDetailBean.getId(), "combo", RvMealClicked);
//先清除上一次选择的子项最大数
// mModel.clearComboQty(); // mModel.clearComboQty();
//添加子项 //添加子项
addComboItem(mCurrentOrderDetailBean); addComboItem(mCurrentOrderDetailBean);
}
// } // }
} }
}); });
mModifierAdapter.setOnItemClickListener(new ModifierAdapter.OnItemClickListener() {
@Override
public void onItemClick(Modifier datasBean, int position) {
mRootView.recordOperat(true);
RvMealClicked = false;
// Food orderBean = isParentFood(datasBean.getFID());
// if (orderBean != null && !foodConditionFilter(orderBean)) {
// return;
// }
// if (datasBean.isModKeyboard()) {
// addModalKeyBoardModfier(datasBean.getModifier());
// displayModalKeyBoardDialog();
// } else {
addModifierItem(datasBean);
}
});
} }
private void addFoodItemBefore(OrderDetail datasBean) { private void addFoodItemBefore(OrderDetail datasBean) {
...@@ -265,44 +287,50 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -265,44 +287,50 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
private void loadComboData(OrderDetail food, boolean isSelectedMeal) { private void loadComboData(OrderDetail food, boolean isSelectedMeal) {
long fid = food.getProductId(); long fid = food.getProductId();
if (mCurrentFoodComboList == null) {
mCurrentFoodComboList = new ArrayList<>();
} else {
mCurrentFoodComboList.clear();
}
List<ComboItem> comboItemList = new ArrayList<>();
if (food.getItemType() == 1) { if (food.getItemType() == 1) {
//获取套餐细项数据 //获取套餐细项数据
mCurrentFoodComboList = mModel.queryDB_ComboList(fid); List<ComboItem> comboItems = mModel.queryDB_ComboList(fid);
comboItemList.addAll(comboItems);
} }
List<Modifier> modifierList = mModel.queryDB_ModifierList(fid); List<Modifier> modifierList = mModel.queryDB_ModifierList(fid);
for (int i = 0; i < modifierList.size(); i++) { // for (int i = 0; i < modifierList.size(); i++) {
Modifier modfier = modifierList.get(i); // Modifier modfier = modifierList.get(i);
/** // /**
* 这里套餐细项和备注使用同一个rv显示,统一数据源 // * 这里套餐细项和备注使用同一个rv显示,统一数据源
*/ // */
{ // {
//设置备注细项背景、字体颜色 // //设置备注细项背景、字体颜色
modfier.setBgColor(Color.parseColor("#ffeb3b")); // modfier.setBgColor(Color.parseColor("#ffeb3b"));
//
ComboItem foodComboItem = new ComboItem(); // ComboItem foodComboItem = new ComboItem();
foodComboItem.setModifier(true); // foodComboItem.setModifier(true);
// if (modfier.isParent()) { //// if (modfier.isParent()) {
// foodComboItem.setModKeyboard(modfier.isModKeyboard()); //// foodComboItem.setModKeyboard(modfier.isModKeyboard());
// } //// }
foodComboItem.setModifier(modfier); // foodComboItem.setModifier(modfier);
//
// mCurrentFoodComboList.add(foodComboItem);
// }
// }
mCurrentFoodComboList.add(foodComboItem); //更新套餐数据
} updateComboData(comboItemList);
//更新细项数据
updateModifierData(modifierList);
if (comboItemList.size() > 0) {
IActivity.setModifierTop(10);
}else {
IActivity.setModifierTop(0);
} }
//更新套餐细项数据
updateComboData(mCurrentFoodComboList);
// if (food.getAutoMod() == 1) { // if (food.getAutoMod() == 1) {
if (isSelectedMeal || mCurrentFoodComboList.size() > 0) { if (isSelectedMeal || comboItemList.size() > 0 || modifierList.size() > 0) {
mRootView.showViewModeVisibility(MealConstant.combo_ViewMode); mRootView.showViewModeVisibility(MealConstant.combo_ViewMode, MealConstant.modifier_ViewMode);
} }
// } // }
} }
...@@ -695,7 +723,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -695,7 +723,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
return true; return true;
} }
private void updateOrderFoodNumber() { public void updateOrderFoodNumber() {
setFoodBtnNumber(); setFoodBtnNumber();
setFoodGroupBtnNumber(IActivity.getFoodGroupGridViewAdapter(), mFoodGroupList); setFoodGroupBtnNumber(IActivity.getFoodGroupGridViewAdapter(), mFoodGroupList);
...@@ -805,6 +833,14 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -805,6 +833,14 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
mComboAdapter.notifyDataSetChanged(); mComboAdapter.notifyDataSetChanged();
} }
private void updateModifierData(List<Modifier> modifiers) {
mModifierList.clear();
mModifierList.addAll(modifiers);
//根据Item个数显示每一行的个数
mRootView.setModifierRecycleSpanCount(mModifierList.size());
mComboAdapter.notifyDataSetChanged();
}
public boolean isRvMealClicked() { public boolean isRvMealClicked() {
return RvMealClicked; return RvMealClicked;
} }
...@@ -816,4 +852,8 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -816,4 +852,8 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
public OrderDetail getCurrentOrderDetailBean() { public OrderDetail getCurrentOrderDetailBean() {
return mCurrentOrderDetailBean; return mCurrentOrderDetailBean;
} }
public SelectMealAdapter getSelectMealAdapter() {
return mSelectMealAdapter;
}
} }
...@@ -184,7 +184,7 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model ...@@ -184,7 +184,7 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model
* @param //person 人數 * @param //person 人數
* @param statius 訂單狀態 4 已結賬 * @param statius 訂單狀態 4 已結賬
*/ */
public void updateOrderState(String statius) { public void updateOrderState(String statius, boolean show) {
RequestBody requestBody = new FormBody.Builder() RequestBody requestBody = new FormBody.Builder()
.add("orderId", MyOrderManage.getInstance().getOrderId() + "") .add("orderId", MyOrderManage.getInstance().getOrderId() + "")
.add("person", OpenTableManage.getDefault().getPeopleNumber() + "") .add("person", OpenTableManage.getDefault().getPeopleNumber() + "")
...@@ -193,6 +193,10 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model ...@@ -193,6 +193,10 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model
.build(); .build();
mModel.updateOrderStatus(requestBody) mModel.updateOrderStatus(requestBody)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> {
if (show)
mRootView.showLoading(null);
})
.subscribeOn(AndroidSchedulers.mainThread()) .subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.doAfterTerminate(() -> mRootView.hideLoading()) .doAfterTerminate(() -> mRootView.hideLoading())
...@@ -226,7 +230,7 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model ...@@ -226,7 +230,7 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model
if (info.getData() != null) { if (info.getData() != null) {
setOrderId((Double) info.getData()); setOrderId((Double) info.getData());
} }
updateOrderState("4"); updateOrderState("4", false);
} else { } else {
mRootView.showMessage("結賬失敗!"); mRootView.showMessage("結賬失敗!");
} }
...@@ -257,7 +261,7 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model ...@@ -257,7 +261,7 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model
@Override @Override
public void onNext(@NonNull BaseResult info) { public void onNext(@NonNull BaseResult info) {
if (info != null && info.isSuccess()) { if (info != null && info.isSuccess()) {
updateOrderState("4"); updateOrderState("4", false);
} else { } else {
mRootView.showMessage("結賬失敗!"); mRootView.showMessage("結賬失敗!");
} }
...@@ -281,7 +285,7 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model ...@@ -281,7 +285,7 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model
sendOrder(); sendOrder();
} else { } else {
//直接結賬 //直接結賬
updateOrderState("4"); updateOrderState("4", true);
} }
} }
......
...@@ -119,6 +119,8 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen ...@@ -119,6 +119,8 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen
RecyclerView rv_food; RecyclerView rv_food;
@BindView(R2.id.rv_combo) @BindView(R2.id.rv_combo)
RecyclerView rv_combo; RecyclerView rv_combo;
@BindView(R2.id.rv_modifier)
RecyclerView rv_modifier;
@BindView(R2.id.rv_discount) @BindView(R2.id.rv_discount)
RecyclerView rv_discount; RecyclerView rv_discount;
...@@ -292,6 +294,10 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen ...@@ -292,6 +294,10 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen
@Override @Override
protected void onResume() { protected void onResume() {
super.onResume(); super.onResume();
//更新點餐信息
mPresenter.resetSelected();
mPresenter.getSelectMealAdapter().notifyDataSetChanged();
mPresenter.updateOrderFoodNumber();
initOrderDetail(); initOrderDetail();
} }
...@@ -299,7 +305,7 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen ...@@ -299,7 +305,7 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen
TableBean.DataBean dataBean = OpenTableManage.getDefault().getTableBean(); TableBean.DataBean dataBean = OpenTableManage.getDefault().getTableBean();
if (dataBean != null) { if (dataBean != null) {
btn_table.setText(dataBean.getTableName()); btn_table.setText(dataBean.getTableName());
btn_numberman.setText(OpenTableManage.getDefault().getPeopleNumber() + ""); btn_numberman.setText("人數:" + OpenTableManage.getDefault().getPeopleNumber() + "");
} }
} }
...@@ -583,7 +589,7 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen ...@@ -583,7 +589,7 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen
} else if (id == R.id.btn_end) { } else if (id == R.id.btn_end) {
showViewModeVisibility(MealConstant.food_group_ViewMode, MealConstant.food_ViewMode); showViewModeVisibility(MealConstant.food_group_ViewMode, MealConstant.food_ViewMode);
} else if (id == R.id.iv_fine_back) { } else if (id == R.id.iv_fine_back) {
showViewModeVisibility(MealConstant.combo_ViewMode); showViewModeVisibility(MealConstant.combo_ViewMode, MealConstant.modifier_ViewMode);
} else if (id == R.id.btn_key1 || id == R.id.btn_key2 || id == R.id.btn_key3 || id == R.id.btn_key4 || id == R.id.btn_key5 || id == R.id.btn_keys) { } else if (id == R.id.btn_key1 || id == R.id.btn_key2 || id == R.id.btn_key3 || id == R.id.btn_key4 || id == R.id.btn_key5 || id == R.id.btn_keys) {
int i = Integer.parseInt(v.getTag().toString()); int i = Integer.parseInt(v.getTag().toString());
...@@ -735,12 +741,19 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen ...@@ -735,12 +741,19 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen
} }
@Override @Override
public void setModifierAdapter(DefaultAdapter adapter) {
setModifierRecycleLayoutManager(LinearLayoutManager.VERTICAL);
rv_modifier.setAdapter(adapter);
}
@Override
public void setDiscountAdapter(DefaultAdapter adapter) { public void setDiscountAdapter(DefaultAdapter adapter) {
} }
private GridLayoutManager foodRecycleLayoutManager; private GridLayoutManager foodRecycleLayoutManager;
private GridLayoutManager comboRecycleLayoutManager; private GridLayoutManager comboRecycleLayoutManager;
private GridLayoutManager modifierRecycleLayoutManager;
@Override @Override
public void setSelectFoodRecycleLayoutManager() { public void setSelectFoodRecycleLayoutManager() {
...@@ -769,6 +782,13 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen ...@@ -769,6 +782,13 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen
} }
@Override @Override
public void setModifierRecycleLayoutManager(int orientation) {
modifierRecycleLayoutManager = new GridLayoutManager(this, 1, LinearLayoutManager.VERTICAL, false);
rv_modifier.setLayoutManager(modifierRecycleLayoutManager);
rv_modifier.setItemAnimator(new DefaultItemAnimator());
}
@Override
public void setDiscountRecycleLayoutManager(int orientation) { public void setDiscountRecycleLayoutManager(int orientation) {
} }
...@@ -806,6 +826,20 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen ...@@ -806,6 +826,20 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen
} }
@Override @Override
public void setModifierRecycleSpanCount(int size) {
if (size > 0) {
// if (size > ComboColCount) {
setModifierRecycleLayoutManager(LinearLayoutManager.VERTICAL);
modifierRecycleLayoutManager.setSpanCount(ComboColCount);
// } else if (size <= ComboColCount) {
// } else {
// //只有一行就使用水平显示以免不能占满
// setComboRecycleLayoutManager(LinearLayoutManager.HORIZONTAL);
// }
}
}
@Override
public void setDiscountRecycleSpanCount(int size) { public void setDiscountRecycleSpanCount(int size) {
} }
...@@ -837,6 +871,7 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen ...@@ -837,6 +871,7 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen
showModifyLayoutVisibility(false); showModifyLayoutVisibility(false);
break; break;
case MealConstant.combo_ViewMode: case MealConstant.combo_ViewMode:
case MealConstant.modifier_ViewMode:
case MealConstant.discount_ViewMode: case MealConstant.discount_ViewMode:
showModifyLayoutVisibility(true); showModifyLayoutVisibility(true);
break; break;
...@@ -965,6 +1000,7 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen ...@@ -965,6 +1000,7 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen
map.put(MealConstant.food_group_ViewMode, ll_food_group); map.put(MealConstant.food_group_ViewMode, ll_food_group);
map.put(MealConstant.food_ViewMode, rv_food); map.put(MealConstant.food_ViewMode, rv_food);
map.put(MealConstant.combo_ViewMode, rv_combo); map.put(MealConstant.combo_ViewMode, rv_combo);
map.put(MealConstant.modifier_ViewMode, rv_modifier);
map.put(MealConstant.discount_ViewMode, rv_discount); map.put(MealConstant.discount_ViewMode, rv_discount);
map.put(MealConstant.fine_ViewMode, pager_fine); map.put(MealConstant.fine_ViewMode, pager_fine);
map.put(MealConstant.fine_tabs_ViewMode, rl_fine_tabs); map.put(MealConstant.fine_tabs_ViewMode, rl_fine_tabs);
...@@ -1025,4 +1061,12 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen ...@@ -1025,4 +1061,12 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen
} }
} }
} }
public void setModifierTop(int Margins) {
RelativeLayout.LayoutParams layoutParam = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
layoutParam.setMargins(0, Margins, 0, 0);
layoutParam.addRule(RelativeLayout.ABOVE, R.id.ll_stand_oper);
layoutParam.addRule(RelativeLayout.BELOW, R.id.rv_combo);
rv_modifier.setLayoutParams(layoutParam);
}
} }
package com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal;
import android.content.Context;
import android.graphics.drawable.GradientDrawable;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
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.R2;
import com.jess.arms.base.BaseHolder;
import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.utils.ArmsUtils;
import com.jess.arms.utils.DeviceUtils;
import java.util.List;
import butterknife.BindView;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2018/6/27
* 修订历史:2018/6/27
* 描述:
*/
public class ModifierAdapter extends DefaultAdapter<Modifier> {
private Context mContext;
private int ColWidth;
private int ColHeight;
private int FontSize;
private int OrderNumberChildShowSize;
private int OrderNumberChildFontSize;
public ModifierAdapter(Context context, List<Modifier> infos) {
super(infos);
this.mContext = context;
int ComboColCount = 4;
int screenWidth = (int) DeviceUtils.getScreenWidth(context);
ColWidth = ((screenWidth - ComboColCount) / ComboColCount);
ColHeight = GsaCloudApplication.androidSetting.getModBtnHeight();
FontSize = GsaCloudApplication.androidSetting.getModFontSize();
OrderNumberChildShowSize = GsaCloudApplication.androidSetting.getOrderNumberChildShowSize();
OrderNumberChildFontSize = GsaCloudApplication.androidSetting.getOrderNumberChildFontSize();
}
@Override
public int getItemCount() {
return mInfos.size();
}
@Override
public BaseHolder<Modifier> getHolder(View v, int viewType) {
return new ComboItemHolder(v);
}
@Override
public int getLayoutId(int viewType) {
return R.layout.table_item_combo;
}
class ComboItemHolder extends BaseHolder<Modifier> {
@BindView(R2.id.tv_name)
TextView tv_name;
@BindView(R2.id.tv_soldout)
TextView tv_soldout;
@BindView(R2.id.iv_qty_sold)
ImageView iv_qty_sold;
@BindView(R2.id.iv_return)
ImageView iv_return;
public ComboItemHolder(View itemView) {
super(itemView);
}
@Override
public void setData(Modifier datasBean, int position) {
iv_qty_sold.setVisibility(View.INVISIBLE);
tv_soldout.setVisibility(View.INVISIBLE);
initModifierName(datasBean);
initModifierSoldout(datasBean);
initModifierLayoutParams();
tv_name.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
if (mOnItemClickListener != null) {
mOnItemClickListener.onItemClick(datasBean, position);
}
break;
case MotionEvent.ACTION_CANCEL:
case MotionEvent.ACTION_UP:
break;
}
return true;
}
});
}
private void initModifierName(Modifier datasBean) {
String desc = datasBean.getModifierName();
// switch (GSAApplication.androidSetting.getDataLanguage()) {
// case 1:
// desc = datasBean.getDesc1();
// break;
// case 2:
// desc = datasBean.getDesc2();
// break;
// case 3:
// desc = datasBean.getDesc3();
// break;
// }
// if (desc == null || desc.trim().length() == 0) {
// desc = datasBean.getDesc1();
// }
tv_name.setText(desc);
// com.elegant.bin.gsa.mvp.main.model.bean.Color.DatasBean bgAndFontColor = datasBean.getBgAndFontColor();
// if (bgAndFontColor != null) {
// if (!TextUtils.isEmpty(bgAndFontColor.getAndroidColor())) {
// tv_name.setBackgroundColor(Color.parseColor(bgAndFontColor.getAndroidColor()));
// } else {
tv_name.setBackgroundColor(ArmsUtils.getColor(mContext, R.color.keyboard_paybill_normal));
// }
// if (!TextUtils.isEmpty(bgAndFontColor.getAndroidfontcolor())) {
// tv_name.setTextColor(Color.parseColor(bgAndFontColor.getAndroidfontcolor()));
// } else {
tv_name.setTextColor(ArmsUtils.getColor(mContext, R.color.theme_white_color));
// }
// }
// tv_name.setHeight(ColHeight);
// tv_name.setWidth(ColWidth);
// tv_name.setMaxWidth(ColHeight);
// tv_name.setMinWidth(ColWidth);
tv_name.setGravity(Gravity.CENTER);
tv_name.setTextSize(FontSize);
}
private void initModifierSoldout(Modifier datasBean) {
// if (datasBean.isSoldout()) {
// iv_qty_sold.setVisibility(View.VISIBLE);
// } 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.setText(maxNumber);
} else {
tv_soldout.setVisibility(View.INVISIBLE);
}
tv_soldout.setMaxHeight(OrderNumberChildShowSize);
tv_soldout.setMinHeight(OrderNumberChildShowSize);
tv_soldout.setTextSize(OrderNumberChildFontSize);
}
private void initModifierLayoutParams() {
ViewGroup.LayoutParams layoutParams = tv_name.getLayoutParams();
//这里减2 减去分割线宽度
layoutParams.width = ColWidth - 4;
layoutParams.height = ColHeight;
tv_name.setLayoutParams(layoutParams);
}
}
private OnItemClickListener mOnItemClickListener;
public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
mOnItemClickListener = onItemClickListener;
}
public interface OnItemClickListener {
void onItemClick(Modifier datasBean, int position);
}
}
...@@ -442,8 +442,9 @@ public class SelectMealAdapter extends DefaultAdapter<OrderDetail> { ...@@ -442,8 +442,9 @@ public class SelectMealAdapter extends DefaultAdapter<OrderDetail> {
switch (orderDetail.getItemType()) { switch (orderDetail.getItemType()) {
case 1: case 1:
//第一层下方有细项 从下方往上删 //第一层下方有细项 从下方往上删
if (select_end_position != 0 && select_end_position > select_position) { // if (select_end_position != 0 && select_end_position > select_position) {
for (int i = select_end_position; i > select_position; i--) { if (select_full_end_position != 0 && select_full_end_position > select_position) {
for (int i = select_full_end_position; i > select_position; i--) {
OrderDetail orderBean = mInfos.get(i); OrderDetail orderBean = mInfos.get(i);
boolean isParentChild = orderBean.getParentIndex() == orderDetail.getMyIndex(); boolean isParentChild = orderBean.getParentIndex() == orderDetail.getMyIndex();
if (orderBean.getItemType() == 3 && !isParentChild) { if (orderBean.getItemType() == 3 && !isParentChild) {
...@@ -625,17 +626,17 @@ public class SelectMealAdapter extends DefaultAdapter<OrderDetail> { ...@@ -625,17 +626,17 @@ public class SelectMealAdapter extends DefaultAdapter<OrderDetail> {
private void setItemNo(OrderDetail foodBean) { private void setItemNo(OrderDetail foodBean) {
switch (foodBean.getItemType()) { switch (foodBean.getItemType()) {
case 1: case 1:
// foodBean.setParentId(foodBean.getId()); // foodBean.setParentId(foodBean.getProductId());
break; break;
case 2: case 2:
case 3: case 3:
long itemno = -1; long itemno = -1;
if (select_position != -1 && select_position < mInfos.size()) { if (select_position != -1 && select_position < mInfos.size()) {
if (mInfos.get(select_position).isIsfood()) { if (mInfos.get(select_position).isIsfood()) {
itemno = mInfos.get(select_position).getId(); itemno = mInfos.get(select_position).getProductId();
} else { } else {
if (select_start_position != -1 && select_start_position < mInfos.size()) { if (select_start_position != -1 && select_start_position < mInfos.size()) {
itemno = mInfos.get(select_start_position).getId(); itemno = mInfos.get(select_start_position).getProductId();
} }
} }
} }
......
...@@ -266,6 +266,7 @@ ...@@ -266,6 +266,7 @@
android:layout_weight="0.1" android:layout_weight="0.1"
android:background="#00B9F7" android:background="#00B9F7"
android:text="@string/Addordelete" android:text="@string/Addordelete"
android:visibility="gone"
android:textColor="@color/theme_white_color" android:textColor="@color/theme_white_color"
android:textSize="20sp" /> android:textSize="20sp" />
...@@ -279,6 +280,7 @@ ...@@ -279,6 +280,7 @@
android:layout_weight="0.1" android:layout_weight="0.1"
android:background="#7D8888" android:background="#7D8888"
android:text="@string/msg" android:text="@string/msg"
android:visibility="gone"
android:textColor="@color/theme_white_color" android:textColor="@color/theme_white_color"
android:textSize="20sp" /> android:textSize="20sp" />
...@@ -485,7 +487,6 @@ ...@@ -485,7 +487,6 @@
android:id="@+id/rv_combo" 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:layout_above="@+id/ll_stand_oper"
android:layout_below="@+id/ll_meals" android:layout_below="@+id/ll_meals"
android:divider="@null" android:divider="@null"
android:fadeScrollbars="false" android:fadeScrollbars="false"
...@@ -493,6 +494,17 @@ ...@@ -493,6 +494,17 @@
android:visibility="gone" /> android:visibility="gone" />
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_modifier"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/ll_stand_oper"
android:layout_below="@+id/rv_combo"
android:divider="@null"
android:fadeScrollbars="false"
android:orientation="vertical"
android:visibility="gone" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_discount" android:id="@+id/rv_discount"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
......
...@@ -83,7 +83,7 @@ public class LoginPresenter extends BasePresenter<LoginContract.Model, LoginCont ...@@ -83,7 +83,7 @@ public class LoginPresenter extends BasePresenter<LoginContract.Model, LoginCont
mModel.login(requestBody) mModel.login(requestBody)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> mRootView.showLoading(null)) .doOnSubscribe(disposable -> mRootView.showLoading("登錄中..."))
.subscribeOn(AndroidSchedulers.mainThread()) .subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.doAfterTerminate(() -> mRootView.hideLoading()) .doAfterTerminate(() -> mRootView.hideLoading())
......
package com.gingersoft.gsa.cloud.user.login.mvp.ui.activity; package com.gingersoft.gsa.cloud.user.login.mvp.ui.activity;
import android.app.Activity;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.text.Editable; import android.text.Editable;
...@@ -14,6 +15,7 @@ import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication; ...@@ -14,6 +15,7 @@ import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.utils.JsonUtils; import com.gingersoft.gsa.cloud.base.utils.JsonUtils;
import com.gingersoft.gsa.cloud.base.utils.constans.UserConstans; import com.gingersoft.gsa.cloud.base.utils.constans.UserConstans;
import com.gingersoft.gsa.cloud.base.utils.gson.GsonUtils; import com.gingersoft.gsa.cloud.base.utils.gson.GsonUtils;
import com.gingersoft.gsa.cloud.base.utils.log.LogUtil;
import com.gingersoft.gsa.cloud.base.utils.other.SPUtils; import com.gingersoft.gsa.cloud.base.utils.other.SPUtils;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils; import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.ui.bean.mode.LoginBean; import com.gingersoft.gsa.cloud.ui.bean.mode.LoginBean;
...@@ -27,6 +29,7 @@ import com.gingersoft.gsa.cloud.user.login.mvp.contract.LoginContract; ...@@ -27,6 +29,7 @@ import com.gingersoft.gsa.cloud.user.login.mvp.contract.LoginContract;
import com.gingersoft.gsa.cloud.user.login.mvp.presenter.LoginPresenter; import com.gingersoft.gsa.cloud.user.login.mvp.presenter.LoginPresenter;
import com.jess.arms.base.BaseActivity; import com.jess.arms.base.BaseActivity;
import com.jess.arms.di.component.AppComponent; import com.jess.arms.di.component.AppComponent;
import com.jess.arms.integration.AppManager;
import com.jess.arms.utils.ArmsUtils; import com.jess.arms.utils.ArmsUtils;
import java.io.IOException; import java.io.IOException;
...@@ -34,6 +37,8 @@ import java.util.ArrayList; ...@@ -34,6 +37,8 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import javax.inject.Inject;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import butterknife.BindView; import butterknife.BindView;
...@@ -62,6 +67,10 @@ import static com.jess.arms.utils.Preconditions.checkNotNull; ...@@ -62,6 +67,10 @@ import static com.jess.arms.utils.Preconditions.checkNotNull;
* ================================================ * ================================================
*/ */
public class LoginActivity extends BaseActivity<LoginPresenter> implements LoginContract.View, View.OnClickListener { public class LoginActivity extends BaseActivity<LoginPresenter> implements LoginContract.View, View.OnClickListener {
@Inject
AppManager mAppManager;
@BindView(R2.id.ed_login_user_account) @BindView(R2.id.ed_login_user_account)
EditText edAccount; EditText edAccount;
@BindView(R2.id.ed_login_user_pwd) @BindView(R2.id.ed_login_user_pwd)
...@@ -155,6 +164,24 @@ public class LoginActivity extends BaseActivity<LoginPresenter> implements Login ...@@ -155,6 +164,24 @@ public class LoginActivity extends BaseActivity<LoginPresenter> implements Login
} }
@Override @Override
public void onResume() {
super.onResume();
killBeforeActivty();
}
private void killBeforeActivty() {
List<Activity> activities = mAppManager.getActivityList();
for (int i = activities.size() - 1; i >= 0; i--) {
Activity activity = activities.get(i);
if (!activity.getClass().getName().equals(getClass().getName())) {
LogUtil.d(TAG, "killBeforeActivty: " + i + " - " + activity.getClass().getSimpleName());
mAppManager.killActivity(activity.getClass());
mAppManager.removeActivity(activity);
}
}
}
@Override
public void initIntent() { public void initIntent() {
} }
......
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