Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
supplier
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
王宇航
supplier
Commits
6d6f9c24
Commit
6d6f9c24
authored
Jun 10, 2020
by
宁斌
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1、新增版本更新2、餐檯拖动位置 3、转檯后服务费 折扣 账单小数更新处理
parent
827ae9eb
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
40 changed files
with
914 additions
and
103 deletions
+914
-103
arms/src/main/java/com/jess/arms/utils/DeviceUtils.java
+18
-1
base-module/src/main/java/com/gingersoft/gsa/cloud/base/application/GsaCloudApplication.java
+1
-1
base-module/src/main/java/com/gingersoft/gsa/cloud/base/utils/MoneyUtil.java
+14
-0
base-module/src/main/java/com/gingersoft/gsa/cloud/constans/HttpsConstans.java
+1
-1
base-module/src/main/java/com/gingersoft/gsa/cloud/database/bean/Discount.java
+2
-2
base-module/src/main/java/com/gingersoft/gsa/cloud/ui/activity/WebActivity.java
+0
-0
base-module/src/main/java/com/gingersoft/gsa/cloud/ui/recylcler/event/OnRecyclerItemClickListener.java
+65
-0
base-module/src/main/java/com/gingersoft/gsa/cloud/ui/recylcler/event/RecyItemTouchHelperCallback.java
+130
-0
base-module/src/main/java/com/gingersoft/gsa/cloud/ui/utils/webviewUtils/WebImageListener.java
+46
-0
base-module/src/main/java/com/gingersoft/gsa/cloud/ui/utils/webviewUtils/WebViewUtils.java
+146
-0
base-module/src/main/java/com/gingersoft/gsa/cloud/ui/view/WebViewProgressBar.java
+145
-0
base-module/src/main/res/drawable/webview_progressbar.xml
+15
-0
base-module/src/main/res/layout/activity_web.xml
+17
-0
base-module/src/main/res/layout/include_basic_web.xml
+35
-0
base-module/src/main/res/values/attrs.xml
+7
-0
base-module/src/main/res/values/strings.xml
+2
-1
main-module/build.gradle
+3
-0
main-module/src/main/java/com/gingersoft/gsa/cloud/main/mvp/contract/NewMainContract.java
+3
-1
main-module/src/main/java/com/gingersoft/gsa/cloud/main/mvp/model/NewMainModel.java
+2
-1
main-module/src/main/java/com/gingersoft/gsa/cloud/main/mvp/model/bean/CheckVersionRequest.java
+55
-0
main-module/src/main/java/com/gingersoft/gsa/cloud/main/mvp/model/service/MainService.java
+4
-2
main-module/src/main/java/com/gingersoft/gsa/cloud/main/mvp/presenter/NewMainPresenter.java
+76
-15
main-module/src/main/java/com/gingersoft/gsa/cloud/main/mvp/ui/activity/NewMainActivity.java
+15
-20
manager-module/src/main/java/com/gingersoft/gsa/cloud/manager/mvp/ui/fragment/TableListFragment.java
+28
-0
qm-qmui/src/main/java/com/qmuiteam/qmui/widget/section/QMUISection.java
+4
-0
qm-qmui/src/main/java/com/qmuiteam/qmui/widget/section/QMUIStickySectionAdapter.java
+5
-2
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/model/bean/request/AddOrderRequest.java
+9
-0
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/model/bean/request/DeleteOrderRequest.java
+9
-0
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/BaseOrderPresenter.java
+21
-7
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/MealStandPresenter.java
+1
-0
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/OrderContentPresenter.java
+4
-26
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/TablePresenter.java
+4
-4
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/activity/MealStandActivity.java
+11
-1
table-module/src/main/res/layout/meal_activity_soldout_ctrl.xml
+7
-7
updateApk/src/main/AndroidManifest.xml
+1
-2
updateApk/src/main/java/activity/UpdateAppActivity.java
+1
-1
updateApk/src/main/java/service/UpdateAppService.java
+0
-1
updateApk/src/main/java/util/UpdateAppReceiver.java
+2
-4
updateApk/src/main/res/drawable/logo.png
+0
-0
updateApk/src/main/res/values/color.xml
+5
-3
No files found.
arms/src/main/java/com/jess/arms/utils/DeviceUtils.java
View file @
6d6f9c24
...
...
@@ -593,6 +593,23 @@ public class DeviceUtils {
}
/**
* 启动到应用商店app详情界面
*
* @param appPkg 目标App的包名
* @param marketPkg 应用商店包名 ,如果为""则由系统弹出应用商店列表供用户选择,否则调转到目标市场的应用详情界面,某些应用商店可能会失败
*/
public
static
void
launchAppDetail
(
Context
mContext
,
String
appPkg
,
String
marketPkg
)
throws
Exception
{
if
(
TextUtils
.
isEmpty
(
appPkg
))
return
;
Uri
uri
=
Uri
.
parse
(
"market://details?id="
+
appPkg
);
Intent
intent
=
new
Intent
(
Intent
.
ACTION_VIEW
,
uri
);
if
(!
TextUtils
.
isEmpty
(
marketPkg
))
{
intent
.
setPackage
(
marketPkg
);
}
intent
.
addFlags
(
Intent
.
FLAG_ACTIVITY_NEW_TASK
);
mContext
.
startActivity
(
intent
);
}
/**
* 拨打电话
*
* @param context
...
...
@@ -778,7 +795,7 @@ public class DeviceUtils {
intent
.
setType
(
"text/plain"
);
intent
.
putExtra
(
Intent
.
EXTRA_SUBJECT
,
"分享:"
+
title
);
intent
.
putExtra
(
Intent
.
EXTRA_TEXT
,
title
+
" "
+
url
);
context
.
startActivity
(
Intent
.
createChooser
(
intent
,
"
选择
分享"
));
context
.
startActivity
(
Intent
.
createChooser
(
intent
,
"
選擇
分享"
));
}
/**
...
...
base-module/src/main/java/com/gingersoft/gsa/cloud/base/application/GsaCloudApplication.java
View file @
6d6f9c24
...
...
@@ -160,7 +160,7 @@ public class GsaCloudApplication extends BaseApplication {
//沽清控制請求地址
RetrofitUrlManager
.
getInstance
().
putDomain
(
"soldoutctrl"
,
HttpsConstans
.
_SERVER_ADDRESS
);
//版本更新請求地址
RetrofitUrlManager
.
getInstance
().
putDomain
(
"update_version"
,
HttpsConstans
.
ROOT_URL
);
RetrofitUrlManager
.
getInstance
().
putDomain
(
"update_version"
,
HttpsConstans
.
ROOT_URL
+
"/member-web/api/"
);
//友常本地請求地址
RetrofitUrlManager
.
getInstance
().
putDomain
(
"yc_location"
,
HttpsConstans
.
ROOT_SERVER_YOU_CHANG_HK
);
}
...
...
base-module/src/main/java/com/gingersoft/gsa/cloud/base/utils/MoneyUtil.java
View file @
6d6f9c24
...
...
@@ -158,6 +158,7 @@ public class MoneyUtil {
return
(
b1
.
multiply
(
b2
)).
setScale
(
1
,
ROUND_HALF_UP
).
doubleValue
();
}
/**
* 计算总价
* 計算和
...
...
@@ -212,6 +213,19 @@ public class MoneyUtil {
// }
/**
* BigDecimal 相乘
*
* @param v1
* @param v2
* @return double
*/
public
static
Double
multiply
(
double
v1
,
double
v2
)
{
BigDecimal
n1
=
new
BigDecimal
(
Double
.
toString
(
v1
));
BigDecimal
n2
=
new
BigDecimal
(
Double
.
toString
(
v2
));
return
n1
.
multiply
(
n2
).
doubleValue
();
}
/**
* 計算除 保留兩位小數,四捨五入
*
* @param v1
...
...
base-module/src/main/java/com/gingersoft/gsa/cloud/constans/HttpsConstans.java
View file @
6d6f9c24
...
...
@@ -43,7 +43,7 @@ public class HttpsConstans {
private
static
String
PATH
=
"/ricepon-cloud-gsa/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.1
54
:9012/api/"
;
//世維本地
public
static
String
ROOT_SERVER_SHI_WEI_HK
=
"http://192.168.1.1
69
:9012/api/"
;
//世維本地
public
static
String
ROOT_SERVER_SHI_SHU_HK
=
"http://192.168.1.154:9012/api/"
;
//石书本地
//------------------------------------------外賣接單---------------------------------------------------------------------------
...
...
base-module/src/main/java/com/gingersoft/gsa/cloud/database/bean/Discount.java
View file @
6d6f9c24
...
...
@@ -166,7 +166,7 @@ public class Discount {
discountPrice
=
discount
.
getAmount
();
}
else
{
//百分比折扣
discountPrice
=
sourcePrice
*
discount
.
getDiscount_value
(
);
discountPrice
=
MoneyUtil
.
multiply
(
sourcePrice
,
discount
.
getDiscount_value
()
);
}
if
(
sourcePrice
<
discountPrice
){
//折扣金額不能超出總額
...
...
@@ -175,7 +175,7 @@ public class Discount {
// else {
// discountPrice = sourcePrice - discountPrice;
// }
return
-
MoneyUtil
.
get_ItemDecimals_money
(
discountPrice
);
return
-
MoneyUtil
.
get_ItemDecimals_money
(
discountPrice
);
}
}
base-module/src/main/java/com/gingersoft/gsa/cloud/ui/activity/WebActivity.java
0 → 100644
View file @
6d6f9c24
This diff is collapsed.
Click to expand it.
base-module/src/main/java/com/gingersoft/gsa/cloud/ui/recylcler/event/OnRecyclerItemClickListener.java
0 → 100644
View file @
6d6f9c24
package
com
.
gingersoft
.
gsa
.
cloud
.
ui
.
recylcler
.
event
;
import
android.view.GestureDetector
;
import
android.view.MotionEvent
;
import
android.view.View
;
import
androidx.core.view.GestureDetectorCompat
;
import
androidx.recyclerview.widget.RecyclerView
;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2020-06-10
* 修订历史:2020-06-10
* 描述:
*/
public
abstract
class
OnRecyclerItemClickListener
implements
RecyclerView
.
OnItemTouchListener
{
private
GestureDetectorCompat
mGestureDetectorCompat
;
private
RecyclerView
mRecyclerView
;
public
OnRecyclerItemClickListener
(
RecyclerView
recyclerView
)
{
mRecyclerView
=
recyclerView
;
mGestureDetectorCompat
=
new
GestureDetectorCompat
(
mRecyclerView
.
getContext
(),
new
ItemTouchHelperGestureListener
());
}
@Override
public
boolean
onInterceptTouchEvent
(
RecyclerView
rv
,
MotionEvent
e
)
{
mGestureDetectorCompat
.
onTouchEvent
(
e
);
return
false
;
}
@Override
public
void
onTouchEvent
(
RecyclerView
rv
,
MotionEvent
e
)
{
mGestureDetectorCompat
.
onTouchEvent
(
e
);
}
@Override
public
void
onRequestDisallowInterceptTouchEvent
(
boolean
disallowIntercept
)
{
}
public
abstract
void
onItemClick
(
RecyclerView
.
ViewHolder
viewHolder
);
public
abstract
void
onLongClick
(
RecyclerView
.
ViewHolder
viewHolder
);
private
class
ItemTouchHelperGestureListener
extends
GestureDetector
.
SimpleOnGestureListener
{
@Override
public
boolean
onSingleTapUp
(
MotionEvent
e
)
{
View
childViewUnder
=
mRecyclerView
.
findChildViewUnder
(
e
.
getX
(),
e
.
getY
());
if
(
childViewUnder
!=
null
)
{
RecyclerView
.
ViewHolder
childViewHolder
=
mRecyclerView
.
getChildViewHolder
(
childViewUnder
);
onItemClick
(
childViewHolder
);
}
return
true
;
}
@Override
public
void
onLongPress
(
MotionEvent
e
)
{
View
childViewUnder
=
mRecyclerView
.
findChildViewUnder
(
e
.
getX
(),
e
.
getY
());
if
(
childViewUnder
!=
null
)
{
RecyclerView
.
ViewHolder
childViewHolder
=
mRecyclerView
.
getChildViewHolder
(
childViewUnder
);
onLongClick
(
childViewHolder
);
}
}
}
}
base-module/src/main/java/com/gingersoft/gsa/cloud/ui/recylcler/event/RecyItemTouchHelperCallback.java
0 → 100644
View file @
6d6f9c24
package
com
.
gingersoft
.
gsa
.
cloud
.
ui
.
recylcler
.
event
;
import
android.graphics.Color
;
import
com.jess.arms.base.DefaultAdapter
;
import
com.qmuiteam.qmui.widget.section.QMUIDefaultStickySectionAdapter
;
import
com.qmuiteam.qmui.widget.section.QMUISection
;
import
com.qmuiteam.qmui.widget.section.QMUIStickySectionAdapter
;
import
java.util.Collections
;
import
java.util.List
;
import
androidx.recyclerview.widget.GridLayoutManager
;
import
androidx.recyclerview.widget.ItemTouchHelper
;
import
androidx.recyclerview.widget.RecyclerView
;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2020-06-10
* 修订历史:2020-06-10
* 描述:
*/
public
class
RecyItemTouchHelperCallback
<
H
extends
QMUISection
.
Model
<
H
>,
T
extends
QMUISection
.
Model
<
T
>>
extends
ItemTouchHelper
.
Callback
{
RecyclerView
.
Adapter
mAdapter
;
boolean
isSwipeEnable
;
boolean
isFirstDragUnable
;
public
RecyItemTouchHelperCallback
(
RecyclerView
.
Adapter
adapter
)
{
mAdapter
=
adapter
;
isSwipeEnable
=
true
;
isFirstDragUnable
=
false
;
}
public
RecyItemTouchHelperCallback
(
RecyclerView
.
Adapter
adapter
,
boolean
isSwipeEnable
,
boolean
isFirstDragUnable
)
{
mAdapter
=
adapter
;
this
.
isSwipeEnable
=
isSwipeEnable
;
this
.
isFirstDragUnable
=
isFirstDragUnable
;
}
@Override
public
int
getMovementFlags
(
RecyclerView
recyclerView
,
RecyclerView
.
ViewHolder
viewHolder
)
{
if
(
recyclerView
.
getLayoutManager
()
instanceof
GridLayoutManager
)
{
int
dragFlags
=
ItemTouchHelper
.
UP
|
ItemTouchHelper
.
DOWN
|
ItemTouchHelper
.
LEFT
|
ItemTouchHelper
.
RIGHT
;
int
swipeFlags
=
0
;
return
makeMovementFlags
(
dragFlags
,
swipeFlags
);
}
else
{
int
dragFlags
=
ItemTouchHelper
.
UP
|
ItemTouchHelper
.
DOWN
;
int
swipeFlags
=
ItemTouchHelper
.
START
|
ItemTouchHelper
.
END
;
return
makeMovementFlags
(
dragFlags
,
swipeFlags
);
}
}
@Override
public
boolean
onMove
(
RecyclerView
recyclerView
,
RecyclerView
.
ViewHolder
viewHolder
,
RecyclerView
.
ViewHolder
target
)
{
int
fromPosition
=
viewHolder
.
getAdapterPosition
();
int
toPosition
=
target
.
getAdapterPosition
();
if
(
isFirstDragUnable
&&
toPosition
==
0
)
{
return
false
;
}
if
(
fromPosition
<
toPosition
)
{
for
(
int
i
=
fromPosition
;
i
<
toPosition
;
i
++)
{
if
(
mAdapter
instanceof
QMUIStickySectionAdapter
)
{
QMUIStickySectionAdapter
.
ViewHolder
holder
=
(
QMUIStickySectionAdapter
.
ViewHolder
)
viewHolder
;
int
pos
=
holder
.
isForStickyHeader
?
i
:
holder
.
getAdapterPosition
();
int
ItemIndex
=
((
QMUIStickySectionAdapter
)
mAdapter
).
getItemIndex
(
pos
);
QMUISection
<
H
,
T
>
qmuiSections
=
((
QMUIStickySectionAdapter
)
mAdapter
).
getSection
(
ItemIndex
);
List
<?>
list
=
qmuiSections
.
getItemList
();
Collections
.
swap
(
list
,
ItemIndex
,
ItemIndex
+
1
);
}
else
{
Collections
.
swap
(((
DefaultAdapter
)
mAdapter
).
getInfos
(),
i
,
i
+
1
);
}
}
}
else
{
for
(
int
i
=
fromPosition
;
i
>
toPosition
;
i
--)
{
if
(
mAdapter
instanceof
QMUIStickySectionAdapter
)
{
QMUIStickySectionAdapter
.
ViewHolder
holder
=
(
QMUIStickySectionAdapter
.
ViewHolder
)
viewHolder
;
int
pos
=
holder
.
isForStickyHeader
?
i
:
holder
.
getAdapterPosition
();
int
ItemIndex
=
((
QMUIStickySectionAdapter
)
mAdapter
).
getItemIndex
(
pos
);
QMUISection
<
H
,
T
>
qmuiSections
=
((
QMUIStickySectionAdapter
)
mAdapter
).
getSection
(
ItemIndex
);
List
<?>
list
=
qmuiSections
.
getItemList
();
Collections
.
swap
(
list
,
ItemIndex
,
ItemIndex
-
1
);
}
else
{
Collections
.
swap
(((
DefaultAdapter
)
mAdapter
).
getInfos
(),
i
,
i
-
1
);
}
}
}
mAdapter
.
notifyItemMoved
(
fromPosition
,
toPosition
);
mAdapter
.
notifyItemChanged
(
toPosition
);
mAdapter
.
notifyItemChanged
(
fromPosition
);
return
true
;
}
@Override
public
void
onSwiped
(
RecyclerView
.
ViewHolder
viewHolder
,
int
direction
)
{
int
adapterPosition
=
viewHolder
.
getAdapterPosition
();
mAdapter
.
notifyItemRemoved
(
adapterPosition
);
if
(
mAdapter
instanceof
QMUIDefaultStickySectionAdapter
)
{
((
QMUIDefaultStickySectionAdapter
)
mAdapter
).
getCurrentData
().
remove
(
adapterPosition
);
}
else
{
((
DefaultAdapter
)
mAdapter
).
getInfos
().
remove
(
adapterPosition
);
}
}
@Override
public
void
onSelectedChanged
(
RecyclerView
.
ViewHolder
viewHolder
,
int
actionState
)
{
if
(
actionState
!=
ItemTouchHelper
.
ACTION_STATE_IDLE
)
{
viewHolder
.
itemView
.
setBackgroundColor
(
Color
.
LTGRAY
);
}
super
.
onSelectedChanged
(
viewHolder
,
actionState
);
}
@Override
public
void
clearView
(
RecyclerView
recyclerView
,
RecyclerView
.
ViewHolder
viewHolder
)
{
super
.
clearView
(
recyclerView
,
viewHolder
);
viewHolder
.
itemView
.
setBackgroundColor
(
Color
.
WHITE
);
}
@Override
public
boolean
isLongPressDragEnabled
()
{
return
!
isFirstDragUnable
;
}
@Override
public
boolean
isItemViewSwipeEnabled
()
{
return
isSwipeEnable
;
}
}
\ No newline at end of file
base-module/src/main/java/com/gingersoft/gsa/cloud/ui/utils/webviewUtils/WebImageListener.java
0 → 100644
View file @
6d6f9c24
package
com
.
gingersoft
.
gsa
.
cloud
.
ui
.
utils
.
webviewUtils
;
import
android.content.Context
;
import
android.webkit.JavascriptInterface
;
import
java.util.ArrayList
;
public
class
WebImageListener
{
private
Context
mContext
;
private
Class
mImageActivity
;
private
ArrayList
<
String
>
mImages
=
new
ArrayList
<>();
public
WebImageListener
(
Context
context
,
Class
imageActivity
)
{
mContext
=
context
;
mImageActivity
=
imageActivity
;
}
public
WebImageListener
(
Context
context
)
{
mContext
=
context
;
}
public
void
collectImage
(
String
url
)
{
if
(!
url
.
startsWith
(
"http"
)
||
url
.
startsWith
(
"https://mp.weixin.qq.com/"
)
||
url
.
startsWith
(
"https://res.wx.qq.com/"
)
)
{
return
;
}
if
(!
mImages
.
contains
(
url
))
mImages
.
add
(
url
);
}
@JavascriptInterface
public
void
onImageClicked
(
String
url
)
{
// Logger.e("clicked:" + url);
// if (mImageActivity != null) {
// Intent intent = new Intent(mContext, mImageActivity);
// intent.putExtra(ImageActivity.CURRENT_IMAGE_URL, url);
// intent.putExtra(ImageActivity.ALL_IMAGE_URLS, mImages);
// mContext.startActivity(intent);
// }
// ARouter.getInstance().build(PUBLIC_PHOTO)
// .withString(EXTRA_PHOTO_URL, url)
// .navigation();
}
}
base-module/src/main/java/com/gingersoft/gsa/cloud/ui/utils/webviewUtils/WebViewUtils.java
0 → 100644
View file @
6d6f9c24
package
com
.
gingersoft
.
gsa
.
cloud
.
ui
.
utils
.
webviewUtils
;
import
android.text.TextUtils
;
import
android.webkit.WebSettings
;
import
android.webkit.WebView
;
public
class
WebViewUtils
{
public
static
void
initWebView
(
WebView
webView
)
{
WebSettings
settings
=
webView
.
getSettings
();
// 1、设置WebView是否支持使用屏幕控件或手势进行缩放,默认是true,支持缩放。
settings
.
setSupportZoom
(
false
);
// 2、设置WebView是否通过手势触发播放媒体,默认是true,需要手势触发。
settings
.
setMediaPlaybackRequiresUserGesture
(
true
);
// 3、设置WebView是否使用其内置的变焦机制,该机制集合屏幕缩放控件使用,默认是false,不使用内置变焦机制。
settings
.
setBuiltInZoomControls
(
false
);
// 4、设置WebView使用内置缩放机制时,是否展现在屏幕缩放控件上,默认true,展现在控件上。
settings
.
setDisplayZoomControls
(
false
);
// 5、设置在WebView内部是否允许访问文件,默认允许访问。
settings
.
setAllowFileAccess
(
true
);
// 6、是否允许在WebView中访问内容URL(Content Url),默认允许。内容Url访问允许WebView从安装在系统中的内容提供者载入内容。
settings
.
setAllowContentAccess
(
true
);
// 7、设置WebView是否使用预览模式加载界面。
settings
.
setLoadWithOverviewMode
(
true
);
// 8、设置WebView是否保存表单数据,默认true,保存数据。
settings
.
setSaveFormData
(
true
);
// 9、设置WebView中加载页面字体变焦百分比,默认100,整型数。
settings
.
setTextZoom
(
100
);
// 10、设置WebView访问第三方Cookies策略,参考CookieManager提供的方法:setShouldAcceptThirdPartyCookies。
// settings.setAcceptThirdPartyCookies(false);
// 11、设置WebView是否使用viewport,当该属性被设置为false时,加载页面的宽度总是适应WebView控件宽度;
// 当被设置为true,当前页面包含viewport属性标签,在标签中指定宽度值生效,如果页面不包含viewport标签,
// 无法提供一个宽度值,这个时候该方法将被使用。
settings
.
setUseWideViewPort
(
false
);
// 12、设置WebView是否支持多屏窗口,参考WebChromeClient#onCreateWindow,默认false,不支持。
settings
.
setSupportMultipleWindows
(
false
);
// 13、设置WebView底层的布局算法,参考LayoutAlgorithm#NARROW_COLUMNS,将会重新生成WebView布局。
// settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
// 14、设置WebView标准字体库字体,默认字体“sans-serif”。
settings
.
setStandardFontFamily
(
"sans-serif"
);
// 15、设置WebView固定的字体库字体,默认“monospace”。
settings
.
setFixedFontFamily
(
"monospace"
);
// 16、设置WebView Sans SeriFontFamily字体库字体,默认“sans-serif”。
settings
.
setSansSerifFontFamily
(
"sans-serif"
);
// 17、设置WebView seri FontFamily字体库字体,默认“sans-serif”。
settings
.
setSerifFontFamily
(
"sans-serif"
);
// 18、设置WebView字体库字体,默认“cursive”。
settings
.
setCursiveFontFamily
(
"cursive"
);
// 19、设置WebView字体库字体,默认“fantasy”。
settings
.
setFantasyFontFamily
(
"fantasy"
);
// 20、设置WebView字体最小值,默认值8,取值1到72。
settings
.
setMinimumFontSize
(
8
);
// 21、设置WebView逻辑上最小字体值,默认值8,取值1到72。
settings
.
setMinimumLogicalFontSize
(
8
);
// 22、设置WebView默认值字体值,默认值16,取值1到72。
settings
.
setDefaultFontSize
(
16
);
// 23、设置WebView默认固定的字体值,默认值16,取值1到72。
settings
.
setDefaultFixedFontSize
(
16
);
// 24、设置WebView是否加载图片资源,默认true,自动加载图片。
settings
.
setLoadsImagesAutomatically
(
true
);
// 25、设置WebView是否以http、https方式访问从网络加载图片资源,默认false。
settings
.
setBlockNetworkImage
(
false
);
// 26、设置WebView是否从网络加载资源,Application需要设置访问网络权限,否则报异常。
settings
.
setBlockNetworkLoads
(
false
);
// 27、设置WebView是否允许执行JavaScript脚本,默认false,不允许。
settings
.
setJavaScriptEnabled
(
true
);
// 28、设置WebView运行中的脚本可以是否访问任何原始起点内容,默认true。
settings
.
setAllowUniversalAccessFromFileURLs
(
true
);
// 29、设置WebView运行中的一个文件方案被允许访问其他文件方案中的内容,默认值true。
settings
.
setAllowFileAccessFromFileURLs
(
true
);
// 30、设置WebView保存地理位置信息数据路径,指定的路径Application具备写入权限。
// settings.setGeolocationDatabasePath(String path);
// 31、设置Application缓存API是否开启,默认false,设置有效的缓存路径参考setAppCachePath(String path)方法。
settings
.
setAppCacheEnabled
(
true
);
// 32、设置当前Application缓存文件路径,Application Cache API能够开启需要指定Application具备写入权限的路径。
// settings.setAppCachePath(String appCachePath);
// 33、设置是否开启数据库存储API权限,默认false,未开启,可以参考setDatabasePath(String path)。
settings
.
setDatabaseEnabled
(
true
);
// 34、设置是否开启DOM存储API权限,默认false,未开启,设置为true,WebView能够使用DOM storage API。
settings
.
setDomStorageEnabled
(
true
);
// 35、设置是否开启定位功能,默认true,开启定位。
settings
.
setGeolocationEnabled
(
true
);
// 36、设置脚本是否允许自动打开弹窗,默认false,不允许。
settings
.
setJavaScriptCanOpenWindowsAutomatically
(
true
);
// 37、设置WebView加载页面文本内容的编码,默认“UTF-8”。
settings
.
setDefaultTextEncodingName
(
"UTF-8"
);
// 38、设置WebView代理字符串,如果String为null或为空,将使用系统默认值。
// settings.setUserAgentString(String ua);
// 39、设置WebView是否需要设置一个节点获取焦点当被回调的时候,默认true。
settings
.
setNeedInitialFocus
(
true
);
// 40、重写缓存被使用到的方法,该方法基于Navigation Type,加载普通的页面,将会检查缓存同时重新验证是否需要加载,
// 如果不需要重新加载,将直接从缓存读取数据,
// 允许客户端通过指定LOAD_DEFAULT、LOAD_CACHE_ELSE_NETWORK、LOAD_NO_CACHE、LOAD_CACHE_ONLY其中之一重写该行为方法,
// 默认值LOAD_DEFAULT。
// settings.setCacheMode(WebSettings.LOAD_DEFAULT);
// 41、设置当一个安全站点企图加载来自一个不安全站点资源时WebView的行为,
// android.os.Build.VERSION_CODES.KITKAT默认为MIXED_CONTENT_ALWAYS_ALLOW,
// android.os.Build.VERSION_CODES#LOLLIPOP默认为MIXED_CONTENT_NEVER_ALLOW,
// 取值其中之一:MIXED_CONTENT_NEVER_ALLOW、MIXED_CONTENT_ALWAYS_ALLOW、MIXED_CONTENT_COMPATIBILITY_MODE。
// settings.setMixedContentMode(WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE);
}
public
static
void
addImageClickListener
(
WebView
webView
)
{
webView
.
loadUrl
(
"javascript:(function(){"
+
"var objs = document.getElementsByTagName(\"img\"); "
+
"for(var i=0;i<objs.length;i++) "
+
"{"
+
" window.listener.collectImage(objs[i].src); "
+
" objs[i].onclick=function() "
+
" { "
+
" window.listener.onImageClicked(this.src); "
+
" } "
+
"}"
+
"})()"
);
}
public
static
String
convertTopicContent
(
String
content
)
{
if
(
TextUtils
.
isEmpty
(
content
)
||
TextUtils
.
isEmpty
(
content
.
trim
()))
return
""
;
// 过滤掉 img标签的width,height属性
content
=
content
.
replaceAll
(
"(<img[^>]*?)\\s+width\\s*=\\s*\\S+"
,
"$1"
);
content
=
content
.
replaceAll
(
"(<img[^>]*?)\\s+height\\s*=\\s*\\S+"
,
"$1"
);
// 添加点击查看大图
content
=
content
.
replaceAll
(
"<img[^>]+src=\"([^\"\'\\s]+)\"[^>c]*>(?!((?!</?a\\b).)*</a>)"
,
"<img src=\"$1\" onClick=\"javascript:listener.onImageClicked('$1')\"/>"
);
// 过滤table的内部属性
content
=
content
.
replaceAll
(
"(<table[^>]*?)\\s+border\\s*=\\s*\\S+"
,
"$1"
);
content
=
content
.
replaceAll
(
"(<table[^>]*?)\\s+cellspacing\\s*=\\s*\\S+"
,
"$1"
);
content
=
content
.
replaceAll
(
"(<table[^>]*?)\\s+cellpadding\\s*=\\s*\\S+"
,
"$1"
);
return
String
.
format
(
"<!DOCTYPE html>"
+
"<html><head>"
+
"<link rel=\"stylesheet\" type=\"text/css\" href=\"file:///android_asset/html/css/markdown.css\">"
+
"<link rel=\"stylesheet\" href=\"file:///android_asset/html/css/monokai.css\"/>"
+
"<script type=\"text/javascript\" src=\"file:///android_asset/html/js/highlight.pack.js\"></script>"
+
"<script>hljs.initHighlightingOnLoad();</script>"
+
"</head>"
+
"<body>"
+
"<div class=\"markdown\">"
+
"%s"
+
"</div>"
+
"</body></html>"
,
content
);
}
}
base-module/src/main/java/com/gingersoft/gsa/cloud/ui/view/WebViewProgressBar.java
0 → 100644
View file @
6d6f9c24
package
com
.
gingersoft
.
gsa
.
cloud
.
ui
.
view
;
import
android.animation.Animator
;
import
android.animation.ValueAnimator
;
import
android.content.Context
;
import
android.content.res.TypedArray
;
import
android.graphics.Canvas
;
import
android.graphics.Paint
;
import
android.util.AttributeSet
;
import
android.view.View
;
import
android.view.animation.LinearInterpolator
;
import
com.gingersoft.gsa.cloud.base.R
;
import
com.hyweb.n5.lib.util.DeviceUtil
;
import
com.jess.arms.utils.ArmsUtils
;
import
com.uuzuche.lib_zxing.DisplayUtil
;
public
class
WebViewProgressBar
extends
View
{
private
Context
mContext
;
private
int
mMax
;
//进度条最大的进度
private
int
mDefaultHeight
;
//高度
private
int
mCurProgress
;
//当前的进度
private
int
mWidth
;
private
int
mHeight
;
private
Paint
mPaint
;
private
int
mColor
;
public
WebViewProgressBar
(
Context
context
)
{
this
(
context
,
null
);
}
public
WebViewProgressBar
(
Context
context
,
AttributeSet
attrs
)
{
this
(
context
,
attrs
,
0
);
}
public
WebViewProgressBar
(
Context
context
,
AttributeSet
attrs
,
int
defStyleAttr
)
{
super
(
context
,
attrs
,
defStyleAttr
);
mContext
=
context
;
initAttr
(
attrs
);
}
private
void
initAttr
(
AttributeSet
attrs
)
{
TypedArray
array
=
mContext
.
obtainStyledAttributes
(
attrs
,
R
.
styleable
.
webview_progressbar
);
mMax
=
array
.
getInt
(
R
.
styleable
.
webview_progressbar_max
,
100
);
mCurProgress
=
array
.
getInt
(
R
.
styleable
.
webview_progressbar_progress
,
0
);
mDefaultHeight
=
array
.
getInt
(
R
.
styleable
.
webview_progressbar_progressHeight
,
8
);
mColor
=
array
.
getColor
(
R
.
styleable
.
webview_progressbar_progressColor
,
getResources
().
getColor
(
R
.
color
.
theme_text_pice_color
));
array
.
recycle
();
mPaint
=
new
Paint
();
mPaint
.
setColor
(
mColor
);
}
@Override
protected
void
onMeasure
(
int
widthMeasureSpec
,
int
heightMeasureSpec
)
{
super
.
onMeasure
(
widthMeasureSpec
,
heightMeasureSpec
);
int
widthSize
=
MeasureSpec
.
getSize
(
widthMeasureSpec
);
int
heightSize
=
MeasureSpec
.
getSize
(
heightMeasureSpec
);
int
widthMode
=
MeasureSpec
.
getMode
(
widthMeasureSpec
);
int
heightMode
=
MeasureSpec
.
getMode
(
heightMeasureSpec
);
//矩形宽度为view的80%
if
(
widthMode
==
MeasureSpec
.
EXACTLY
)
{
mWidth
=
widthSize
;
}
else
if
(
widthMode
==
MeasureSpec
.
AT_MOST
)
{
//mDefaultWidth 为你自定义设置的属性
mWidth
=
ArmsUtils
.
dip2px
(
getContext
(),
300
);
}
else
if
(
widthMode
==
MeasureSpec
.
UNSPECIFIED
)
{
mWidth
=
widthSize
;
}
if
(
heightMode
==
MeasureSpec
.
EXACTLY
)
{
mHeight
=
heightSize
;
}
else
if
(
heightMode
==
MeasureSpec
.
AT_MOST
)
{
//mDefaultHeight 为你自定义设置的属性
mHeight
=
ArmsUtils
.
dip2px
(
getContext
(),
mDefaultHeight
);
}
setMeasuredDimension
(
mWidth
,
mHeight
);
}
@Override
protected
void
onDraw
(
Canvas
canvas
)
{
super
.
onDraw
(
canvas
);
float
result
=
mWidth
*
((
float
)
mCurProgress
/
(
float
)
100
);
canvas
.
drawRect
(
0
,
0
,
result
,
mDefaultHeight
,
mPaint
);
}
public
int
getMax
()
{
return
mMax
;
}
public
void
setMax
(
int
max
)
{
mMax
=
max
;
}
public
int
getCurProgress
()
{
return
mCurProgress
;
}
public
interface
OnEndListener
{
void
onEnd
();
//动画结束的回调
}
public
void
setCurProgress
(
int
curProgress
,
long
time
,
final
OnEndListener
listener
)
{
if
(
mCurProgress
==
100
)
{
//重置mCurProgress为0
mCurProgress
=
0
;
}
//注意是从 mCurProgress->curProgress 来动画来实现
ValueAnimator
animator
=
ValueAnimator
.
ofInt
(
mCurProgress
,
curProgress
);
animator
.
setDuration
(
time
);
animator
.
setInterpolator
(
new
LinearInterpolator
());
animator
.
addUpdateListener
(
new
ValueAnimator
.
AnimatorUpdateListener
()
{
@Override
public
void
onAnimationUpdate
(
ValueAnimator
animation
)
{
mCurProgress
=
(
int
)
animation
.
getAnimatedValue
();
postInvalidate
();
//通知刷新
}
});
animator
.
start
();
animator
.
addListener
(
new
Animator
.
AnimatorListener
()
{
@Override
public
void
onAnimationEnd
(
Animator
animation
)
{
if
(
listener
!=
null
)
{
listener
.
onEnd
();
}
}
@Override
public
void
onAnimationStart
(
Animator
animation
)
{
}
@Override
public
void
onAnimationCancel
(
Animator
animation
)
{
}
@Override
public
void
onAnimationRepeat
(
Animator
animation
)
{
}
});
}
public
void
setNormalProgress
(
int
newProgress
)
{
mCurProgress
=
0
;
mCurProgress
=
newProgress
;
postInvalidate
();
}
}
base-module/src/main/res/drawable/webview_progressbar.xml
0 → 100644
View file @
6d6f9c24
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<item
android:id=
"@android:id/background"
>
<color
android:color=
"@android:color/transparent"
/>
</item>
<item
android:id=
"@android:id/progress"
>
<clip>
<color
android:color=
"@color/theme_webview_progressbar_color"
/>
</clip>
</item>
</layer-list>
\ No newline at end of file
base-module/src/main/res/layout/activity_web.xml
0 → 100644
View file @
6d6f9c24
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
android:id=
"@+id/container"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"vertical"
>
<com.qmuiteam.qmui.widget.QMUITopBar
android:id=
"@+id/topbar"
android:layout_width=
"match_parent"
android:layout_height=
"?attr/qmui_topbar_height"
app:qmui_topbar_title_color=
"@color/theme_white_color"
/>
<include
layout=
"@layout/include_basic_web"
/>
</LinearLayout>
base-module/src/main/res/layout/include_basic_web.xml
0 → 100644
View file @
6d6f9c24
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
<WebView
android:id=
"@+id/web_view"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
/>
<com.gingersoft.gsa.cloud.ui.view.WebViewProgressBar
android:id=
"@+id/progress_bar"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/dp_2"
android:visibility=
"gone"
/>
<ProgressBar
android:id=
"@+id/progress_bar1"
style=
"?android:attr/progressBarStyleHorizontal"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/dp_2"
android:progressDrawable=
"@drawable/webview_progressbar"
/>
<TextView
android:id=
"@+id/tv_hint"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:gravity=
"center"
android:text=
"@string/content_hint_touch_the_screen_to_reload"
android:textColor=
"@color/theme_hint_color"
android:textSize=
"@dimen/font_normal2"
android:visibility=
"invisible"
/>
</FrameLayout>
\ No newline at end of file
base-module/src/main/res/values/attrs.xml
View file @
6d6f9c24
...
...
@@ -14,6 +14,13 @@
<attr
name=
"SwipeBackLayoutStyle"
format=
"reference"
/>
<declare-styleable
name=
"webview_progressbar"
>
<attr
name=
"progress"
format=
"integer"
/>
<attr
name=
"max"
format=
"integer"
/>
<attr
name=
"progressHeight"
format=
"integer"
/>
<attr
name=
"progressColor"
format=
"color"
/>
</declare-styleable>
<!-- QMUI-->
<attr
name=
"app_primary_color"
format=
"color"
/>
<!-- topbar -->
<attr
name=
"app_content_bg_color"
format=
"color"
/>
<!-- content-->
...
...
base-module/src/main/res/values/strings.xml
View file @
6d6f9c24
...
...
@@ -98,7 +98,8 @@
<string
name=
"deleteExistsOrderdetail_All"
>
所有
</string>
<string
name=
"mealheight"
>
菜單高度
</string>
<string
name=
"datadown"
>
數據下載
</string>
<string
name=
"content_hint_touch_the_screen_to_reload"
>
輕觸屏幕重新加載
</string>
<string
name=
"authorize_call_phone"
>
無法撥號,請檢查是否已經打開撥號權限。
</string>
<!-- 上下拉刷新 -->
<string
name=
"srl_header_pulling"
>
下拉可以刷新
</string>
<string
name=
"srl_header_refreshing"
>
正在刷新…
</string>
...
...
main-module/build.gradle
View file @
6d6f9c24
...
...
@@ -47,6 +47,9 @@ android {
dependencies
{
implementation
fileTree
(
include:
[
'*.jar'
],
dir:
'libs'
)
api
project
(
':updateApk'
)
annotationProcessor
rootProject
.
ext
.
dependencies
[
"dagger2-compiler"
]
debugImplementation
rootProject
.
ext
.
dependencies
[
"canary-debug"
]
releaseImplementation
rootProject
.
ext
.
dependencies
[
"canary-release"
]
...
...
main-module/src/main/java/com/gingersoft/gsa/cloud/main/mvp/contract/NewMainContract.java
View file @
6d6f9c24
package
com
.
gingersoft
.
gsa
.
cloud
.
main
.
mvp
.
contract
;
import
com.gingersoft.gsa.cloud.main.mvp.model.bean.CheckVersionRequest
;
import
com.jess.arms.mvp.IView
;
import
com.jess.arms.mvp.IModel
;
import
com.tbruyelle.rxpermissions2.RxPermissions
;
...
...
@@ -23,6 +24,7 @@ import okhttp3.RequestBody;
public
interface
NewMainContract
{
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface
View
extends
IView
{
void
loginOut
();
RxPermissions
getRxPermissions
();
...
...
@@ -31,7 +33,7 @@ public interface NewMainContract {
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface
Model
extends
IModel
{
Observable
<
Objec
t
>
checkAppVersion
(
RequestBody
requestBody
);
Observable
<
CheckVersionReques
t
>
checkAppVersion
(
RequestBody
requestBody
);
Observable
<
Object
>
loginOut
(
RequestBody
requestBody
);
}
...
...
main-module/src/main/java/com/gingersoft/gsa/cloud/main/mvp/model/NewMainModel.java
View file @
6d6f9c24
...
...
@@ -2,6 +2,7 @@ package com.gingersoft.gsa.cloud.main.mvp.model;
import
android.app.Application
;
import
com.gingersoft.gsa.cloud.main.mvp.model.bean.CheckVersionRequest
;
import
com.gingersoft.gsa.cloud.main.mvp.model.service.MainService
;
import
com.gingersoft.gsa.cloud.main.mvp.ui.activity.MainActivity
;
import
com.google.gson.Gson
;
...
...
@@ -50,7 +51,7 @@ public class NewMainModel extends BaseModel implements NewMainContract.Model {
}
@Override
public
Observable
<
Objec
t
>
checkAppVersion
(
RequestBody
requestBody
)
{
public
Observable
<
CheckVersionReques
t
>
checkAppVersion
(
RequestBody
requestBody
)
{
return
mRepositoryManager
.
obtainRetrofitService
(
MainService
.
class
)
.
checkAppVersion
(
requestBody
);
}
...
...
main-module/src/main/java/com/gingersoft/gsa/cloud/main/mvp/model/bean/CheckVersionRequest.java
0 → 100644
View file @
6d6f9c24
package
com
.
gingersoft
.
gsa
.
cloud
.
main
.
mvp
.
model
.
bean
;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2020-06-09
* 修订历史:2020-06-09
* 描述:
*/
public
class
CheckVersionRequest
{
/**
* operate : 1
* code : 1
* updatePath :
* errorMsg : 操作成功
*/
private
int
operate
;
private
String
code
;
private
String
updatePath
;
private
String
errorMsg
;
public
int
getOperate
()
{
return
operate
;
}
public
void
setOperate
(
int
operate
)
{
this
.
operate
=
operate
;
}
public
String
getCode
()
{
return
code
;
}
public
void
setCode
(
String
code
)
{
this
.
code
=
code
;
}
public
String
getUpdatePath
()
{
return
updatePath
;
}
public
void
setUpdatePath
(
String
updatePath
)
{
this
.
updatePath
=
updatePath
;
}
public
String
getErrorMsg
()
{
return
errorMsg
;
}
public
void
setErrorMsg
(
String
errorMsg
)
{
this
.
errorMsg
=
errorMsg
;
}
}
main-module/src/main/java/com/gingersoft/gsa/cloud/main/mvp/model/service/MainService.java
View file @
6d6f9c24
package
com
.
gingersoft
.
gsa
.
cloud
.
main
.
mvp
.
model
.
service
;
import
com.gingersoft.gsa.cloud.main.mvp.model.bean.CheckVersionRequest
;
import
io.reactivex.Observable
;
import
me.jessyan.retrofiturlmanager.RetrofitUrlManager
;
import
okhttp3.RequestBody
;
...
...
@@ -16,6 +18,6 @@ public interface MainService {
Observable
<
Object
>
loginOut
(
@Body
RequestBody
requestBody
);
@Headers
({
"Domain-Name: update_version"
})
@POST
(
"
/member-web/api/
system/checkAppVersion"
+
RetrofitUrlManager
.
IDENTIFICATION_PATH_SIZE
+
2
)
Observable
<
Objec
t
>
checkAppVersion
(
@Body
RequestBody
requestBody
);
@POST
(
"system/checkAppVersion"
+
RetrofitUrlManager
.
IDENTIFICATION_PATH_SIZE
+
2
)
Observable
<
CheckVersionReques
t
>
checkAppVersion
(
@Body
RequestBody
requestBody
);
}
main-module/src/main/java/com/gingersoft/gsa/cloud/main/mvp/presenter/NewMainPresenter.java
View file @
6d6f9c24
package
com
.
gingersoft
.
gsa
.
cloud
.
main
.
mvp
.
presenter
;
import
android.app.Application
;
import
android.content.Intent
;
import
android.net.Uri
;
import
android.text.TextUtils
;
import
com.gingersoft.gsa.cloud.base.application.GsaCloudApplication
;
import
com.gingersoft.gsa.cloud.base.utils.LanguageUtils
;
import
com.gingersoft.gsa.cloud.main.R
;
import
com.gingersoft.gsa.cloud.main.mvp.contract.NewMainContract
;
import
com.gingersoft.gsa.cloud.main.mvp.model.bean.CheckVersionRequest
;
import
com.gingersoft.gsa.cloud.main.mvp.ui.activity.NewMainActivity
;
import
com.gingersoft.gsa.cloud.ui.activity.WebActivity
;
import
com.jess.arms.base.delegate.IActivity
;
import
com.jess.arms.di.scope.ActivityScope
;
import
com.jess.arms.http.imageloader.ImageLoader
;
import
com.jess.arms.integration.AppManager
;
...
...
@@ -27,6 +33,9 @@ import me.jessyan.rxerrorhandler.core.RxErrorHandler;
import
me.jessyan.rxerrorhandler.handler.ErrorHandleSubscriber
;
import
okhttp3.FormBody
;
import
okhttp3.RequestBody
;
import
util.UpdateAppUtils
;
import
static
com
.
jess
.
arms
.
utils
.
ArmsUtils
.
startActivity
;
/**
...
...
@@ -52,9 +61,12 @@ public class NewMainPresenter extends BasePresenter<NewMainContract.Model, NewMa
@Inject
AppManager
mAppManager
;
private
NewMainActivity
IActivity
;
@Inject
public
NewMainPresenter
(
NewMainContract
.
Model
model
,
NewMainContract
.
View
rootView
)
{
super
(
model
,
rootView
);
this
.
IActivity
=
(
NewMainActivity
)
rootView
;
}
@Override
...
...
@@ -69,28 +81,37 @@ public class NewMainPresenter extends BasePresenter<NewMainContract.Model, NewMa
public
void
checkAppVersion
()
{
RequestBody
requestBody
=
new
FormBody
.
Builder
()
.
add
(
"version"
,
DeviceUtils
.
getVersionName
(
mApplication
)
+
"|"
+
DeviceUtils
.
getVersionCode
(
mApplication
))
.
add
(
"type"
,
"2"
)
.
build
();
mModel
.
checkAppVersion
(
requestBody
)
.
subscribeOn
(
Schedulers
.
io
())
.
subscribeOn
(
AndroidSchedulers
.
mainThread
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
compose
(
RxLifecycleUtils
.
bindToLifecycle
(
mRootView
))
.
subscribe
(
new
ErrorHandleSubscriber
<
Objec
t
>(
mErrorHandler
)
{
.
subscribe
(
new
ErrorHandleSubscriber
<
CheckVersionReques
t
>(
mErrorHandler
)
{
@Override
public
void
onNext
(
@NonNull
Object
info
)
{
if
(
info
!=
null
)
{
// int operate = json.optInt("operate");//操作类型:1、不提示更新 2、提示更新可选择更新 3、强行更新
// if (operate == 2 || operate == 3 || operate == 4 || operate == 5) {
// String updatePath = json.optString("updatePath");
// if (!TextUtils.isEmpty("updatePath") && !updatePath.equals("null")) {
// updateAPK(operate, updatePath);
// } else {
// if (operate == 3) {
// ExitAPP();
// }
// }
// }
public
void
onNext
(
@NonNull
CheckVersionRequest
info
)
{
if
(
info
!=
null
)
{
/**
* 操作类型:
* 1、不提示更新
* 2、提示更新可选择更新
* 3、强行更新
* 4、跳转goole play下载app 没安装goole play就用webview打开goole网页下载
* 5、跳转goole play下载app 没安装goole play就用浏览器打开goole网页下载
*/
int
operate
=
info
.
getOperate
();
if
(
operate
==
2
||
operate
==
3
||
operate
==
4
||
operate
==
5
)
{
String
updatePath
=
info
.
getUpdatePath
();
if
(!
TextUtils
.
isEmpty
(
"updatePath"
)
&&
!
updatePath
.
equals
(
"null"
))
{
updateAPK
(
operate
,
updatePath
);
}
else
{
if
(
operate
==
3
)
{
mAppManager
.
appExit
();
}
}
}
}
else
{
}
}
...
...
@@ -102,7 +123,7 @@ public class NewMainPresenter extends BasePresenter<NewMainContract.Model, NewMa
.
build
();
mModel
.
loginOut
(
requestBody
)
.
subscribeOn
(
Schedulers
.
io
())
.
doOnSubscribe
(
disposable
->
mRootView
.
showLoading
(
""
))
.
doOnSubscribe
(
disposable
->
mRootView
.
showLoading
(
null
))
.
subscribeOn
(
AndroidSchedulers
.
mainThread
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
doAfterTerminate
(()
->
mRootView
.
hideLoading
())
...
...
@@ -118,6 +139,44 @@ public class NewMainPresenter extends BasePresenter<NewMainContract.Model, NewMa
});
}
public
void
updateAPK
(
int
type
,
String
downApkURL
)
{
if
(
type
==
4
||
type
==
5
){
if
(
type
==
4
){
try
{
DeviceUtils
.
launchAppDetail
(
IActivity
,
mApplication
.
getPackageName
(),
"com.android.vending"
);
}
catch
(
Exception
e
)
{
//跳转goole play下载app
WebActivity
.
startWebActivity_url
(
IActivity
,
downApkURL
,
WebActivity
.
RIGHT_TYPE_REFRESH
);
}
}
else
{
try
{
DeviceUtils
.
launchAppDetail
(
IActivity
,
mApplication
.
getPackageName
(),
"com.android.vending"
);
}
catch
(
Exception
e
)
{
Intent
intent
=
new
Intent
();
intent
.
setAction
(
"android.intent.action.VIEW"
);
Uri
content_url
=
Uri
.
parse
(
downApkURL
);
intent
.
setData
(
content_url
);
startActivity
(
intent
);
}
}
return
;
}
boolean
isForce
=
false
;
if
(
type
==
3
||
type
==
5
)
{
isForce
=
true
;
}
UpdateAppUtils
.
from
(
IActivity
)
.
checkBy
(
UpdateAppUtils
.
CHECK_BY_VERSION_CODE
)
//更新检测方式,默认为VersionCode
.
serverVersionCode
(
DeviceUtils
.
getVersionCode
(
mApplication
))
.
serverVersionName
(
DeviceUtils
.
getVersionName
(
mApplication
))
.
apkPath
(
downApkURL
)
.
showNotification
(
false
)
//是否显示下载进度到通知栏,默认为true
.
updateInfo
(
"發現新版本,點擊下載更新"
)
//更新日志信息 String
.
downloadBy
(
UpdateAppUtils
.
DOWNLOAD_BY_APP
)
//下载方式:app下载、手机浏览器下载(DOWNLOAD_BY_BROWSER)。默认app下载
.
isForce
(
isForce
)
//是否强制更新,默认false 强制更新情况下用户不同意更新则不能使用app
.
update
();
}
/**
* 进入应用强制用户开启 存储的权限(保存error log来文件必须拥有读写权限)
*/
...
...
@@ -138,4 +197,6 @@ public class NewMainPresenter extends BasePresenter<NewMainContract.Model, NewMa
// }
// }, mRootView.getRxPermissions(), mErrorHandler);
// }
}
main-module/src/main/java/com/gingersoft/gsa/cloud/main/mvp/ui/activity/NewMainActivity.java
View file @
6d6f9c24
...
...
@@ -130,12 +130,7 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl
@Override
public
void
onCreate
(
@Nullable
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
}
@Override
protected
void
onResume
()
{
super
.
onResume
();
// mPresenter.checkAppVersion();
mPresenter
.
checkAppVersion
();
}
@Override
...
...
@@ -240,7 +235,7 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl
// }
List
<
Function
>
functions
=
new
ArrayList
<>();
//
if (!BuildConfig.DEBUG) {
if
(!
BuildConfig
.
DEBUG
)
{
// functions.addAll(FunctionManager.getDefault().getFunctionByResModule(this, ComponentMain.main.class, ComponentMain.main.order, "order"));
functions
.
add
(
new
Function
((
long
)
150
,
0
,
5
,
"點餐"
,
0
,
0
));
functions
.
add
(
new
Function
((
long
)
138
,
150
,
5
,
"餐檯模式"
,
R
.
drawable
.
ic_dining_table_mode
,
0
));
...
...
@@ -263,11 +258,11 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl
functions
.
add
(
new
Function
((
long
)
147
,
152
,
5
,
"員工管理"
,
R
.
drawable
.
ic_staff_management_close
,
1
));
functions
.
add
(
new
Function
((
long
)
148
,
152
,
5
,
"權限管理"
,
R
.
drawable
.
ic_authority_management_close
,
1
));
functions
.
add
(
new
Function
((
long
)
149
,
152
,
5
,
"操作記錄"
,
R
.
drawable
.
ic_operation_record_close
,
1
));
//
} else {
//
functions.addAll(FunctionManager.getDefault().getFunctionByResModule(this, ComponentMain.main.class, ComponentMain.main.order, "order"));
//
functions.addAll(FunctionManager.getDefault().getFunctionByResModule(this, ComponentMain.main.class, ComponentMain.main.manager, "manager"));
//
functions.addAll(FunctionManager.getDefault().getFunctionByResModule(this, ComponentMain.main.class, ComponentMain.main.employee, "employee"));
//
}
}
else
{
functions
.
addAll
(
FunctionManager
.
getDefault
().
getFunctionByResModule
(
this
,
ComponentMain
.
main
.
class
,
ComponentMain
.
main
.
order
,
"order"
));
functions
.
addAll
(
FunctionManager
.
getDefault
().
getFunctionByResModule
(
this
,
ComponentMain
.
main
.
class
,
ComponentMain
.
main
.
manager
,
"manager"
));
functions
.
addAll
(
FunctionManager
.
getDefault
().
getFunctionByResModule
(
this
,
ComponentMain
.
main
.
class
,
ComponentMain
.
main
.
employee
,
"employee"
));
}
//將功能列表數據分組
SparseArray
<
String
>
parents
=
new
SparseArray
<>();
...
...
@@ -308,14 +303,14 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl
}
private
void
functionClick
(
String
name
,
int
status
)
{
//
switch (status){
//
case STATUS_NONACTIVATED:
// ToastUtils.show(mContext, "服務暫未開通,敬請期待
");
//
return;
//
case STATUS_TIME_LIMIT:
//
ToastUtils.show(mContext, "服務已到期,請前往續費");
//
return;
//
}
switch
(
status
){
case
STATUS_NONACTIVATED:
ToastUtils
.
show
(
mContext
,
"服務暫未開通,請前往開通
"
);
return
;
case
STATUS_TIME_LIMIT:
ToastUtils
.
show
(
mContext
,
"服務已到期,請前往續費"
);
return
;
}
if
(
name
.
equals
(
"餐檯模式"
))
{
CC
.
obtainBuilder
(
"Component.Table"
)
.
setActionName
(
"showTableActivity"
)
...
...
manager-module/src/main/java/com/gingersoft/gsa/cloud/manager/mvp/ui/fragment/TableListFragment.java
View file @
6d6f9c24
...
...
@@ -7,11 +7,13 @@ import android.os.Bundle;
import
android.os.Message
;
import
android.text.TextUtils
;
import
android.view.LayoutInflater
;
import
android.view.MotionEvent
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.widget.Button
;
import
android.widget.LinearLayout
;
import
android.widget.TextView
;
import
android.widget.Toast
;
import
com.gingersoft.gsa.cloud.base.common.bean.OrderDetail
;
import
com.gingersoft.gsa.cloud.base.common.bean.TableBean
;
...
...
@@ -26,6 +28,8 @@ import com.gingersoft.gsa.cloud.manager.mvp.ui.adapter.TableManageSectiontAdapte
import
com.gingersoft.gsa.cloud.ui.adapter.BasTextSectiontAdapter
;
import
com.gingersoft.gsa.cloud.ui.bean.mode.LoginBean
;
import
com.gingersoft.gsa.cloud.ui.bean.view.SectionHeader
;
import
com.gingersoft.gsa.cloud.ui.recylcler.event.OnRecyclerItemClickListener
;
import
com.gingersoft.gsa.cloud.ui.recylcler.event.RecyItemTouchHelperCallback
;
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.LoadingDialog
;
...
...
@@ -62,6 +66,7 @@ import androidx.annotation.NonNull;
import
androidx.annotation.Nullable
;
import
androidx.core.content.ContextCompat
;
import
androidx.recyclerview.widget.GridLayoutManager
;
import
androidx.recyclerview.widget.ItemTouchHelper
;
import
androidx.recyclerview.widget.LinearLayoutManager
;
import
androidx.recyclerview.widget.RecyclerView
;
import
butterknife.BindView
;
...
...
@@ -246,6 +251,29 @@ public class TableListFragment extends BaseFragment<TableListPresenter> implemen
}
}
});
RecyItemTouchHelperCallback
itemTouchHelperCallback
=
new
RecyItemTouchHelperCallback
(
mAdapter
);
final
ItemTouchHelper
itemTouchHelper
=
new
ItemTouchHelper
(
itemTouchHelperCallback
);
itemTouchHelper
.
attachToRecyclerView
(
mSectionLayout
.
getRecyclerView
());
mSectionLayout
.
getRecyclerView
().
addOnItemTouchListener
(
new
OnRecyclerItemClickListener
(
mSectionLayout
.
getRecyclerView
())
{
@Override
public
void
onItemClick
(
RecyclerView
.
ViewHolder
viewHolder
)
{
QMUIStickySectionAdapter
.
ViewHolder
viewHolder1
=
(
QMUIStickySectionAdapter
.
ViewHolder
)
viewHolder
;
Toast
.
makeText
(
mActivity
,
"點擊了:"
+
viewHolder1
.
getAdapterPosition
(),
Toast
.
LENGTH_SHORT
).
show
();
}
@Override
public
void
onLongClick
(
RecyclerView
.
ViewHolder
viewHolder
)
{
QMUIStickySectionAdapter
.
ViewHolder
viewHolder1
=
(
QMUIStickySectionAdapter
.
ViewHolder
)
viewHolder
;
Toast
.
makeText
(
mActivity
,
"長按:"
+
viewHolder1
.
getAdapterPosition
(),
Toast
.
LENGTH_SHORT
).
show
();
if
(
viewHolder
.
getLayoutPosition
()
!=
0
)
{
itemTouchHelper
.
startDrag
(
viewHolder
);
}
}
});
mSectionLayout
.
setAdapter
(
mAdapter
,
true
);
}
...
...
qm-qmui/src/main/java/com/qmuiteam/qmui/widget/section/QMUISection.java
View file @
6d6f9c24
...
...
@@ -132,6 +132,10 @@ public class QMUISection<H extends QMUISection.Model<H>, T extends QMUISection.M
return
mItemList
.
get
(
index
);
}
public
ArrayList
<
T
>
getItemList
()
{
return
mItemList
;
}
public
boolean
existItem
(
T
item
){
return
mItemList
.
contains
(
item
);
}
...
...
qm-qmui/src/main/java/com/qmuiteam/qmui/widget/section/QMUIStickySectionAdapter.java
View file @
6d6f9c24
...
...
@@ -33,8 +33,7 @@ import static com.qmuiteam.qmui.widget.section.QMUISection.ITEM_INDEX_LOAD_AFTER
import
static
com
.
qmuiteam
.
qmui
.
widget
.
section
.
QMUISection
.
ITEM_INDEX_LOAD_BEFORE
;
import
static
com
.
qmuiteam
.
qmui
.
widget
.
section
.
QMUISection
.
ITEM_INDEX_SECTION_HEADER
;
public
abstract
class
QMUIStickySectionAdapter
<
H
extends
QMUISection
.
Model
<
H
>,
T
extends
QMUISection
.
Model
<
T
>,
VH
extends
QMUIStickySectionAdapter
.
ViewHolder
>
extends
RecyclerView
.
Adapter
<
VH
>
{
public
abstract
class
QMUIStickySectionAdapter
<
H
extends
QMUISection
.
Model
<
H
>,
T
extends
QMUISection
.
Model
<
T
>,
VH
extends
QMUIStickySectionAdapter
.
ViewHolder
>
extends
RecyclerView
.
Adapter
<
VH
>
{
private
static
final
String
TAG
=
"StickySectionAdapter"
;
public
static
final
int
ITEM_TYPE_UNKNOWN
=
-
1
;
public
static
final
int
ITEM_TYPE_SECTION_HEADER
=
0
;
...
...
@@ -53,6 +52,10 @@ public abstract class QMUIStickySectionAdapter<
private
Callback
<
H
,
T
>
mCallback
;
private
ViewCallback
mViewCallback
;
public
List
<
QMUISection
<
H
,
T
>>
getCurrentData
()
{
return
mCurrentData
;
}
/**
* see {@link #setData(List, boolean, boolean)}
*
...
...
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/model/bean/request/AddOrderRequest.java
View file @
6d6f9c24
...
...
@@ -16,6 +16,7 @@ import java.util.Map;
public
class
AddOrderRequest
{
private
long
orderId
;
private
int
tableId
;
/**賬單小數*/
private
Double
rounding
;
/**整單折扣ID*/
...
...
@@ -30,6 +31,14 @@ public class AddOrderRequest {
this
.
orderId
=
orderId
;
}
public
int
getTableId
()
{
return
tableId
;
}
public
void
setTableId
(
int
tableId
)
{
this
.
tableId
=
tableId
;
}
public
Double
getRounding
()
{
return
rounding
;
}
...
...
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/model/bean/request/DeleteOrderRequest.java
View file @
6d6f9c24
...
...
@@ -18,6 +18,7 @@ public class DeleteOrderRequest {
private
List
<
Map
<
Byte
,
DeleteOrderRequest
.
DeleteBean
>>
mapsDelete
;
private
long
orderId
;
private
int
tableId
;
private
byte
type
;
private
long
reasonId
;
...
...
@@ -37,6 +38,14 @@ public class DeleteOrderRequest {
this
.
orderId
=
orderId
;
}
public
int
getTableId
()
{
return
tableId
;
}
public
void
setTableId
(
int
tableId
)
{
this
.
tableId
=
tableId
;
}
public
byte
getType
()
{
return
type
;
}
...
...
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/BaseOrderPresenter.java
View file @
6d6f9c24
...
...
@@ -290,6 +290,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
* 更新賬單金額
*/
protected
void
updateOrderMoneyItem
()
{
updateFoodDiscount
();
updateTableServiceAmount
();
updateOrderDiscount
();
updateOrderRounding
();
...
...
@@ -308,12 +309,12 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
if
(
orderBean
.
getDiscountValue
()
!=
0
)
{
//百分比折扣
discount
.
setDiscount_value
(
orderBean
.
getDiscountValue
());
addOrderDiscount
(
discount
,
1
);
addOrderDiscount
(
true
,
discount
,
1
);
}
if
(
orderBean
.
getDiscountAmount
()
!=
0
)
{
//金額折扣
discount
.
setAmount
(
orderBean
.
getDiscountAmount
());
addOrderDiscount
(
discount
,
1
);
addOrderDiscount
(
true
,
discount
,
1
);
}
}
}
...
...
@@ -361,7 +362,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
*
* @param discount
*/
protected
void
addOrderDiscount
(
Discount
discount
,
int
status
)
{
protected
void
addOrderDiscount
(
boolean
init
,
Discount
discount
,
int
status
)
{
double
totalMoney
=
getFoodTotal
();
for
(
BillOrderMoney
item
:
mOrderMoneyList
)
{
if
(
item
.
getType
()
==
BillOrderMoney
.
ROUNDING_TYPE
)
{
...
...
@@ -386,7 +387,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
mOrderMoneyList
.
add
(
orderMoney
);
mOrderMoneyAdapter
.
notifyDataSetChanged
();
//更新總金額
if
(
mOrderContentActivity
!=
null
)
{
if
(
!
init
&&
mOrderContentActivity
!=
null
)
{
//先更新下賬單小數,再計算總金額才不會錯
updateOrderRounding
();
//更新合計 總金額信息
...
...
@@ -394,6 +395,18 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
}
}
/**
* 更新整單折扣
*/
protected
void
updateOrderDiscount
()
{
BillOrderMoney
orderMoney
=
getBillOrderItemByType
(
BillOrderMoney
.
DISCOUNT_TYPE
);
if
(
orderMoney
!=
null
)
{
double
totalMoney
=
getFoodTotal
();
double
discountPrice
=
Discount
.
calculationDiscount
(
orderMoney
.
getDiscount
(),
totalMoney
);
orderMoney
.
setMoney
(
discountPrice
);
}
}
private
BillOrderMoney
getBillOrderItemByType
(
int
type
)
{
for
(
BillOrderMoney
orderMoney
:
mOrderMoneyList
)
{
if
(
orderMoney
.
getType
()
==
type
)
{
...
...
@@ -404,9 +417,9 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
}
/**
* 更新
折扣金額
* 更新
食品折扣
*/
protected
void
update
Order
Discount
()
{
protected
void
update
Food
Discount
()
{
boolean
updateData
=
false
;
double
totalMoney
=
0
;
...
...
@@ -471,7 +484,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
if
(
m2
!=
0
)
{
roundingMoney
=
MoneyUtil
.
sub
(
m2
,
MoneyUtil
.
get_ItemDecimals_money
(
m1
));
}
if
(
roundingMoney
!=
0.0
0
)
{
if
(
roundingMoney
!=
0.0
)
{
BillOrderMoney
roundingItem
=
new
BillOrderMoney
();
roundingItem
.
setMoney
(
MoneyUtil
.
getDecimalMoney
(
roundingMoney
,
MoneyUtil
.
ItemDecimals
));
roundingItem
.
setTitle
(
"賬單小數"
);
...
...
@@ -720,6 +733,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
AddOrderRequest
request
=
new
AddOrderRequest
();
request
.
setMaps
(
orderDetailBeanToAddFoodRequest
(
foodList
));
request
.
setOrderId
(
MyOrderManage
.
getInstance
().
getOrderId
());
request
.
setTableId
(
OpenTableManage
.
getDefault
().
getTableBean
().
getId
());
Double
rounding
=
getRounding
();
request
.
setRounding
(
rounding
!=
null
?
rounding
:
0
);
Discount
orderDiscount
=
getNesOrderDiscount
();
...
...
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/MealStandPresenter.java
View file @
6d6f9c24
...
...
@@ -1642,6 +1642,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
DeleteOrderRequest
.
Request
request
=
new
DeleteOrderRequest
.
Request
();
request
.
setMapsDelete
(
mapsDelete
);
request
.
setOrderId
(
orderId
);
request
.
setTableId
(
OpenTableManage
.
getDefault
().
getTableBean
().
getId
());
request
.
setType
(
type
);
request
.
setReasonId
(
reasonId
);
return
request
;
...
...
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/OrderContentPresenter.java
View file @
6d6f9c24
...
...
@@ -106,7 +106,6 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
public
OrderContentPresenter
(
OrderContentContract
.
Model
model
,
OrderContentContract
.
View
rootView
)
{
super
(
model
,
rootView
);
this
.
IActivity
=
(
OrderContentActivity
)
rootView
;
}
@Override
...
...
@@ -557,21 +556,14 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
private
void
transferFood
(
TableBean
.
DataBean
dataBean
)
{
//删除食品前先保存一份
List
<
OrderDetail
>
recodeOrderFoods
=
new
ArrayList
<>();
recodeOrderFoods
.
addAll
(
getOrderFoodLists
());
String
ids
=
getSelectedOldFoodIds
();
if
(
TextUtils
.
isEmpty
(
ids
))
{
return
;
}
//删除已选中食品 重新计算账单小数 折扣
removeSelectedFoods
();
updateOrderMoneyItem
();
RequestBody
requestBody
=
new
FormBody
.
Builder
()
.
add
(
"id"
,
String
.
valueOf
(
dataBean
.
getId
()))
.
add
(
"tableId"
,
String
.
valueOf
(
OpenTableManage
.
getDefault
().
getTableBean
().
getId
()))
.
add
(
"targetId"
,
String
.
valueOf
(
dataBean
.
getId
()))
.
add
(
"orderId"
,
String
.
valueOf
(
MyOrderManage
.
getInstance
().
getOrderId
()))
.
add
(
"orderDetailsIds"
,
ids
)
.
build
();
...
...
@@ -585,25 +577,10 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
.
compose
(
RxLifecycleUtils
.
bindToLifecycle
(
mRootView
))
.
subscribe
(
new
ErrorHandleSubscriber
<
BaseRespose
>(
mErrorHandler
)
{
private
void
restoreOrderDetails
()
{
getOrderFoodLists
().
clear
();
getOrderFoodLists
().
addAll
(
recodeOrderFoods
);
recodeOrderFoods
.
clear
();
mSelectMealAdapter
.
setIndex
();
mSelectMealAdapter
.
notifyDataSetChanged
();
}
@Override
public
void
onError
(
Throwable
t
)
{
super
.
onError
(
t
);
restoreOrderDetails
();
}
@Override
public
void
onNext
(
@NonNull
BaseRespose
info
)
{
if
(
info
==
null
)
{
restoreOrderDetails
();
mRootView
.
showMessage
(
"轉移失敗"
);
return
;
}
...
...
@@ -626,6 +603,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
mSelectMealAdapter
.
notifyDataSetChanged
();
mSelectMealAdapter
.
setIndex
();
updateOrderMoneyItem
();
IActivity
.
initOrderDetail
();
IActivity
.
backPressed
();
}
else
{
...
...
@@ -641,7 +619,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
mDiscountDialog
.
setOnClickListener
(
new
DiscountDialog
.
Builder
.
OnClickListener
()
{
@Override
public
void
onItemClick
(
Discount
item
,
int
position
)
{
addOrderDiscount
(
item
,
0
);
addOrderDiscount
(
false
,
item
,
0
);
updateOrderMoneyItem
();
}
});
...
...
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/TablePresenter.java
View file @
6d6f9c24
...
...
@@ -157,10 +157,10 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
Function
function
=
(
Function
)
data
;
switch
(
function
.
getStatus
())
{
case
STATUS_NONACTIVATED:
mRootView
.
showMessage
(
"服務暫未開通,敬請期待"
);
mRootView
.
showMessage
(
"服務暫未開通,敬請期待"
);
return
;
case
STATUS_TIME_LIMIT:
mRootView
.
showMessage
(
"服務已到期,請前往續費"
);
mRootView
.
showMessage
(
"服務已到期,請前往續費"
);
return
;
}
if
(
function
.
getResUrl
().
equals
(
ComponentTable
.
table
.
bottom
[
0
].
getKeyRes
()))
{
...
...
@@ -192,9 +192,9 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
}
public
void
initBottomFunctionItem
()
{
List
<
Function
>
functions
=
FunctionManager
.
getDefault
().
getFunctionByResModule
(
IActivity
,
ComponentTable
.
table
.
class
,
ComponentTable
.
table
.
bottom
,
"bottom"
);
List
<
Function
>
functions
=
FunctionManager
.
getDefault
().
getFunctionByResModule
(
IActivity
,
ComponentTable
.
table
.
class
,
ComponentTable
.
table
.
bottom
,
"bottom"
);
for
(
int
i
=
0
;
i
<
functions
.
size
();
i
++)
{
if
(
functions
.
get
(
i
).
getParentId
()
==
0
)
{
if
(
functions
.
get
(
i
).
getParentId
()
==
0
)
{
functions
.
remove
(
i
);
}
}
...
...
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/activity/MealStandActivity.java
View file @
6d6f9c24
...
...
@@ -35,6 +35,7 @@ import androidx.recyclerview.widget.RecyclerView;
import
androidx.viewpager.widget.ViewPager
;
import
com.gingersoft.gsa.cloud.base.application.GsaCloudApplication
;
import
com.gingersoft.gsa.cloud.base.common.bean.OrderBean
;
import
com.gingersoft.gsa.cloud.base.common.bean.TableBean
;
import
com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage
;
import
com.gingersoft.gsa.cloud.base.common.bean.mealManage.OpenTableManage
;
...
...
@@ -46,6 +47,7 @@ import com.gingersoft.gsa.cloud.database.utils.FoodComboDaoUtils;
import
com.gingersoft.gsa.cloud.database.utils.FoodDaoUtils
;
import
com.gingersoft.gsa.cloud.database.utils.FoodModifierDaoUtils
;
import
com.gingersoft.gsa.cloud.print.PrinterUtils
;
import
com.gingersoft.gsa.cloud.print.bean.OrderDetails
;
import
com.gingersoft.gsa.cloud.table.R
;
import
com.gingersoft.gsa.cloud.table.R2
;
import
com.gingersoft.gsa.cloud.constans.GoldConstants
;
...
...
@@ -268,6 +270,10 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
protected
void
onCreate
(
@Nullable
Bundle
savedInstanceState
)
{
EventBus
.
getDefault
().
registerSticky
(
this
);
super
.
onCreate
(
savedInstanceState
);
OrderBean
order
=
MyOrderManage
.
getInstance
().
getOrderBean
();
if
(
order
!=
null
)
{
ArmsUtils
.
snackbarText
(
"訂單ID:"
+
order
.
getId
());
}
}
@Override
...
...
@@ -617,6 +623,10 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
case
3
:
case
4
:
case
5
:
OrderBean
order
=
MyOrderManage
.
getInstance
().
getOrderBean
();
if
(
order
!=
null
)
{
ArmsUtils
.
snackbarText
(
"訂單ID:"
+
order
.
getId
());
}
mPresenter
.
changeNumber
(
i
);
break
;
case
99
:
...
...
@@ -642,7 +652,7 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
break
;
}
}
else
if
(
id
==
R
.
id
.
iv_fine_back
)
{
showViewModeVisibility
(
MealConstant
.
combo_ViewMode
,
MealConstant
.
modifier_ViewMode
);
showViewModeVisibility
(
MealConstant
.
combo_ViewMode
,
MealConstant
.
modifier_ViewMode
);
}
}
...
...
table-module/src/main/res/layout/meal_activity_soldout_ctrl.xml
View file @
6d6f9c24
...
...
@@ -13,7 +13,7 @@
<RelativeLayout
android:layout_width=
"match_parent"
android:layout_height=
"
30dp
"
android:layout_height=
"
@dimen/dp_30
"
android:background=
"@color/theme_color"
android:orientation=
"horizontal"
>
...
...
@@ -21,8 +21,8 @@
android:id=
"@+id/tv_sold_hmmc"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"
20dp
"
android:layout_marginTop=
"
5dp
"
android:layout_marginLeft=
"
@dimen/dp_20
"
android:layout_marginTop=
"
@dimen/dp_5
"
android:text=
"項目名稱"
android:textAppearance=
"?android:attr/textAppearanceMedium"
android:textColor=
"@color/theme_white_color"
/>
...
...
@@ -32,8 +32,8 @@
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_alignParentRight=
"true"
android:layout_marginTop=
"
5dp
"
android:layout_marginRight=
"
20dp
"
android:layout_marginTop=
"
@dimen/dp_5
"
android:layout_marginRight=
"
@dimen/dp_20
"
android:text=
"數量"
android:textAppearance=
"?android:attr/textAppearanceMedium"
android:textColor=
"@color/theme_white_color"
/>
...
...
@@ -42,7 +42,7 @@
<LinearLayout
android:id=
"@+id/ll_meals_main"
android:layout_width=
"match_parent"
android:layout_height=
"
wrap_content
"
android:layout_height=
"
0dp
"
android:layout_weight=
"1"
>
<androidx.recyclerview.widget.RecyclerView
...
...
@@ -60,7 +60,7 @@
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_below=
"@+id/ll_meals"
android:layout_marginBottom=
"
35dp
"
android:layout_marginBottom=
"
@dimen/dp_35
"
android:orientation=
"vertical"
>
<LinearLayout
...
...
updateApk/src/main/AndroidManifest.xml
View file @
6d6f9c24
...
...
@@ -10,7 +10,6 @@
<application
android:allowBackup=
"true"
android:label=
"@string/app_name"
android:supportsRtl=
"true"
android:theme=
"@style/AppTheme"
>
...
...
@@ -21,7 +20,7 @@
<service
android:name=
"service.UpdateAppService"
/>
<provider
android:name=
"android
.support.v4
.content.FileProvider"
android:name=
"android
x.core
.content.FileProvider"
android:authorities=
"${applicationId}.fileprovider"
android:exported=
"false"
android:grantUriPermissions=
"true"
>
...
...
updateApk/src/main/java/activity/UpdateAppActivity.java
View file @
6d6f9c24
...
...
@@ -21,13 +21,13 @@ import androidx.annotation.Nullable;
import
androidx.appcompat.app.AppCompatActivity
;
import
androidx.core.app.ActivityCompat
;
import
androidx.core.content.ContextCompat
;
import
model.UpdateBean
;
import
service.UpdateAppService
;
import
teprinciple.updateapputils.R
;
import
util.DownloadAppUtils
;
import
util.UpdateAppUtils
;
import
view.ConfirmDialog
;
import
view.DownloadDialog
;
/**
* 作者:ELEGANT_BIN
...
...
updateApk/src/main/java/service/UpdateAppService.java
View file @
6d6f9c24
...
...
@@ -7,7 +7,6 @@ import android.content.IntentFilter;
import
android.os.IBinder
;
import
androidx.annotation.Nullable
;
import
util.UpdateAppReceiver
;
/**
...
...
updateApk/src/main/java/util/UpdateAppReceiver.java
View file @
6d6f9c24
...
...
@@ -8,11 +8,9 @@ import android.content.Context;
import
android.content.Intent
;
import
android.net.Uri
;
import
android.os.Build
;
import
androidx.core.content.FileProvider
;
import
java.io.File
;
import
androidx.core.content.FileProvider
;
import
teprinciple.updateapputils.R
;
/**
...
...
@@ -97,7 +95,7 @@ public class UpdateAppReceiver extends BroadcastReceiver {
}
builder
.
setContentTitle
(
"正在下載 "
+
title
);
builder
.
setSmallIcon
(
R
.
drawable
.
logo
);
builder
.
setSmallIcon
(
R
.
mipmap
.
ic_launcher
);
builder
.
setProgress
(
100
,
progress
,
false
);
Notification
notification
=
null
;
...
...
updateApk/src/main/res/drawable/logo.png
deleted
100644 → 0
View file @
827ae9eb
11 KB
updateApk/src/main/res/values/color.xml
View file @
6d6f9c24
<?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=
"colorPrimary"
>
#398BED
</color>
<color
name=
"colorPrimaryDark"
>
#398BED
</color>
<color
name=
"colorAccent"
>
#2abbff
</color>
<color
name=
"text_blue"
>
#0076FF
</color>
<color
name=
"text_black"
>
#333333
</color>
</resources>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment