Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
YDL-Component-Medical
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
杨凯
YDL-Component-Medical
Commits
0b9cc604
Commit
0b9cc604
authored
Jun 21, 2021
by
YKai
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:增加擅长人群标签,修改cate_id字段数据类型,升级相关组件
parent
257a75dc
Hide whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
865 additions
and
584 deletions
+865
-584
DemoGlobalConfig.java
app/src/main/java/com/ydl/component/base/DemoGlobalConfig.java
+2
-2
config.gradle
config.gradle
+12
-12
ConfideHomeApi.kt
m-confide/src/main/java/com/ydl/confide/home/http/ConfideHomeApi.kt
+2
-5
ConfideHomeHttpImpl.kt
m-confide/src/main/java/com/ydl/confide/home/http/ConfideHomeHttpImpl.kt
+1
-1
ExpertSearchActivity.kt
m-consultant/src/main/java/com/yidianling/consultant/ExpertSearchActivity.kt
+165
-78
ExpertSearchFragment.kt
m-consultant/src/main/java/com/yidianling/consultant/ExpertSearchFragment.kt
+35
-18
ExpertSearchPresenter.kt
m-consultant/src/main/java/com/yidianling/consultant/ExpertSearchPresenter.kt
+10
-7
ConsultBIConstants.kt
m-consultant/src/main/java/com/yidianling/consultant/constants/ConsultBIConstants.kt
+1
-0
SearchApi.kt
m-consultant/src/main/java/com/yidianling/consultant/model/SearchApi.kt
+1
-2
AllFilter.kt
m-consultant/src/main/java/com/yidianling/consultant/model/bean/AllFilter.kt
+3
-1
CateItem.kt
m-consultant/src/main/java/com/yidianling/consultant/model/bean/CateItem.kt
+23
-17
Filters.kt
m-consultant/src/main/java/com/yidianling/consultant/model/bean/Filters.kt
+49
-35
HeadData.kt
m-consultant/src/main/java/com/yidianling/consultant/model/bean/HeadData.kt
+26
-25
SpecialityCrowdBean.kt
m-consultant/src/main/java/com/yidianling/consultant/model/bean/SpecialityCrowdBean.kt
+13
-0
ConsultantServiceImp.kt
m-consultant/src/main/java/com/yidianling/consultant/modular/ConsultantServiceImp.kt
+3
-3
FilterPopupWindow.kt
m-consultant/src/main/java/com/yidianling/consultant/ui/view/FilterPopupWindow.kt
+209
-105
IConsultantService.kt
m-consultant/src/main/modular_api/com/yidianling/consultant/api/IConsultantService.kt
+3
-3
ic_crowd_close.png
m-consultant/src/main/res/drawable-xxxhdpi/ic_crowd_close.png
+0
-0
ic_crowd_open.png
m-consultant/src/main/res/drawable-xxxhdpi/ic_crowd_open.png
+0
-0
consultant_layout_search_content.xml
m-consultant/src/main/res/layout/consultant_layout_search_content.xml
+88
-94
consultant_ui_filter_popup.xml
m-consultant/src/main/res/layout/consultant_ui_filter_popup.xml
+208
-165
DynamicIn.kt
m-dynamic/src/main/java/com/yidianling/dynamic/router/DynamicIn.kt
+8
-8
HomeBaseHttp.kt
m-home/src/main/java/com/yidianling/home/http/HomeBaseHttp.kt
+1
-1
HomeBasePagerApi.kt
m-home/src/main/java/com/yidianling/home/http/HomeBasePagerApi.kt
+1
-1
ChatFragment.kt
m-im/src/main/java/com/yidianling/im/ui/page/fragment/ChatFragment.kt
+1
-1
No files found.
app/src/main/java/com/ydl/component/base/DemoGlobalConfig.java
View file @
0b9cc604
...
...
@@ -20,8 +20,8 @@ import java.util.List;
public
final
class
DemoGlobalConfig
implements
IConfigModule
{
String
APP_DOMAIN
=
"https://api.github.com/"
;
// public static String appEnv = YDLConstants.ENV_AUTO_TEST;
//
public static String appEnv = YDLConstants.ENV_TEST;
public
static
String
appEnv
=
YDLConstants
.
ENV_PROD
;
public
static
String
appEnv
=
YDLConstants
.
ENV_TEST
;
//
public static String appEnv = YDLConstants.ENV_PROD;
@Override
public
void
injectAppLifecycle
(
@NotNull
Context
context
,
@NotNull
List
<
IAppLifecycles
>
lifecycles
)
{
...
...
config.gradle
View file @
0b9cc604
...
...
@@ -6,12 +6,12 @@ ext {
// -------------- 业务模块 --------------
//第三步 若干
"m-confide"
:
"0.0.49.09"
,
"m-consultant"
:
"0.0.59.
79
"
,
"m-consultant"
:
"0.0.59.
81
"
,
"m-fm"
:
"0.0.30.03"
,
"m-user"
:
"0.0.61.36"
,
"m-home"
:
"0.0.22.6
4
"
,
"m-im"
:
"0.0.19.2
2
"
,
"m-dynamic"
:
"0.0.7.2
2
"
,
"m-home"
:
"0.0.22.6
5
"
,
"m-im"
:
"0.0.19.2
3
"
,
"m-dynamic"
:
"0.0.7.2
4
"
,
"m-article"
:
"0.0.0.8"
,
"m-muse"
:
"0.0.28.22"
,
...
...
@@ -21,7 +21,7 @@ ext {
//-------------- 业务模块 API 层 --------------
"m-audioim-api"
:
"0.0.6"
,
"m-confide-api"
:
"0.0.2.11"
,
"m-consultant-api"
:
"0.0.5.6
2
"
,
"m-consultant-api"
:
"0.0.5.6
3
"
,
"m-course-api"
:
"0.0.3.6"
,
"m-fm-api"
:
"0.0.3"
,
"m-muse-api"
:
"0.0.1"
,
...
...
@@ -89,12 +89,12 @@ ext {
//第三步 若干
"m-confide"
:
"0.0.49.09"
,
"m-consultant"
:
"0.0.59.
79
"
,
"m-consultant"
:
"0.0.59.
81
"
,
"m-fm"
:
"0.0.30.01"
,
"m-user"
:
"0.0.61.36"
,
"m-home"
:
"0.0.22.6
4
"
,
"m-im"
:
"0.0.19.2
2
"
,
"m-dynamic"
:
"0.0.7.2
2
"
,
"m-home"
:
"0.0.22.6
5
"
,
"m-im"
:
"0.0.19.2
3
"
,
"m-dynamic"
:
"0.0.7.2
4
"
,
"m-article"
:
"0.0.0.8"
,
"m-muse"
:
"0.0.20.7"
,
...
...
@@ -102,8 +102,8 @@ ext {
"m-course"
:
"0.0.42.62"
,
//-------------- 业务模块 API 层 --------------
"m-audioim-api"
:
"0.0.6"
,
"m-confide-api"
:
"0.0.2.1"
,
"m-consultant-api"
:
"0.0.5.6
2
"
,
"m-confide-api"
:
"0.0.2.1
1
"
,
"m-consultant-api"
:
"0.0.5.6
3
"
,
"m-course-api"
:
"0.0.3.6"
,
"m-fm-api"
:
"0.0.3"
,
"m-muse-api"
:
"0.0.1"
,
...
...
@@ -133,7 +133,7 @@ ext {
dependencies
=
[
//support
"appcompat-v7"
:
'androidx.appcompat:appcompat:1.2.0'
,
"design"
:
'com.google.android.material:material:1.
0
.0'
,
"design"
:
'com.google.android.material:material:1.
3
.0'
,
"support-v4"
:
'androidx.legacy:legacy-support-v4:1.0.0'
,
"cardview-v7"
:
'androidx.cardview:cardview:1.0.0'
,
"annotations"
:
"androidx.annotation:annotation:1.0.0"
,
...
...
m-confide/src/main/java/com/ydl/confide/home/http/ConfideHomeApi.kt
View file @
0b9cc604
...
...
@@ -6,10 +6,7 @@ import com.ydl.ydlcommon.base.config.YDL_DOMAIN
import
com.ydl.ydlcommon.base.config.YDL_DOMAIN_JAVA
import
com.ydl.ydlcommon.data.http.BaseAPIResponse
import
io.reactivex.Observable
import
retrofit2.http.GET
import
retrofit2.http.Headers
import
retrofit2.http.QueryMap
import
retrofit2.http.Url
import
retrofit2.http.*
/**
* @author yuanwai
...
...
@@ -22,7 +19,7 @@ interface ConfideHomeApi{
//倾诉首页
@Headers
(
YDL_DOMAIN
+
YDL_DOMAIN_JAVA
,
"Content-Type:application/json"
)
@GET
fun
confideHome
(
@Url
url
:
String
):
Observable
<
BaseAPIResponse
<
MutableList
<
ConfideHomeDataBean
>>>
fun
confideHome
(
@Url
url
:
String
,
@Query
(
"cateSource"
)
cateSource
:
Int
):
Observable
<
BaseAPIResponse
<
MutableList
<
ConfideHomeDataBean
>>>
//每日精选 换一批
@Headers
(
YDL_DOMAIN
+
YDL_DOMAIN_JAVA
,
"Content-Type:application/json"
)
...
...
m-confide/src/main/java/com/ydl/confide/home/http/ConfideHomeHttpImpl.kt
View file @
0b9cc604
...
...
@@ -35,7 +35,7 @@ class ConfideHomeHttpImpl private constructor(): IConfideHomeHttp{
override
fun
confideHomeRequest
():
Observable
<
BaseAPIResponse
<
MutableList
<
ConfideHomeDataBean
>>>
{
return
RxUtils
.
mapObservable
(
ConfideHomeParam
(
0
))
.
flatMap
{
confideHomeApi
.
confideHome
(
HttpConfig
.
JAVA_BASE_URL
+
"auth/listen/home"
)
confideHomeApi
.
confideHome
(
HttpConfig
.
JAVA_BASE_URL
+
"auth/listen/home"
,
2
)
}
}
...
...
m-consultant/src/main/java/com/yidianling/consultant/ExpertSearchActivity.kt
View file @
0b9cc604
...
...
@@ -76,7 +76,13 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
YDLImageCacheManager
.
showImage
(
ExpertSearchActivity
@
this
,
url
,
imgView
,
ops
)
}
override
fun
showImage
(
url
:
String
?,
imgView
:
ImageView
,
width
:
Int
,
heigh
:
Int
,
ops
:
SimpleImageOpConfiger
)
{
override
fun
showImage
(
url
:
String
?,
imgView
:
ImageView
,
width
:
Int
,
heigh
:
Int
,
ops
:
SimpleImageOpConfiger
)
{
YDLImageCacheManager
.
showImage
(
ExpertSearchActivity
@
this
,
url
,
imgView
,
width
,
heigh
,
ops
)
}
...
...
@@ -113,7 +119,12 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
const
val
FROM_ONLINE_EXPERT
=
2
const
val
PAGE_SIZE
=
15
fun
newIntent
(
activity
:
Activity
,
category
:
Int
,
showType
:
Int
,
isInitShowHot
:
Boolean
):
Intent
{
fun
newIntent
(
activity
:
Activity
,
category
:
String
,
showType
:
Int
,
isInitShowHot
:
Boolean
):
Intent
{
val
intent
=
Intent
(
activity
,
ExpertSearchActivity
::
class
.
java
)
intent
.
putExtra
(
EXTRA_CATEGORY
,
category
)
intent
.
putExtra
(
EXTRA_SHOW_TYPE
,
showType
)
...
...
@@ -121,13 +132,13 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
return
intent
}
fun
start
(
context
:
Context
,
category
:
Int
)
{
fun
start
(
context
:
Context
,
category
:
String
)
{
val
intent
=
Intent
(
context
,
ExpertSearchActivity
::
class
.
java
)
intent
.
putExtra
(
EXTRA_CATEGORY
,
category
)
context
.
startActivity
(
intent
)
}
fun
start
(
context
:
Context
,
category
:
Int
,
categoryName
:
String
,
showType
:
Int
)
{
fun
start
(
context
:
Context
,
category
:
String
,
categoryName
:
String
,
showType
:
Int
)
{
val
intent
=
Intent
(
context
,
ExpertSearchActivity
::
class
.
java
)
intent
.
putExtra
(
EXTRA_CATEGORY
,
category
)
intent
.
putExtra
(
EXTRA_CATEGORY_NAME
,
categoryName
)
...
...
@@ -135,13 +146,14 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
context
.
startActivity
(
intent
)
}
@JvmName
(
"start1"
)
fun
start
(
context
:
Context
,
searchWord
:
String
?)
{
val
intent
=
Intent
(
context
,
ExpertSearchActivity
::
class
.
java
)
intent
.
putExtra
(
EXTRA_SEARCH_WORD
,
searchWord
)
context
.
startActivity
(
intent
)
}
fun
start
(
context
:
Context
,
category
:
Int
,
showType
:
Int
,
isFromSplash
:
Boolean
)
{
fun
start
(
context
:
Context
,
category
:
String
,
showType
:
Int
,
isFromSplash
:
Boolean
)
{
val
intent
=
Intent
(
context
,
ExpertSearchActivity
::
class
.
java
)
intent
.
putExtra
(
EXTRA_CATEGORY
,
category
)
intent
.
putExtra
(
EXTRA_SHOW_TYPE
,
showType
)
...
...
@@ -168,7 +180,7 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
private
val
doctorList
=
ArrayList
<
DoctorServiceItem
>()
private
val
serviceList
=
ArrayList
<
DoctorServiceItem
>()
private
var
hasMore
=
true
private
var
initCategory
:
Int
=
0
private
var
initCategory
=
"0"
private
var
initShowType
:
Int
=
1
private
lateinit
var
doctorAdapter
:
ExpertSearchAdapter
private
lateinit
var
onScrollListener
:
EndlessRecyclerViewScrollListener
...
...
@@ -200,7 +212,8 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
srlContainer
.
setProgressViewOffset
(
false
,
0
,
200
)
srlContainer
.
setOnRefreshListener
(
this
)
recommendListView
.
addViewPagerScrollStateListener
(
object
:
RecommendListView
.
ViewPagerScrollStateCallback
{
recommendListView
.
addViewPagerScrollStateListener
(
object
:
RecommendListView
.
ViewPagerScrollStateCallback
{
override
fun
viewPagerScroll
(
isScrolling
:
Boolean
)
{
//如果viewpager正在滚动,则禁止下拉刷新
srlContainer
.
isEnabled
=
!
isScrolling
...
...
@@ -248,7 +261,11 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
}
}
else
if
(
newState
==
RecyclerView
.
SCROLL_STATE_IDLE
)
{
//没有滚动
ConsultAssistantDialogUtils
.
INSTANCE
.
fitRequest
(
this
@ExpertSearchActivity
,
"doctor_list"
,
true
)
ConsultAssistantDialogUtils
.
INSTANCE
.
fitRequest
(
this
@ExpertSearchActivity
,
"doctor_list"
,
true
)
if
(
sIsScrolling
)
{
if
(!
this
@ExpertSearchActivity
.
isFinishing
)
{
// GlideApp.with(this@ExpertSearchActivity).resumeRequests()
...
...
@@ -365,7 +382,7 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
if
(
null
!=
intent
&&
intent
.
hasExtra
(
"routerParam"
))
{
val
params
=
intent
.
getStringExtra
(
"routerParam"
)
val
paramsJson
=
JSONObject
(
params
)
initCategory
=
paramsJson
.
getString
(
"cateId"
)
.
toInt
()
initCategory
=
paramsJson
.
getString
(
"cateId"
)
keyWord
=
paramsJson
.
getString
(
"cateTitle"
)
initShowType
=
paramsJson
.
getString
(
"showType"
).
toInt
()
}
...
...
@@ -373,7 +390,7 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
private
fun
initData
(
mIntent
:
Intent
)
{
fromPageType
=
mIntent
.
getIntExtra
(
EXTRA_FROM_PAGE
,
-
1
)
initCategory
=
mIntent
.
get
IntExtra
(
EXTRA_CATEGORY
,
0
)
initCategory
=
mIntent
.
get
StringExtra
(
EXTRA_CATEGORY
)
initShowType
=
mIntent
.
getIntExtra
(
EXTRA_SHOW_TYPE
,
0
)
tv_search_content
.
text
=
mIntent
.
getStringExtra
(
EXTRA_SEARCH_WORD
)
keyWord
=
mIntent
.
getStringExtra
(
EXTRA_CATEGORY_NAME
)
?:
""
...
...
@@ -391,7 +408,7 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
v_loading
.
visibility
=
View
.
VISIBLE
v_loading
.
setViewType
(
LogoLoadingView
.
TYPE_LOADING
,
null
)
doctorAdapter
.
setEntrance
(
1
)
doctorAdapter
.
setEntrance
(
1
)
}
override
fun
onNewIntent
(
intent
:
Intent
?)
{
...
...
@@ -426,7 +443,7 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
override
fun
onHeadFetched
(
headData
:
HeadData
?)
{
//头部数据获取到后初始化筛选数据
this
.
headData
=
headData
if
(
initCategory
!=
0
)
{
if
(
initCategory
!=
"0"
)
{
if
(
headData
?.
cates
!=
null
)
{
for
(
cate
in
headData
.
cates
)
{
if
(
cate
.
cateId
==
initCategory
)
{
...
...
@@ -444,7 +461,7 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
}
}
}
initCategory
=
0
initCategory
=
"0"
}
else
{
allFilter
.
categories
.
clear
()
allFilter
.
categories
.
add
(
headData
?.
cates
?.
get
(
0
)
?:
CateItem
())
...
...
@@ -514,7 +531,7 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
for
(
bean
in
headData
?.
cates
!!
)
{
if
(
TextUtils
.
equals
(
hotData
.
id
,
bean
.
cateId
.
toString
()))
{
if
(
isAdd
)
{
if
(
allFilter
.
categories
.
size
==
1
&&
allFilter
.
categories
[
0
].
cateId
==
0
)
{
if
(
allFilter
.
categories
.
size
==
1
&&
allFilter
.
categories
[
0
].
cateId
==
"0"
)
{
allFilter
.
categories
.
clear
()
}
allFilter
.
categories
.
add
(
bean
)
...
...
@@ -712,7 +729,11 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
bean
.
key
=
hotData
.
id
bean
.
value
=
hotData
.
value
for
(
headBean
in
headData
!!
.
region
)
{
if
(
TextUtils
.
equals
(
headBean
.
key
!!
.
substring
(
0
,
2
),
bean
.
key
!!
.
substring
(
0
,
2
)))
{
if
(
TextUtils
.
equals
(
headBean
.
key
!!
.
substring
(
0
,
2
),
bean
.
key
!!
.
substring
(
0
,
2
)
)
)
{
allFilter
.
region
=
headBean
break
}
...
...
@@ -764,7 +785,11 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
}
//服务列表数据获取到后的回调
override
fun
onServiceListFetched
(
data
:
MutableList
<
DoctorServiceItem
>,
page
:
Int
,
totalPage
:
Int
)
{
override
fun
onServiceListFetched
(
data
:
MutableList
<
DoctorServiceItem
>,
page
:
Int
,
totalPage
:
Int
)
{
LogUtil
.
d
(
"onServiceListFetched"
)
// if (rvExperts.adapter != serviceAdapter) {
// rvExperts.adapter = serviceAdapter
...
...
@@ -802,7 +827,11 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
}
//专家列表数据获取到后的回调
override
fun
onDoctorListFetched
(
data
:
MutableList
<
DoctorServiceItem
>,
page
:
Int
,
totalPage
:
Int
)
{
override
fun
onDoctorListFetched
(
data
:
MutableList
<
DoctorServiceItem
>,
page
:
Int
,
totalPage
:
Int
)
{
LogUtil
.
d
(
"onDoctorListFetched"
)
if
(
rvExperts
.
adapter
!=
doctorAdapter
)
{
rvExperts
.
adapter
=
doctorAdapter
...
...
@@ -845,7 +874,10 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
isRecommend
=
false
if
(
curPage
==
1
)
{
v_loading
.
setViewType
(
LogoLoadingView
.
TYPE_NET_LOSS
,
getString
(
R
.
string
.
consultant_reload_hint
))
v_loading
.
setViewType
(
LogoLoadingView
.
TYPE_NET_LOSS
,
getString
(
R
.
string
.
consultant_reload_hint
)
)
v_loading
.
visibility
=
View
.
VISIBLE
ll_network_error
.
visibility
=
View
.
GONE
...
...
@@ -876,7 +908,10 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
if
(
msg
!=
null
)
{
ToastUtil
.
toastShort
(
msg
)
}
v_loading
.
setViewType
(
LogoLoadingView
.
TYPE_NET_LOSS
,
getString
(
R
.
string
.
consultant_reload_hint
))
v_loading
.
setViewType
(
LogoLoadingView
.
TYPE_NET_LOSS
,
getString
(
R
.
string
.
consultant_reload_hint
)
)
v_loading
.
visibility
=
View
.
VISIBLE
ll_network_error
.
visibility
=
View
.
GONE
...
...
@@ -976,6 +1011,9 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
tempFilter
.
ages
.
addAll
(
allFilter
.
ages
)
tempFilter
.
enquiries
.
clear
()
tempFilter
.
enquiries
.
addAll
(
allFilter
.
enquiries
)
// 擅长人群添加数据
tempFilter
.
specialityCrowd
.
clear
()
tempFilter
.
specialityCrowd
.
addAll
(
allFilter
.
specialityCrowd
)
tempFilter
.
others
.
clear
()
tempFilter
.
others
.
addAll
(
allFilter
.
others
)
tempFilter
.
priceRanges
=
allFilter
.
priceRanges
...
...
@@ -986,7 +1024,10 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
filterPopupWindow
.
setOnDismissListener
{
// viewDim.visibility = View.INVISIBLE
viewDim_filter
.
visibility
=
View
.
GONE
if
(
allFilter
.
others
.
size
+
allFilter
.
enquiries
.
size
+
allFilter
.
ages
.
size
+
allFilter
.
title
.
size
>
0
||
!
TextUtils
.
isEmpty
(
allFilter
.
priceRanges
?.
minPrice
)
||
!
TextUtils
.
isEmpty
(
allFilter
.
priceRanges
?.
maxPrice
))
{
if
(
allFilter
.
others
.
size
+
allFilter
.
enquiries
.
size
+
allFilter
.
ages
.
size
+
allFilter
.
title
.
size
>
0
||
!
TextUtils
.
isEmpty
(
allFilter
.
priceRanges
?.
minPrice
)
||
!
TextUtils
.
isEmpty
(
allFilter
.
priceRanges
?.
maxPrice
)
)
{
updateFilterTextViewStatus
(
tvFilter
,
FILTER_STATUS_FILTERED
)
}
else
{
updateFilterTextViewStatus
(
tvFilter
,
FILTER_STATUS_NORMAL
)
...
...
@@ -1009,8 +1050,15 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
//筛选确认回调
override
fun
onFilterConfirmed
()
{
updateFilterTextViewStatus
(
tvFilter
,
FILTER_STATUS_OPEN
)
LogUtil
.
d
(
"filter: "
+
tempFilter
.
showType
.
value
+
","
+
tempFilter
.
enquiries
.
map
{
it
.
value
}.
joinToString
(
","
)
+
","
+
tempFilter
.
ages
.
map
{
it
.
value
}.
joinToString
(
","
)
+
","
+
tempFilter
.
others
.
map
{
it
.
value
}.
joinToString
(
","
))
props1
.
put
(
"filtrate_second"
,
tempFilter
.
showType
.
value
+
","
+
tempFilter
.
enquiries
.
map
{
it
.
value
}.
joinToString
(
","
)
+
","
+
tempFilter
.
ages
.
map
{
it
.
value
}.
joinToString
(
","
)
+
","
+
tempFilter
.
others
.
map
{
it
.
value
}.
joinToString
(
","
))
LogUtil
.
d
(
"filter: "
+
tempFilter
.
showType
.
value
+
","
+
tempFilter
.
enquiries
.
map
{
it
.
value
}
.
joinToString
(
","
)
+
","
+
tempFilter
.
ages
.
map
{
it
.
value
}
.
joinToString
(
","
)
+
","
+
tempFilter
.
others
.
map
{
it
.
value
}.
joinToString
(
","
))
props1
.
put
(
"filtrate_second"
,
tempFilter
.
showType
.
value
+
","
+
tempFilter
.
enquiries
.
map
{
it
.
value
}
.
joinToString
(
","
)
+
","
+
tempFilter
.
ages
.
map
{
it
.
value
}
.
joinToString
(
","
)
+
","
+
tempFilter
.
others
.
map
{
it
.
value
}.
joinToString
(
","
)
)
BuryPointUtils
.
buryPoint
(
"Filtrate"
,
props1
)
...
...
@@ -1019,6 +1067,9 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
allFilter
.
enquiries
.
addAll
(
tempFilter
.
enquiries
)
allFilter
.
ages
.
clear
()
allFilter
.
ages
.
addAll
(
tempFilter
.
ages
)
// 擅长人群
allFilter
.
specialityCrowd
.
clear
()
allFilter
.
specialityCrowd
.
addAll
(
tempFilter
.
specialityCrowd
)
allFilter
.
others
.
clear
()
allFilter
.
others
.
addAll
(
tempFilter
.
others
)
allFilter
.
title
.
clear
()
...
...
@@ -1077,7 +1128,11 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
textview
.
paint
.
isFakeBoldText
=
false
}
for
(
bean
in
allFilter
.
others
)
{
if
(
TextUtils
.
equals
(
bean
.
key
.
toString
(),
headData
!!
.
highlighter
[
index
].
id
))
{
if
(
TextUtils
.
equals
(
bean
.
key
.
toString
(),
headData
!!
.
highlighter
[
index
].
id
)
)
{
this
@ExpertSearchActivity
.
runOnUiThread
{
textview
.
isSelected
=
true
textview
.
paint
.
isFakeBoldText
=
true
...
...
@@ -1094,7 +1149,11 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
textview
.
paint
.
isFakeBoldText
=
false
}
for
(
bean
in
allFilter
.
title
)
{
if
(
TextUtils
.
equals
(
bean
.
key
.
toString
(),
headData
!!
.
highlighter
[
index
].
id
))
{
if
(
TextUtils
.
equals
(
bean
.
key
.
toString
(),
headData
!!
.
highlighter
[
index
].
id
)
)
{
this
@ExpertSearchActivity
.
runOnUiThread
{
textview
.
isSelected
=
true
textview
.
paint
.
isFakeBoldText
=
true
...
...
@@ -1168,8 +1227,10 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
//排序选择回调
override
fun
onSortItemSelected
(
sortItem
:
ReorderItem
)
{
ActionCountUtils
.
count
(
ConsultBIConstants
.
ConsultEvent
.
APP_CONSULT_LIST_SORT_CLICK
,
sortItem
.
value
?:
""
)
ActionCountUtils
.
count
(
ConsultBIConstants
.
ConsultEvent
.
APP_CONSULT_LIST_SORT_CLICK
,
sortItem
.
value
?:
""
)
if
(
sortItem
.
value
.
equals
(
"综合排序"
))
{
tvSort
.
text
=
"排序"
...
...
@@ -1209,8 +1270,10 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
//显示地区弹窗
private
fun
showAreaPopupWindow
()
{
if
(
headData
?.
region
!=
null
)
{
val
regionPopupWindow
=
AreaPopupWindow
(
this
,
headData
?.
region
?:
ArrayList
(),
allFilter
.
region
,
allFilter
.
sub
)
val
regionPopupWindow
=
AreaPopupWindow
(
this
,
headData
?.
region
?:
ArrayList
(),
allFilter
.
region
,
allFilter
.
sub
)
regionPopupWindow
.
showAsDropDown
(
viewSep2
)
viewDim
.
visibility
=
View
.
VISIBLE
updateFilterTextViewStatus
(
tvArea
,
FILTER_STATUS_OPEN
)
...
...
@@ -1222,69 +1285,73 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
updateFilterTextViewStatus
(
tvArea
,
FILTER_STATUS_NORMAL
)
}
}
regionPopupWindow
.
onRegionSelectedListener
=
object
:
AreaPopupWindow
.
OnRegionSelectedListener
{
override
fun
onRegionSelected
(
region
:
RegionItem
,
sub
:
SubItem
)
{
updateFilterTextViewStatus
(
tvArea
,
FILTER_STATUS_OPEN
)
allFilter
.
region
=
region
allFilter
.
sub
=
sub
if
(
region
.
key
==
null
&&
sub
.
key
==
null
)
{
regionPopupWindow
.
onRegionSelectedListener
=
object
:
AreaPopupWindow
.
OnRegionSelectedListener
{
override
fun
onRegionSelected
(
region
:
RegionItem
,
sub
:
SubItem
)
{
updateFilterTextViewStatus
(
tvArea
,
FILTER_STATUS_OPEN
)
allFilter
.
region
=
region
allFilter
.
sub
=
sub
if
(
region
.
key
==
null
&&
sub
.
key
==
null
)
{
// LogUtil.d("onRegionSelected: " + region.value)
// props1.put("filtrate_second", region.value)
// BuryPointUtils.buryPoint("Filtrate", props1)
tvArea
.
text
=
"地区"
}
else
if
(
region
.
key
!=
null
&&
sub
.
key
==
null
)
{
tvArea
.
text
=
"地区"
}
else
if
(
region
.
key
!=
null
&&
sub
.
key
==
null
)
{
// LogUtil.d("onRegionSelected: " + region.value)
// props1.put("filtrate_second", region.value)
// BuryPointUtils.buryPoint("Filtrate", props1)
if
(
region
.
value
?.
length
?:
0
>
4
)
{
tvArea
.
text
=
region
.
value
?.
substring
(
0
,
3
)
+
"..."
if
(
region
.
value
?.
length
?:
0
>
4
)
{
tvArea
.
text
=
region
.
value
?.
substring
(
0
,
3
)
+
"..."
}
else
{
tvArea
.
text
=
region
.
value
}
}
else
{
tvArea
.
text
=
region
.
value
}
}
else
{
// LogUtil.d("onRegionSelected: " + sub.value)
// props1.put("filtrate_second", sub.value)
// BuryPointUtils.buryPoint("Filtrate", props1)
if
(
sub
.
value
?.
length
?:
0
>
4
)
{
tvArea
.
text
=
sub
.
value
?.
substring
(
0
,
3
)
+
"..."
}
else
{
tvArea
.
text
=
sub
.
value
if
(
sub
.
value
?.
length
?:
0
>
4
)
{
tvArea
.
text
=
sub
.
value
?.
substring
(
0
,
3
)
+
"..."
}
else
{
tvArea
.
text
=
sub
.
value
}
}
}
ActionCountUtils
.
count
(
ConsultBIConstants
.
ConsultEvent
.
APP_CONSULT_LIST_AREA_CLICK
,
region
.
value
+
"|"
+
sub
.
value
)
//更新热门搜索显示状态
if
(
headData
!!
.
highlighter
.
size
>
0
)
{
for
((
index
,
hot
)
in
headData
!!
.
highlighter
!!
.
withIndex
())
{
if
(
hot
.
type
==
"2"
||
hot
.
type
==
"8"
)
{
var
textview
=
lin_filter2
.
getChildAt
(
index
)
as
TextView
//有选择城市
if
(!
TextUtils
.
isEmpty
(
sub
.
key
))
{
if
(
TextUtils
.
equals
(
sub
.
key
,
hot
.
id
))
{
textview
.
isSelected
=
true
textview
.
paint
.
isFakeBoldText
=
true
hasSelectedArea
=
true
}
else
{
textview
.
isSelected
=
false
textview
.
paint
.
isFakeBoldText
=
false
}
}
else
{
if
(
TextUtils
.
equals
(
region
.
key
,
hot
.
id
))
{
textview
.
isSelected
=
true
textview
.
paint
.
isFakeBoldText
=
true
hasSelectedArea
=
true
ActionCountUtils
.
count
(
ConsultBIConstants
.
ConsultEvent
.
APP_CONSULT_LIST_AREA_CLICK
,
region
.
value
+
"|"
+
sub
.
value
)
//更新热门搜索显示状态
if
(
headData
!!
.
highlighter
.
size
>
0
)
{
for
((
index
,
hot
)
in
headData
!!
.
highlighter
!!
.
withIndex
())
{
if
(
hot
.
type
==
"2"
||
hot
.
type
==
"8"
)
{
var
textview
=
lin_filter2
.
getChildAt
(
index
)
as
TextView
//有选择城市
if
(!
TextUtils
.
isEmpty
(
sub
.
key
))
{
if
(
TextUtils
.
equals
(
sub
.
key
,
hot
.
id
))
{
textview
.
isSelected
=
true
textview
.
paint
.
isFakeBoldText
=
true
hasSelectedArea
=
true
}
else
{
textview
.
isSelected
=
false
textview
.
paint
.
isFakeBoldText
=
false
}
}
else
{
textview
.
isSelected
=
false
textview
.
paint
.
isFakeBoldText
=
false
if
(
TextUtils
.
equals
(
region
.
key
,
hot
.
id
))
{
textview
.
isSelected
=
true
textview
.
paint
.
isFakeBoldText
=
true
hasSelectedArea
=
true
}
else
{
textview
.
isSelected
=
false
textview
.
paint
.
isFakeBoldText
=
false
}
}
}
}
}
regionPopupWindow
.
dismiss
()
refresh
()
}
regionPopupWindow
.
dismiss
()
refresh
()
}
}
}
else
{
ToastUtil
.
toastShort
(
"数据初始化失败,请重试"
)
getPresenter
().
fetchListHead
()
...
...
@@ -1324,7 +1391,10 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
* 新增逻辑:当主题选择后,需要判断热门筛选中是否也有该主题,如果有,也需要同步更新选中状态
*/
override
fun
onCategoriesSelected
(
categories
:
ArrayList
<
CateItem
>)
{
ActionCountUtils
.
count
(
ConsultBIConstants
.
ConsultEvent
.
APP_CONSULT_LIST_THEME_CLICK
,
categories
.
map
{
it
.
cateName
}.
joinToString
(
"|"
))
ActionCountUtils
.
count
(
ConsultBIConstants
.
ConsultEvent
.
APP_CONSULT_LIST_THEME_CLICK
,
categories
.
map
{
it
.
cateName
}.
joinToString
(
"|"
)
)
if
(
categories
.
size
==
1
&&
"全部"
!=
categories
[
0
].
cateName
)
{
//显示选中标题
tvSubject
.
text
=
categories
[
0
].
cateName
...
...
@@ -1343,7 +1413,11 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
textview
.
paint
.
isFakeBoldText
=
false
}
for
(
bean
in
categories
)
{
if
(
TextUtils
.
equals
(
bean
.
cateName
,
headData
!!
.
highlighter
[
index
].
value
))
{
if
(
TextUtils
.
equals
(
bean
.
cateName
,
headData
!!
.
highlighter
[
index
].
value
)
)
{
this
@ExpertSearchActivity
.
runOnUiThread
{
textview
.
isSelected
=
true
textview
.
paint
.
isFakeBoldText
=
true
...
...
@@ -1400,7 +1474,10 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
// return
// }
ActionCountUtils
.
count
(
ConsultBIConstants
.
UserMainEvent
.
YDL_USER_SEARCH_CLICK
,
keyWord
?:
""
)
ActionCountUtils
.
count
(
ConsultBIConstants
.
UserMainEvent
.
YDL_USER_SEARCH_CLICK
,
keyWord
?:
""
)
isDoSearch
=
true
resetFilter
()
refresh
()
...
...
@@ -1436,12 +1513,22 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
FILTER_STATUS_NORMAL
->
{
tv
.
typeface
=
Typeface
.
defaultFromStyle
(
Typeface
.
NORMAL
)
tv
.
setTextColor
(
ContextCompat
.
getColor
(
this
,
R
.
color
.
platform_colorTextDefault
))
tv
.
setCompoundDrawablesWithIntrinsicBounds
(
0
,
0
,
R
.
drawable
.
platform_ic_arrow_drop_down_grey_500_18dp
,
0
)
tv
.
setCompoundDrawablesWithIntrinsicBounds
(
0
,
0
,
R
.
drawable
.
platform_ic_arrow_drop_down_grey_500_18dp
,
0
)
}
FILTER_STATUS_FILTERED
->
{
tv
.
typeface
=
Typeface
.
DEFAULT_BOLD
tv
.
setTextColor
(
ContextCompat
.
getColor
(
this
,
R
.
color
.
platform_main_theme
))
tv
.
setCompoundDrawablesWithIntrinsicBounds
(
0
,
0
,
R
.
drawable
.
platform_ic_arrow_drop_down_grey_500_18dp
,
0
)
tv
.
setCompoundDrawablesWithIntrinsicBounds
(
0
,
0
,
R
.
drawable
.
platform_ic_arrow_drop_down_grey_500_18dp
,
0
)
}
FILTER_STATUS_OPEN
->
{
tv
.
typeface
=
Typeface
.
DEFAULT_BOLD
...
...
m-consultant/src/main/java/com/yidianling/consultant/ExpertSearchFragment.kt
View file @
0b9cc604
...
...
@@ -48,7 +48,6 @@ import com.yidianling.consultant.listener.OnFilterConfirmListener
import
com.yidianling.consultant.listener.OnSortItemSelectedListener
import
com.yidianling.consultant.model.bean.*
import
com.yidianling.consultant.modular.singlton.ConsultAssistantDialogUtils
import
com.yidianling.consultant.modular.singlton.ConsultAssistantDialogUtils.Companion.REALATION_EDUCATION
import
com.yidianling.consultant.router.ConsultantIn
import
com.yidianling.consultant.ui.view.AreaPopupWindow
import
com.yidianling.consultant.ui.view.CategoryPopupWindow
...
...
@@ -70,8 +69,8 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
View
.
OnClickListener
,
IExpertSearchView
,
OnCategoriesSelectedListener
,
OnSortItemSelectedListener
,
OnFilterConfirmListener
,
SwipeRefreshLayout
.
OnRefreshListener
{
private
lateinit
var
mContext
:
Context
private
lateinit
var
mActivity
:
FragmentActivity
private
lateinit
var
mContext
:
Context
private
lateinit
var
mActivity
:
FragmentActivity
override
fun
layoutResId
():
Int
{
return
R
.
layout
.
consultant_activity_expert_search_list
...
...
@@ -154,7 +153,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
private
val
doctorList
=
ArrayList
<
DoctorServiceItem
>()
private
val
serviceList
=
ArrayList
<
DoctorServiceItem
>()
private
var
hasMore
=
true
private
var
initCategory
:
Int
=
0
private
var
initCategory
=
"0"
private
var
initShowType
:
Int
=
0
private
lateinit
var
doctorAdapter
:
ExpertSearchAdapter
private
lateinit
var
onScrollListener
:
EndlessRecyclerViewScrollListener
...
...
@@ -181,7 +180,12 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
btn_call
.
setOnClickListener
(
this
)
tv_guide
.
setOnClickListener
(
this
)
rl_search
.
setOnClickListener
(
this
)
srlContainer
.
setColorSchemeColors
(
ContextCompat
.
getColor
(
mActivity
,
R
.
color
.
platform_main_theme
))
srlContainer
.
setColorSchemeColors
(
ContextCompat
.
getColor
(
mActivity
,
R
.
color
.
platform_main_theme
)
)
srlContainer
.
setProgressViewOffset
(
false
,
0
,
200
)
srlContainer
.
setOnRefreshListener
(
this
)
initNetLossView
()
...
...
@@ -395,7 +399,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
override
fun
onHeadFetched
(
headData
:
HeadData
?)
{
//头部数据获取到后初始化筛选数据
this
.
headData
=
headData
if
(
initCategory
!=
0
)
{
if
(
initCategory
!=
"0"
)
{
if
(
headData
?.
cates
!=
null
)
{
for
(
cate
in
headData
.
cates
)
{
if
(
cate
.
cateId
==
initCategory
)
{
...
...
@@ -413,7 +417,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
}
}
}
initCategory
=
0
initCategory
=
"0"
}
else
{
allFilter
.
categories
.
clear
()
allFilter
.
categories
.
add
(
headData
?.
cates
?.
get
(
0
)
?:
CateItem
())
...
...
@@ -483,7 +487,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
for
(
bean
in
headData
?.
cates
!!
)
{
if
(
TextUtils
.
equals
(
hotData
.
id
,
bean
.
cateId
.
toString
()))
{
if
(
isAdd
)
{
if
(
allFilter
.
categories
.
size
==
1
&&
allFilter
.
categories
[
0
].
cateId
==
0
)
{
if
(
allFilter
.
categories
.
size
==
1
&&
allFilter
.
categories
[
0
].
cateId
==
"0"
)
{
allFilter
.
categories
.
clear
()
}
allFilter
.
categories
.
add
(
bean
)
...
...
@@ -958,6 +962,9 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
tempFilter
.
ages
.
addAll
(
allFilter
.
ages
)
tempFilter
.
enquiries
.
clear
()
tempFilter
.
enquiries
.
addAll
(
allFilter
.
enquiries
)
// 擅长人群添加数据
tempFilter
.
specialityCrowd
.
clear
()
tempFilter
.
specialityCrowd
.
addAll
(
allFilter
.
specialityCrowd
)
tempFilter
.
others
.
clear
()
tempFilter
.
others
.
addAll
(
allFilter
.
others
)
tempFilter
.
priceRanges
=
allFilter
.
priceRanges
...
...
@@ -966,7 +973,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
if
(
headData
?.
filters
!=
null
)
{
val
filterPopupWindow
=
FilterPopupWindow
(
mContext
,
headData
?.
filters
!!
,
tempFilter
)
filterPopupWindow
.
setOnDismissListener
{
//
viewDim.visibility = View.INVISIBLE
viewDim
.
visibility
=
View
.
INVISIBLE
viewDim_filter
.
visibility
=
View
.
GONE
if
(
allFilter
.
others
.
size
+
allFilter
.
enquiries
.
size
+
allFilter
.
ages
.
size
+
allFilter
.
title
.
size
>
0
||
!
TextUtils
.
isEmpty
(
allFilter
.
priceRanges
?.
minPrice
...
...
@@ -979,12 +986,11 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
showConsultAssistantDialog
()
}
filterPopupWindow
.
isClippingEnabled
=
false
filterPopupWindow
.
showA
tLocation
(
viewSep2
.
rootView
,
Gravity
.
TOP
+
Gravity
.
RIGHT
,
0
,
0
)
filterPopupWindow
.
showA
sDropDown
(
viewSep2
)
hideConsultAssistantDialog
()
filterPopupWindow
.
onFilterConfirmListener
=
this
updateFilterTextViewStatus
(
tvFilter
,
FILTER_STATUS_OPEN
)
// viewDim.visibility = View.VISIBLE
viewDim_filter
.
visibility
=
View
.
VISIBLE
viewDim
.
visibility
=
View
.
VISIBLE
}
else
{
ToastUtil
.
toastShort
(
"数据初始化失败,请重试"
)
getPresenter
().
fetchListHead
()
...
...
@@ -995,15 +1001,18 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
override
fun
onFilterConfirmed
()
{
updateFilterTextViewStatus
(
tvFilter
,
FILTER_STATUS_OPEN
)
LogUtil
.
d
(
"filter: "
+
tempFilter
.
showType
.
value
+
","
+
tempFilter
.
enquiries
.
map
{
it
.
value
}.
joinToString
(
","
)
+
","
+
tempFilter
.
ages
.
map
{
it
.
value
}.
joinToString
(
","
)
+
","
+
tempFilter
.
others
.
map
{
it
.
value
}.
joinToString
(
"filter: "
+
tempFilter
.
showType
.
value
+
","
+
tempFilter
.
enquiries
.
map
{
it
.
value
}
.
joinToString
(
","
)
+
","
+
tempFilter
.
ages
.
map
{
it
.
value
}
.
joinToString
(
","
)
+
","
+
tempFilter
.
others
.
map
{
it
.
value
}.
joinToString
(
","
)
)
props1
.
put
(
"filtrate_second"
,
tempFilter
.
showType
.
value
+
","
+
tempFilter
.
enquiries
.
map
{
it
.
value
}.
joinToString
(
","
)
+
","
+
tempFilter
.
ages
.
map
{
it
.
value
}.
joinToString
(
tempFilter
.
showType
.
value
+
","
+
tempFilter
.
enquiries
.
map
{
it
.
value
}
.
joinToString
(
","
)
+
","
+
tempFilter
.
ages
.
map
{
it
.
value
}.
joinToString
(
","
)
+
","
+
tempFilter
.
others
.
map
{
it
.
value
}.
joinToString
(
","
)
)
...
...
@@ -1015,6 +1024,10 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
allFilter
.
enquiries
.
addAll
(
tempFilter
.
enquiries
)
allFilter
.
ages
.
clear
()
allFilter
.
ages
.
addAll
(
tempFilter
.
ages
)
// 擅长人群
allFilter
.
specialityCrowd
.
clear
()
allFilter
.
specialityCrowd
.
addAll
(
tempFilter
.
specialityCrowd
)
// 其它
allFilter
.
others
.
clear
()
allFilter
.
others
.
addAll
(
tempFilter
.
others
)
allFilter
.
title
.
clear
()
...
...
@@ -1350,7 +1363,6 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
//如果是亲自教育类别----->点击咨询顾问---会跳转到一个只是亲自教育的导医队列中
//判断主题选中,判断热门筛选中是否也有该主题
Executors
.
newCachedThreadPool
().
execute
{
if
(
headData
!!
.
highlighter
.
size
>
0
)
{
...
...
@@ -1483,7 +1495,12 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
FILTER_STATUS_OPEN
->
{
tv
.
typeface
=
Typeface
.
DEFAULT_BOLD
tv
.
setTextColor
(
ContextCompat
.
getColor
(
mContext
,
R
.
color
.
platform_colorTextDefault
))
tv
.
setCompoundDrawablesWithIntrinsicBounds
(
0
,
0
,
R
.
drawable
.
platform_arrow_drop_down_en
,
0
)
tv
.
setCompoundDrawablesWithIntrinsicBounds
(
0
,
0
,
R
.
drawable
.
platform_arrow_drop_down_en
,
0
)
}
}
}
...
...
m-consultant/src/main/java/com/yidianling/consultant/ExpertSearchPresenter.kt
View file @
0b9cc604
...
...
@@ -11,7 +11,6 @@ import com.ydl.ydlcommon.utils.RxLifecycleUtils
import
com.ydl.ydlcommon.utils.YDLAsyncUtils
import
com.ydl.ydlcommon.utils.YDLCacheUtils
import
com.ydl.ydlcommon.utils.remind.HttpErrorUtils
import
com.yidianling.common.tools.LogUtil
import
com.yidianling.consultant.http.ExpertSearchDataManager
import
com.yidianling.consultant.model.SearchApi
import
com.yidianling.consultant.model.bean.AllFilter
...
...
@@ -29,8 +28,8 @@ class ExpertSearchPresenter : SimplePresenter<IExpertSearchView>() {
@SuppressLint
(
"CheckResult"
)
fun
fetchListHead
()
{
SearchApi
.
getSearchApi
()
.
searchConditions
()
.
compose
(
RxLifecycleUtils
.
bindToLifecycle
(
mView
!!
))
//使用 Rxlifecycle,使 Disposable 和 Activity 一起销毁
.
searchConditions
(
2
)
.
compose
(
RxLifecycleUtils
.
bindToLifecycle
(
mView
))
//使用 Rxlifecycle,使 Disposable 和 Activity 一起销毁
.
compose
(
RxUtils
.
resultJavaData
())
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
...
...
@@ -106,7 +105,7 @@ class ExpertSearchPresenter : SimplePresenter<IExpertSearchView>() {
@SuppressLint
(
"CheckResult"
)
fun
fetchListData
(
allFilter
:
AllFilter
,
page
:
Int
)
{
//是否亲子教育字段
ConsultAssistantDialogUtils
.
REALATION_EDUCATION
=
allFilter
.
categories
.
size
==
1
&&
allFilter
.
categories
[
0
].
cateId
==
23
ConsultAssistantDialogUtils
.
REALATION_EDUCATION
=
allFilter
.
categories
.
size
==
1
&&
allFilter
.
categories
[
0
].
cateId
==
"23"
var
showType
=
0
val
sb
=
StringBuffer
()
...
...
@@ -133,6 +132,10 @@ class ExpertSearchPresenter : SimplePresenter<IExpertSearchView>() {
if
(
allFilter
.
ages
.
isNotEmpty
())
{
sb
.
append
(
"&ages="
).
append
(
allFilter
.
ages
.
map
{
it
.
key
}.
joinToString
(
","
))
}
// 擅长人群拼接
if
(
allFilter
.
specialityCrowd
.
isNotEmpty
()){
sb
.
append
(
"&crowdsTags="
).
append
(
allFilter
.
specialityCrowd
.
map
{
it
.
key
}.
joinToString
(
","
))
}
if
(
allFilter
.
others
.
isNotEmpty
())
{
sb
.
append
(
"&others="
).
append
(
allFilter
.
others
.
map
{
it
.
key
}.
joinToString
(
","
))
}
...
...
@@ -149,18 +152,18 @@ class ExpertSearchPresenter : SimplePresenter<IExpertSearchView>() {
}
sb
.
append
(
"&page="
).
append
(
page
)
ExpertSearchDataManager
.
getHttp
().
searchDoctor
(
sb
.
toString
())
.
compose
(
RxLifecycleUtils
.
bindToLifecycle
(
mView
!!
))
.
compose
(
RxLifecycleUtils
.
bindToLifecycle
(
mView
))
.
compose
(
RxUtils
.
resultJavaData
())
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
(
Consumer
{
if
(
null
!=
it
.
list
&&
!
it
.
list
!!
.
is
Empty
())
{
if
(
null
!=
it
.
list
&&
it
.
list
.
isNot
Empty
())
{
// if (showType == 0) {
// mView.onDoctorListFetched(it.list!!, page, it.pages)
// } else {
// mView.onServiceListFetched(it.list!!, page, it.pages)
// }
mView
.
onDoctorListFetched
(
it
.
list
!!
,
page
,
it
.
pages
)
mView
.
onDoctorListFetched
(
it
.
list
,
page
,
it
.
pages
)
//更新缓存 只更新第一页的缓存
if
(
page
==
1
){
updateCache
(
showType
,
it
)
...
...
m-consultant/src/main/java/com/yidianling/consultant/constants/ConsultBIConstants.kt
View file @
0b9cc604
...
...
@@ -13,6 +13,7 @@ class ConsultBIConstants {
const
val
POSITION_AVERAGE_SERVICE_INPUT
=
"average_service_input"
//服务均价
const
val
POSITION_AGE_CHOICE_CLICK
=
"age_choice_click"
//年龄选择
const
val
POSITION_QUALIFICATION_CHOICE_CLICK
=
"qualification_choice_click"
//资质选择
const
val
POSITION_GOOD_AT_CLICK
=
"good_at_click"
// 擅长人群
const
val
POSITION_OTHER_CHOICE_CLICK
=
"other_choice_click"
//其他选择
const
val
POSITION_CONSULT_FILTER_RESET_CLICK
=
"consult_filter_reset_click"
//重置
const
val
POSITION_CONSULT_FILTER_CHECKOUT_CLICK
=
"consult_filter_checkoutallconsultants_click"
//查看XXX位咨询师
...
...
m-consultant/src/main/java/com/yidianling/consultant/model/SearchApi.kt
View file @
0b9cc604
...
...
@@ -13,7 +13,6 @@ import com.yidianling.consultant.model.bean.ExpertSearchBean
import
com.yidianling.consultant.model.bean.HeadData
import
io.reactivex.Observable
import
retrofit2.http.*
import
kotlin.reflect.jvm.internal.impl.load.kotlin.JvmType
/**
...
...
@@ -41,7 +40,7 @@ interface SearchApi {
//搜索条件
@GET
(
"consult/search/conditions"
)
@Headers
(
YDL_DOMAIN
+
YDL_DOMAIN_JAVA
)
fun
searchConditions
():
Observable
<
BaseAPIResponse
<
HeadData
>>
fun
searchConditions
(
@Query
(
"cateSource"
)
cateSource
:
Int
):
Observable
<
BaseAPIResponse
<
HeadData
>>
//专家服务搜索
@retrofit2
.
http
.
Headers
(
"Content-Type:application/json"
)
...
...
m-consultant/src/main/java/com/yidianling/consultant/model/bean/AllFilter.kt
View file @
0b9cc604
...
...
@@ -21,5 +21,6 @@ data class AllFilter(
val
ages
:
ArrayList
<
AgeItem
>
=
ArrayList
(),
//年龄
val
others
:
ArrayList
<
OtherItem
>
=
ArrayList
(),
//其他筛选
val
title
:
ArrayList
<
ReorderItem
>
=
ArrayList
()
//资质
val
title
:
ArrayList
<
ReorderItem
>
=
ArrayList
(),
//资质
val
specialityCrowd
:
ArrayList
<
SpecialityCrowdBean
>
=
ArrayList
()
// 擅长人群
)
\ No newline at end of file
m-consultant/src/main/java/com/yidianling/consultant/model/bean/CateItem.kt
View file @
0b9cc604
...
...
@@ -6,29 +6,34 @@ import com.google.gson.annotations.SerializedName
data class
CateItem
(
@field
:
SerializedName
(
"cate_name"
)
var
cateName
:
String
?
=
null
,
@field
:
SerializedName
(
"cate_name"
)
var
cateName
:
String
?
=
null
,
@field
:
SerializedName
(
"cate_id"
)
var
cateId
:
Int
?
=
null
@field
:
SerializedName
(
"cate_id"
)
var
cateId
:
String
?
=
null
)
:
Parcelable
{
constructor
(
source
:
Parcel
)
:
this
(
source
.
readString
(),
source
.
readValue
(
Int
::
class
.
java
.
classLoader
)
as
Int
?
)
constructor
(
parcel
:
Parcel
)
:
this
(
parcel
.
readString
(),
parcel
.
readString
()
)
{
}
override
fun
describeContents
()
=
0
override
fun
writeToParcel
(
parcel
:
Parcel
,
flags
:
Int
)
{
parcel
.
writeString
(
cateName
)
parcel
.
writeString
(
cateId
)
}
override
fun
writeToParcel
(
dest
:
Parcel
,
flags
:
Int
)
=
with
(
dest
)
{
writeString
(
cateName
)
writeValue
(
cateId
)
override
fun
describeContents
():
Int
{
return
0
}
companion
object
{
@JvmField
val
CREATOR
:
Parcelable
.
Creator
<
CateItem
>
=
object
:
Parcelable
.
Creator
<
CateItem
>
{
override
fun
createFromParcel
(
source
:
Parcel
):
CateItem
=
CateItem
(
source
)
override
fun
newArray
(
size
:
Int
):
Array
<
CateItem
?>
=
arrayOfNulls
(
size
)
companion
object
CREATOR
:
Parcelable
.
Creator
<
CateItem
>
{
override
fun
createFromParcel
(
parcel
:
Parcel
):
CateItem
{
return
CateItem
(
parcel
)
}
override
fun
newArray
(
size
:
Int
):
Array
<
CateItem
?>
{
return
arrayOfNulls
(
size
)
}
}
}
\ No newline at end of file
m-consultant/src/main/java/com/yidianling/consultant/model/bean/Filters.kt
View file @
0b9cc604
...
...
@@ -3,39 +3,52 @@ package com.yidianling.consultant.model.bean
import
com.google.gson.annotations.SerializedName
data class
Filters
(
/**
* 按服务或者按专家
*/
@field
:
SerializedName
(
"show_type"
)
val
showType
:
List
<
ShowTypeItem
>
=
ArrayList
(),
/**
* 其他选择
*/
@field
:
SerializedName
(
"other"
)
val
other
:
List
<
OtherItem
>
=
ArrayList
(),
/**
* 咨询方式
*/
@field
:
SerializedName
(
"enquiry"
)
val
enquiry
:
List
<
EnquiryItem
>
=
ArrayList
(),
/**
* 服务均价
*/
@field
:
SerializedName
(
"priceRanges"
)
val
priceRanges
:
List
<
PriceRangesItem
>
=
ArrayList
(),
/**
* 年龄选择
*/
@field
:
SerializedName
(
"age"
)
val
age
:
List
<
AgeItem
>
=
ArrayList
(),
/**
* 资质选择
*/
@field
:
SerializedName
(
"title"
)
val
title
:
List
<
ReorderItem
>
=
ArrayList
()
//资质
/**
* 按服务或者按专家
*/
@field
:
SerializedName
(
"show_type"
)
val
showType
:
List
<
ShowTypeItem
>
=
ArrayList
(),
/**
* 其他选择
*/
@field
:
SerializedName
(
"other"
)
val
other
:
List
<
OtherItem
>
=
ArrayList
(),
/**
* 咨询方式
*/
@field
:
SerializedName
(
"enquiry"
)
val
enquiry
:
List
<
EnquiryItem
>
=
ArrayList
(),
/**
* 服务均价
*/
@field
:
SerializedName
(
"priceRanges"
)
val
priceRanges
:
List
<
PriceRangesItem
>
=
ArrayList
(),
/**
* 年龄选择
*/
@field
:
SerializedName
(
"age"
)
val
age
:
List
<
AgeItem
>
=
ArrayList
(),
/**
* 资质选择
*/
@field
:
SerializedName
(
"title"
)
val
title
:
List
<
ReorderItem
>
=
ArrayList
(),
// /**
// * 擅长人群
// */
// @field:SerializedName("crowdsTags")
// val crowdsTags: List<AgeItem> = ArrayList()
/**
* 擅长人群
*/
@field
:
SerializedName
(
"specialityCrowd"
)
val
specialityCrowd
:
ArrayList
<
SpecialityCrowdBean
>
=
ArrayList
()
)
\ No newline at end of file
m-consultant/src/main/java/com/yidianling/consultant/model/bean/HeadData.kt
View file @
0b9cc604
...
...
@@ -4,33 +4,33 @@ import com.google.gson.annotations.SerializedName
data class
HeadData
(
/**
* 主题
*/
@field
:
SerializedName
(
"cates"
)
val
cates
:
ArrayList
<
CateItem
>
=
ArrayList
(),
/**
* 主题
*/
@field
:
SerializedName
(
"cates"
)
val
cates
:
ArrayList
<
CateItem
>
=
ArrayList
(),
/**
* 排序
*/
@field
:
SerializedName
(
"reorder"
)
val
reorder
:
ArrayList
<
ReorderItem
>
=
ArrayList
(),
/**
* 排序
*/
@field
:
SerializedName
(
"reorder"
)
val
reorder
:
ArrayList
<
ReorderItem
>
=
ArrayList
(),
/**
* 筛选
*/
@field
:
SerializedName
(
"filters"
)
val
filters
:
Filters
=
Filters
(),
/**
* 筛选
*/
@field
:
SerializedName
(
"filters"
)
val
filters
:
Filters
=
Filters
(),
/**
* 热门
*/
@field
:
SerializedName
(
"highlighter"
)
val
highlighter
:
ArrayList
<
HighlighterItem
>
=
ArrayList
(),
/**
* 热门
*/
@field
:
SerializedName
(
"highlighter"
)
val
highlighter
:
ArrayList
<
HighlighterItem
>
=
ArrayList
(),
/**
* 地区
*/
@field
:
SerializedName
(
"region"
)
val
region
:
ArrayList
<
RegionItem
>
=
ArrayList
()
/**
* 地区
*/
@field
:
SerializedName
(
"region"
)
val
region
:
ArrayList
<
RegionItem
>
=
ArrayList
()
)
\ No newline at end of file
m-consultant/src/main/java/com/yidianling/consultant/model/bean/SpecialityCrowdBean.kt
0 → 100644
View file @
0b9cc604
package
com.yidianling.consultant.model.bean
import
com.google.gson.annotations.SerializedName
data class
SpecialityCrowdBean
(
@field
:
SerializedName
(
"value"
)
var
value
:
String
?
=
null
,
@field
:
SerializedName
(
"key"
)
var
key
:
String
?
=
null
)
\ No newline at end of file
m-consultant/src/main/java/com/yidianling/consultant/modular/ConsultantServiceImp.kt
View file @
0b9cc604
...
...
@@ -36,7 +36,7 @@ class ConsultantServiceImp : IConsultantService {
override
fun
expertSearchIntent
(
activity
:
Activity
,
category
:
Int
,
category
:
String
,
showType
:
Int
,
isInitShowHot
:
Boolean
):
Intent
{
...
...
@@ -72,14 +72,14 @@ class ConsultantServiceImp : IConsultantService {
override
fun
startExpertSearchActivity
(
mContext
:
Context
,
category
:
Int
,
category
:
String
,
categoryName
:
String
,
showType
:
Int
)
{
ExpertSearchActivity
.
start
(
mContext
,
category
,
categoryName
,
showType
)
}
override
fun
startExpertSearchActivity
(
mContext
:
Context
,
category
:
Int
)
{
override
fun
startExpertSearchActivity
(
mContext
:
Context
,
category
:
String
)
{
ExpertSearchActivity
.
start
(
mContext
,
category
)
}
...
...
m-consultant/src/main/java/com/yidianling/consultant/ui/view/FilterPopupWindow.kt
View file @
0b9cc604
...
...
@@ -9,10 +9,7 @@ import androidx.core.content.ContextCompat
import
android.text.*
import
android.text.style.AbsoluteSizeSpan
import
android.util.Log
import
android.view.Gravity
import
android.view.KeyEvent
import
android.view.LayoutInflater
import
android.view.View
import
android.view.*
import
android.view.inputmethod.EditorInfo
import
android.view.inputmethod.InputMethodManager
import
android.widget.*
...
...
@@ -42,8 +39,11 @@ import kotlinx.android.synthetic.main.consultant_ui_filter_popup.view.*
* 筛选弹窗
* Created by zqk on 17-9-15.
*/
class
FilterPopupWindow
(
private
val
context
:
Context
,
private
val
filterData
:
Filters
,
private
val
tempFilter
:
AllFilter
)
:
PopupWindow
(
context
)
{
class
FilterPopupWindow
(
private
val
context
:
Context
,
private
val
filterData
:
Filters
,
private
val
tempFilter
:
AllFilter
)
:
PopupWindow
(
ViewGroup
.
LayoutParams
.
MATCH_PARENT
,
ViewGroup
.
LayoutParams
.
WRAP_CONTENT
)
{
private
val
mDisposableList
=
CompositeDisposable
()
...
...
@@ -53,15 +53,18 @@ class FilterPopupWindow(private val context: Context, private val filterData: Fi
private
val
ageViews
:
ArrayList
<
View
>
=
ArrayList
()
private
val
otherViews
:
ArrayList
<
View
>
=
ArrayList
()
private
val
ziZhiViews
:
ArrayList
<
View
>
=
ArrayList
()
private
val
goodAtViews
:
ArrayList
<
TextView
>
=
ArrayList
()
var
onFilterConfirmListener
:
OnFilterConfirmListener
?
=
null
/**筛选咨询方式一行数量*/
private
val
enquirySize
=
4
;
private
var
dp5
=
0
private
var
dp10
=
0
private
var
dp36
=
0
private
var
dp46
=
0
// val pad = RxImageTool.dp2px(15f)
private
val
popWidth
=
(
RxDeviceTool
.
getScreenWidth
(
context
)
*
0.8
).
toInt
()
private
val
popWidth
=
(
RxDeviceTool
.
getScreenWidth
(
context
))
var
etMinPrice
:
EditText
?
=
null
var
etMaxPrice
:
EditText
?
=
null
...
...
@@ -74,25 +77,23 @@ class FilterPopupWindow(private val context: Context, private val filterData: Fi
dp36
=
RxImageTool
.
dip2px
(
36f
)
dp46
=
RxImageTool
.
dip2px
(
46f
)
this
.
width
=
popWidth
this
.
height
=
RxDeviceTool
.
getAppHeight
(
context
)
+
RxDeviceTool
.
getStatusBarHeight
(
context
)
this
.
height
=
(
RxDeviceTool
.
getAppHeight
(
context
)
*
0.75
).
toInt
(
)
contentView
=
view
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
M
)
{
contentView
.
foregroundGravity
=
Gravity
.
RIGHT
}
this
.
isFocusable
=
true
@Suppress
(
"DEPRECATION"
)
this
.
setBackgroundDrawable
(
BitmapDrawable
())
this
.
isOutsideTouchable
=
true
this
.
animationStyle
=
R
.
style
.
consultant_expert_service_popupwindow_filter_anim_style
//
this.animationStyle = R.style.consultant_expert_service_popupwindow_filter_anim_style
initShowTypeViews
(
view
)
initEnquiryViews
(
view
)
initPriceViews
(
view
)
initAgeViews
(
view
)
initOtherViews
(
view
)
initGoodAtCrowd
(
view
)
initZiZhiViews
(
view
)
initKeyboardListener
(
view
)
...
...
@@ -136,6 +137,8 @@ class FilterPopupWindow(private val context: Context, private val filterData: Fi
tempFilter
.
showType
=
filterData
.
showType
[
0
]
tempFilter
.
ages
.
clear
()
tempFilter
.
enquiries
.
clear
()
// 擅长人群
tempFilter
.
specialityCrowd
.
clear
()
tempFilter
.
others
.
clear
()
tempFilter
.
title
.
clear
()
tempFilter
.
priceRangesView
=
null
...
...
@@ -162,6 +165,10 @@ class FilterPopupWindow(private val context: Context, private val filterData: Fi
v
.
paint
.
isFakeBoldText
=
false
}
}
for
(
v
in
goodAtViews
){
v
.
isSelected
=
false
v
.
paint
.
isFakeBoldText
=
false
}
for
(
v
in
otherViews
)
{
v
.
isSelected
=
false
if
(
v
is
TextView
)
{
...
...
@@ -192,7 +199,8 @@ class FilterPopupWindow(private val context: Context, private val filterData: Fi
val
sb
=
StringBuffer
()
var
biEventParams
=
""
sb
.
append
(
"searchWord="
).
append
(
if
(
TextUtils
.
isEmpty
(
tempFilter
.
searchWord
))
""
else
tempFilter
.
searchWord
)
sb
.
append
(
"searchWord="
)
.
append
(
if
(
TextUtils
.
isEmpty
(
tempFilter
.
searchWord
))
""
else
tempFilter
.
searchWord
)
if
(
tempFilter
.
categories
.
isNotEmpty
())
{
var
categorys
=
tempFilter
.
categories
.
map
{
it
.
cateId
}.
joinToString
(
","
)
if
(
"0"
==
categorys
)
{
...
...
@@ -221,6 +229,13 @@ class FilterPopupWindow(private val context: Context, private val filterData: Fi
biEventParams
=
tempFilter
.
ages
.
map
{
it
.
key
}.
joinToString
(
","
)
}
}
// 擅长人群拼接
if
(
tempFilter
.
specialityCrowd
.
isNotEmpty
()){
sb
.
append
(
"&crowdsTags="
).
append
(
tempFilter
.
specialityCrowd
.
map
{
it
.
key
}.
joinToString
(
","
))
if
(
ConsultBIConstants
.
POSITION_GOOD_AT_CLICK
==
biEventName
){
biEventParams
=
tempFilter
.
specialityCrowd
.
map
{
it
.
key
}.
joinToString
(
","
)
}
}
if
(
tempFilter
.
others
.
isNotEmpty
())
{
sb
.
append
(
"&others="
).
append
(
tempFilter
.
others
.
map
{
it
.
key
}.
joinToString
(
","
))
if
(
ConsultBIConstants
.
POSITION_OTHER_CHOICE_CLICK
==
biEventName
)
{
...
...
@@ -259,34 +274,49 @@ class FilterPopupWindow(private val context: Context, private val filterData: Fi
// sb.append("&page=").append(1)
ExpertSearchDataManager
.
getHttp
().
getFilterCount
(
sb
.
toString
())
.
subscribeOn
(
Schedulers
.
io
())
.
compose
(
RxUtils
.
resultJavaData
())
.
map
{
it
}
.
filter
{
it
!=
null
}
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
({
contentView
.
btnConfirm
.
text
=
if
(
it
>
0
)
"确定"
else
"暂无匹配咨询师"
//按钮置灰/解除置灰
contentView
.
btnConfirm
.
isEnabled
=
it
>
0
if
(
it
>
0
)
{
contentView
.
btnConfirm
.
setTextColor
(
ContextCompat
.
getColor
(
context
,
R
.
color
.
platform_but_text_color
))
contentView
.
btnConfirm
.
background
=
ContextCompat
.
getDrawable
(
context
,
R
.
drawable
.
consultant_bg_radius_5_dark
)
.
subscribeOn
(
Schedulers
.
io
())
.
compose
(
RxUtils
.
resultJavaData
())
.
map
{
it
}
.
filter
{
it
!=
null
}
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
({
contentView
.
btnConfirm
.
text
=
if
(
it
>
0
)
"确定"
else
"暂无匹配咨询师"
//按钮置灰/解除置灰
contentView
.
btnConfirm
.
isEnabled
=
it
>
0
if
(
it
>
0
)
{
contentView
.
btnConfirm
.
setTextColor
(
ContextCompat
.
getColor
(
context
,
R
.
color
.
platform_but_text_color
)
)
contentView
.
btnConfirm
.
background
=
ContextCompat
.
getDrawable
(
context
,
R
.
drawable
.
consultant_bg_radius_5_dark
)
// contentView.btnConfirm.setTextColor(ContextCompat.getColor(context,R.color.consultant_white))
}
else
{
contentView
.
btnConfirm
.
setTextColor
(
ContextCompat
.
getColor
(
context
,
R
.
color
.
platform_text_light_color
))
contentView
.
btnConfirm
.
background
=
ContextCompat
.
getDrawable
(
context
,
R
.
drawable
.
consultant_bg_radius_5_light
)
}
else
{
contentView
.
btnConfirm
.
setTextColor
(
ContextCompat
.
getColor
(
context
,
R
.
color
.
platform_text_light_color
)
)
contentView
.
btnConfirm
.
background
=
ContextCompat
.
getDrawable
(
context
,
R
.
drawable
.
consultant_bg_radius_5_light
)
// contentView.btnConfirm.setTextColor(ContextCompat.getColor(context,R.color.color_999999))
}
}
},
{
ToastHelper
.
show
(
it
.
message
!!
)
})
},
{
ToastHelper
.
show
(
it
.
message
!!
)
})
}
private
fun
biEvent
(
biEventName
:
String
,
biEventParams
:
String
=
""
)
{
if
(!
TextUtils
.
isEmpty
(
biEventName
))
{
ActionCountUtils
.
count
(
ConsultBIConstants
.
PART_ID_CONSULT_FILTER_PAGE
+
"|"
+
biEventName
,
biEventParams
)
ActionCountUtils
.
count
(
ConsultBIConstants
.
PART_ID_CONSULT_FILTER_PAGE
+
"|"
+
biEventName
,
biEventParams
)
}
}
...
...
@@ -295,20 +325,22 @@ class FilterPopupWindow(private val context: Context, private val filterData: Fi
}
private
fun
initOtherViews
(
view
:
View
)
{
val
mWidth
=
(
popWidth
-
RxImageTool
.
dp2px
(
52f
))
/
3
for
((
index
,
other
)
in
filterData
!!
.
other
!!
.
withIndex
())
{
val
mWidth
=
(
popWidth
-
RxImageTool
.
dp2px
(
52f
))
/
enquirySize
for
((
index
,
other
)
in
filterData
.
other
.
withIndex
())
{
val
textView
=
View
.
inflate
(
context
,
R
.
layout
.
consultant_item_filter
,
null
)
as
TextView
val
params
=
FrameLayout
.
LayoutParams
(
mWidth
,
dp36
)
val
marginNum
=
dp5
params
.
setMargins
(
marginNum
+
(
dp10
+
mWidth
)
*
(
index
%
3
),
RxImageTool
.
dp2px
(
46f
)
*
(
index
/
3
),
marginNum
,
0
)
params
.
setMargins
(
marginNum
+
(
dp10
+
mWidth
)
*
(
index
%
enquirySize
),
RxImageTool
.
dp2px
(
46f
)
*
(
index
/
enquirySize
),
marginNum
,
0
)
textView
.
layoutParams
=
params
textView
.
text
=
other
.
value
otherViews
.
add
(
textView
)
if
(
tempFilter
!!
.
others
!!
.
contains
(
other
))
{
if
(
tempFilter
.
others
.
contains
(
other
))
{
textView
.
isSelected
=
true
textView
.
paint
.
isFakeBoldText
=
true
}
...
...
@@ -316,11 +348,11 @@ class FilterPopupWindow(private val context: Context, private val filterData: Fi
textView
.
setOnClickListener
{
if
(
textView
.
isSelected
)
{
tempFilter
!!
.
others
!!
.
remove
(
other
)
textView
!!
.
isSelected
=
false
tempFilter
.
others
.
remove
(
other
)
textView
.
isSelected
=
false
textView
.
paint
.
isFakeBoldText
=
false
}
else
{
tempFilter
!!
.
others
!!
.
add
(
other
)
tempFilter
.
others
.
add
(
other
)
textView
.
isSelected
=
true
textView
.
paint
.
isFakeBoldText
=
true
}
...
...
@@ -332,26 +364,15 @@ class FilterPopupWindow(private val context: Context, private val filterData: Fi
private
fun
initZiZhiViews
(
view
:
View
)
{
val
mWidth
=
(
popWidth
-
RxImageTool
.
dp2px
(
40f
))
/
2
var
float
=
46f
for
((
index
,
other
)
in
filterData
!!
.
title
!!
.
withIndex
())
{
for
(
other
in
filterData
.
title
)
{
val
textView
=
View
.
inflate
(
context
,
R
.
layout
.
consultant_item_filter
,
null
)
as
TextView
// val params = FrameLayout.LayoutParams(mWidth,FrameLayout.LayoutParams.WRAP_CONTENT)
val
params
=
FrameLayout
.
LayoutParams
(
mWidth
,
dp36
)
val
marginNum
=
dp5
// params.setMargins(marginNum + (dp10 + mWidth) * (index % 2),
// RxImageTool.dp2px(float) * (index / 2),
// marginNum,
// 0)
params
.
setMargins
(
0
,
0
,
RxImageTool
.
dp2px
(
10f
),
0
)
textView
.
layoutParams
=
params
textView
.
text
=
other
.
value
if
(
textView
.
lineCount
>
1
)
{
}
ziZhiViews
.
add
(
textView
)
if
(
tempFilter
!!
.
title
!!
.
contains
(
other
))
{
if
(
tempFilter
.
title
.
contains
(
other
))
{
textView
.
isSelected
=
true
textView
.
paint
.
isFakeBoldText
=
true
}
...
...
@@ -359,11 +380,11 @@ class FilterPopupWindow(private val context: Context, private val filterData: Fi
textView
.
setOnClickListener
{
if
(
textView
.
isSelected
)
{
tempFilter
!!
.
title
!!
.
remove
(
other
)
textView
!!
.
isSelected
=
false
tempFilter
.
title
.
remove
(
other
)
textView
.
isSelected
=
false
textView
.
paint
.
isFakeBoldText
=
false
}
else
{
tempFilter
!!
.
title
!!
.
add
(
other
)
tempFilter
.
title
.
add
(
other
)
textView
.
isSelected
=
true
textView
.
paint
.
isFakeBoldText
=
true
}
...
...
@@ -373,21 +394,84 @@ class FilterPopupWindow(private val context: Context, private val filterData: Fi
}
}
/**
* 擅长人群
*/
private
fun
initGoodAtCrowd
(
view
:
View
)
{
// 如果标标签数量大于20,取前20个默认展示
if
(
filterData
.
specialityCrowd
.
size
>
20
)
{
view
.
ll_crowd_more
.
visibility
=
View
.
VISIBLE
view
.
ll_crowd_more
.
setOnClickListener
{
val
text
=
view
.
tv_crowd_open
.
text
if
(
text
==
"展开"
)
{
view
.
tv_crowd_open
.
text
=
"收起"
view
.
iv_crowd_open
.
setBackgroundResource
(
R
.
drawable
.
ic_crowd_close
)
for
(
i
in
20
until
goodAtViews
.
size
){
goodAtViews
[
i
].
visibility
=
View
.
GONE
}
}
else
{
view
.
tv_crowd_open
.
text
=
"展开"
view
.
iv_crowd_open
.
setBackgroundResource
(
R
.
drawable
.
ic_crowd_open
)
for
(
i
in
20
until
goodAtViews
.
size
){
goodAtViews
[
i
].
visibility
=
View
.
VISIBLE
}
}
}
}
val
mWidth
=
(
popWidth
-
RxImageTool
.
dp2px
(
52f
))
/
enquirySize
val
params
=
FrameLayout
.
LayoutParams
(
mWidth
,
RxImageTool
.
dp2px
(
36f
))
val
margin
=
RxImageTool
.
dp2px
(
9.5f
)
filterData
.
specialityCrowd
.
forEachIndexed
{
index
,
item
->
val
textView
=
View
.
inflate
(
context
,
R
.
layout
.
consultant_item_filter
,
null
)
as
TextView
params
.
setMargins
(
0
,
0
,
margin
,
0
)
textView
.
layoutParams
=
params
textView
.
text
=
item
.
value
if
(
tempFilter
.
specialityCrowd
.
contains
(
item
))
{
textView
.
isSelected
=
true
textView
.
paint
.
isFakeBoldText
=
true
}
textView
.
tvFilterName
.
text
=
" "
+
item
.
value
+
" "
textView
.
setOnClickListener
{
if
(
textView
.
isSelected
)
{
tempFilter
.
specialityCrowd
.
remove
(
item
)
textView
.
isSelected
=
false
textView
.
paint
.
isFakeBoldText
=
false
}
else
{
tempFilter
.
specialityCrowd
.
add
(
item
)
textView
.
isSelected
=
true
textView
.
paint
.
isFakeBoldText
=
true
}
updateCount
(
ConsultBIConstants
.
POSITION_GOOD_AT_CLICK
)
}
if
(
index
>
19
){
textView
.
visibility
=
View
.
GONE
}
goodAtViews
.
add
(
textView
)
view
.
fl_crowd
.
addView
(
textView
)
}
}
private
fun
initAgeViews
(
view
:
View
)
{
val
mWidth
=
(
popWidth
-
RxImageTool
.
dp2px
(
52f
))
/
3
for
((
index
,
age
)
in
filterData
!!
.
age
!!
.
withIndex
())
{
val
mWidth
=
(
popWidth
-
RxImageTool
.
dp2px
(
52f
))
/
enquirySize
for
((
index
,
age
)
in
filterData
.
age
.
withIndex
())
{
val
textView
=
View
.
inflate
(
context
,
R
.
layout
.
consultant_item_filter
,
null
)
as
TextView
val
params
=
FrameLayout
.
LayoutParams
(
mWidth
,
RxImageTool
.
dp2px
(
36f
))
val
marginNum
=
RxImageTool
.
dp2px
(
5f
)
params
.
setMargins
(
marginNum
+
(
dp10
+
mWidth
)
*
(
index
%
3
),
dp46
*
(
index
/
3
),
marginNum
,
0
)
params
.
setMargins
(
marginNum
+
(
dp10
+
mWidth
)
*
(
index
%
enquirySize
),
dp46
*
(
index
/
enquirySize
),
marginNum
,
0
)
textView
.
layoutParams
=
params
textView
.
text
=
age
.
value
ageViews
.
add
(
textView
)
if
(
tempFilter
!!
.
ages
!!
.
contains
(
age
))
{
if
(
tempFilter
.
ages
.
contains
(
age
))
{
textView
.
isSelected
=
true
textView
.
paint
.
isFakeBoldText
=
true
}
...
...
@@ -395,11 +479,11 @@ class FilterPopupWindow(private val context: Context, private val filterData: Fi
textView
.
setOnClickListener
{
if
(
textView
.
isSelected
)
{
tempFilter
!!
.
ages
!!
.
remove
(
age
)
tempFilter
.
ages
.
remove
(
age
)
textView
.
isSelected
=
false
textView
.
paint
.
isFakeBoldText
=
false
}
else
{
tempFilter
!!
.
ages
!!
.
add
(
age
)
tempFilter
.
ages
.
add
(
age
)
textView
.
isSelected
=
true
textView
.
paint
.
isFakeBoldText
=
true
}
...
...
@@ -410,31 +494,33 @@ class FilterPopupWindow(private val context: Context, private val filterData: Fi
}
private
fun
initEnquiryViews
(
view
:
View
)
{
val
mWidth
=
(
popWidth
-
RxImageTool
.
dp2px
(
52f
))
/
3
for
((
index
,
enquiry
)
in
filterData
!!
.
enquiry
!!
.
withIndex
())
{
val
mWidth
=
(
popWidth
-
RxImageTool
.
dp2px
(
52f
))
/
enquirySize
for
((
index
,
enquiry
)
in
filterData
.
enquiry
.
withIndex
())
{
val
textView
=
View
.
inflate
(
context
,
R
.
layout
.
consultant_item_filter
,
null
)
as
TextView
val
params
=
FrameLayout
.
LayoutParams
(
mWidth
,
RxImageTool
.
dp2px
(
36f
))
val
marginNum
=
RxImageTool
.
dp2px
(
5f
)
params
.
setMargins
(
marginNum
+
(
RxImageTool
.
dp2px
(
10f
)
+
mWidth
)
*
(
index
%
3
),
RxImageTool
.
dp2px
(
46f
)
*
(
index
/
3
),
marginNum
,
0
)
params
.
setMargins
(
marginNum
+
(
RxImageTool
.
dp2px
(
10f
)
+
mWidth
)
*
(
index
%
enquirySize
),
RxImageTool
.
dp2px
(
46f
)
*
(
index
/
enquirySize
),
marginNum
,
0
)
textView
.
layoutParams
=
params
textView
.
text
=
enquiry
.
value
enquiryViews
.
add
(
textView
)
if
(
tempFilter
!!
.
enquiries
!!
.
contains
(
enquiry
))
{
if
(
tempFilter
.
enquiries
.
contains
(
enquiry
))
{
textView
.
isSelected
=
true
textView
.
paint
.
isFakeBoldText
=
true
}
textView
.
setOnClickListener
{
if
(
textView
.
isSelected
)
{
tempFilter
!!
.
enquiries
!!
.
remove
(
enquiry
)
tempFilter
.
enquiries
.
remove
(
enquiry
)
textView
.
isSelected
=
false
textView
.
paint
.
isFakeBoldText
=
false
}
else
{
tempFilter
!!
.
enquiries
!!
.
add
(
enquiry
)
tempFilter
.
enquiries
.
add
(
enquiry
)
textView
.
isSelected
=
true
textView
.
paint
.
isFakeBoldText
=
true
}
...
...
@@ -445,20 +531,22 @@ class FilterPopupWindow(private val context: Context, private val filterData: Fi
}
private
fun
initPriceViews
(
view
:
View
)
{
val
priceRange
=
View
.
inflate
(
context
,
R
.
layout
.
consultant_item_price_range
,
null
)
as
LinearLayout
etMinPrice
=
priceRange
.
findViewById
<
EditText
>(
R
.
id
.
etMinPrice
);
etMaxPrice
=
priceRange
.
findViewById
<
EditText
>(
R
.
id
.
etMaxPrice
);
val
priceRange
=
View
.
inflate
(
context
,
R
.
layout
.
consultant_item_price_range
,
null
)
as
LinearLayout
etMinPrice
=
priceRange
.
findViewById
(
R
.
id
.
etMinPrice
);
etMaxPrice
=
priceRange
.
findViewById
(
R
.
id
.
etMaxPrice
);
val
imm
=
context
.
getSystemService
(
Context
.
INPUT_METHOD_SERVICE
)
as
InputMethodManager
var
listener
:
TextView
.
OnEditorActionListener
=
TextView
.
OnEditorActionListener
{
_
,
actionId
,
event
->
if
(
actionId
==
EditorInfo
.
IME_ACTION_DONE
||
event
!=
null
&&
event
.
keyCode
==
KeyEvent
.
KEYCODE_ENTER
)
{
updatePriceFilter
()
true
}
else
{
false
var
listener
:
TextView
.
OnEditorActionListener
=
TextView
.
OnEditorActionListener
{
_
,
actionId
,
event
->
if
(
actionId
==
EditorInfo
.
IME_ACTION_DONE
||
event
!=
null
&&
event
.
keyCode
==
KeyEvent
.
KEYCODE_ENTER
)
{
updatePriceFilter
()
true
}
else
{
false
}
}
}
if
(
tempFilter
.
priceRanges
!=
null
)
{
etMinPrice
?.
setText
(
tempFilter
.
priceRanges
?.
minPrice
)
...
...
@@ -497,22 +585,35 @@ class FilterPopupWindow(private val context: Context, private val filterData: Fi
}
})
val
mWidth
=
(
popWidth
-
RxImageTool
.
dp2px
(
52f
))
/
3
for
((
index
,
priceRangesItem
)
in
filterData
!!
.
priceRanges
!!
.
withIndex
())
{
val
mWidth
=
(
popWidth
-
RxImageTool
.
dp2px
(
52f
))
/
enquirySize
for
((
index
,
priceRangesItem
)
in
filterData
.
priceRanges
.
withIndex
())
{
val
textView
=
View
.
inflate
(
context
,
R
.
layout
.
consultant_item_filter
,
null
)
as
TextView
val
params
=
FrameLayout
.
LayoutParams
(
mWidth
,
RxImageTool
.
dp2px
(
48f
))
val
marginNum
=
RxImageTool
.
dp2px
(
2f
)
params
.
setMargins
(
marginNum
+
(
RxImageTool
.
dp2px
(
10f
)
+
mWidth
)
*
(
index
%
3
),
RxImageTool
.
dp2px
(
58f
)
*
(
index
/
3
),
marginNum
,
0
)
params
.
setMargins
(
marginNum
+
(
RxImageTool
.
dp2px
(
10f
)
+
mWidth
)
*
(
index
%
enquirySize
),
RxImageTool
.
dp2px
(
58f
)
*
(
index
/
3
),
marginNum
,
0
)
textView
.
layoutParams
=
params
val
maxPriceStr
=
if
(
TextUtils
.
isEmpty
(
priceRangesItem
.
maxPrice
))
"+"
else
"-"
+
priceRangesItem
.
maxPrice
val
contentStr
=
String
.
format
(
"%s%s\n%s"
,
priceRangesItem
.
minPrice
,
maxPriceStr
,
priceRangesItem
.
recommendPercent
)
val
maxPriceStr
=
if
(
TextUtils
.
isEmpty
(
priceRangesItem
.
maxPrice
))
"+"
else
"-"
+
priceRangesItem
.
maxPrice
val
contentStr
=
String
.
format
(
"%s%s\n%s"
,
priceRangesItem
.
minPrice
,
maxPriceStr
,
priceRangesItem
.
recommendPercent
)
val
msp
=
SpannableString
(
contentStr
)
msp
.
setSpan
(
AbsoluteSizeSpan
(
10
,
true
),
contentStr
.
indexOf
(
"\n"
),
contentStr
.
length
,
Spanned
.
SPAN_EXCLUSIVE_EXCLUSIVE
)
msp
.
setSpan
(
AbsoluteSizeSpan
(
10
,
true
),
contentStr
.
indexOf
(
"\n"
),
contentStr
.
length
,
Spanned
.
SPAN_EXCLUSIVE_EXCLUSIVE
)
textView
.
text
=
msp
;
...
...
@@ -540,7 +641,8 @@ class FilterPopupWindow(private val context: Context, private val filterData: Fi
etMaxPrice
?.
setText
(
""
)
etMinPrice
?.
setText
(
""
)
}
else
{
tempFilter
.
priceRanges
=
priceRangesItem
.
copy
(
priceRangesItem
.
minPrice
,
priceRangesItem
.
maxPrice
)
tempFilter
.
priceRanges
=
priceRangesItem
.
copy
(
priceRangesItem
.
minPrice
,
priceRangesItem
.
maxPrice
)
textView
.
isSelected
=
true
textView
.
paint
.
isFakeBoldText
=
true
tempFilter
.
priceRangesView
=
textView
...
...
@@ -583,15 +685,17 @@ class FilterPopupWindow(private val context: Context, private val filterData: Fi
val
marginNum
=
dp5
var
textMarginLeft
=
marginNum
+
(
dp10
+
mWidth
)
*
(
index
%
2
)
Log
.
e
(
"Tag"
,
"----------left=$textMarginLeft"
)
params
.
setMargins
(
textMarginLeft
,
0
,
marginNum
,
marginNum
)
params
.
setMargins
(
textMarginLeft
,
0
,
marginNum
,
marginNum
)
textView
.
layoutParams
=
params
textView
.
text
=
showType
.
value
showTypeViews
.
add
(
textView
)
if
(
showType
==
tempFilter
!!
.
showType
)
{
if
(
showType
==
tempFilter
.
showType
)
{
textView
.
isSelected
=
true
textView
.
paint
.
isFakeBoldText
=
true
}
...
...
@@ -604,7 +708,7 @@ class FilterPopupWindow(private val context: Context, private val filterData: Fi
}
textView
.
isSelected
=
true
textView
.
paint
.
isFakeBoldText
=
true
tempFilter
!!
.
showType
=
showType
tempFilter
.
showType
=
showType
}
updateCount
()
}
...
...
m-consultant/src/main/modular_api/com/yidianling/consultant/api/IConsultantService.kt
View file @
0b9cc604
...
...
@@ -23,11 +23,11 @@ interface IConsultantService: IProvider {
fun
resetConsultAssistantDialogStatus
()
fun
expertSearchIntent
(
activity
:
android
.
app
.
Activity
,
category
:
kotlin
.
Int
,
showType
:
kotlin
.
Int
,
isInitShowHot
:
kotlin
.
Boolean
):
android
.
content
.
Intent
fun
expertSearchIntent
(
activity
:
android
.
app
.
Activity
,
category
:
String
,
showType
:
Int
,
isInitShowHot
:
kotlin
.
Boolean
):
android
.
content
.
Intent
fun
startExpertSearchActivity
(
context
:
Context
,
category
:
Int
,
categoryName
:
String
,
showType
:
Int
)
fun
startExpertSearchActivity
(
context
:
Context
,
category
:
String
,
categoryName
:
String
,
showType
:
Int
)
fun
startExpertSearchActivity
(
mContext
:
Context
,
category
:
Int
)
fun
startExpertSearchActivity
(
mContext
:
Context
,
category
:
String
)
fun
getHotSearch
():
kotlin
.
collections
.
MutableList
<
Keyworks
>
...
...
m-consultant/src/main/res/drawable-xxxhdpi/ic_crowd_close.png
0 → 100644
View file @
0b9cc604
444 Bytes
m-consultant/src/main/res/drawable-xxxhdpi/ic_crowd_open.png
0 → 100644
View file @
0b9cc604
446 Bytes
m-consultant/src/main/res/layout/consultant_layout_search_content.xml
View file @
0b9cc604
<?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:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:orientation=
"vertical"
app:layout_behavior=
"@string/appbar_scrolling_view_behavior"
android:background=
"@color/platform_white"
>
xmlns:app=
"http://schemas.android.com/apk/res-auto"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@color/platform_white"
android:orientation=
"vertical"
app:layout_behavior=
"@string/appbar_scrolling_view_behavior"
>
<com.yidianling.consultant.ui.view.DisInterceptNestedScrollView
android:id=
"@+id/scroll"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:orientation=
"vertical"
>
<!--筛选框-->
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:orientation=
"vertical"
>
<!--筛选框-->
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@color/platform_white"
android:orientation=
"horizontal"
>
<com.ydl.ydlcommon.view.DrawableRightTextView
android:id=
"@+id/tvSubject"
style=
"@style/consultant_FilterTextViewStyle"
android:layout_width=
"0dp"
android:layout_weight=
"1"
android:width=
"0dp"
android:textColor=
"@color/platform_color_242424"
android:drawableEnd=
"@drawable/platform_ic_arrow_drop_down_grey_500_18dp"
android:drawableRight=
"@drawable/platform_ic_arrow_drop_down_grey_500_18dp"
android:text=
"@string/platform_theme"
/>
<com.ydl.ydlcommon.view.DrawableRightTextView
android:id=
"@+id/tvArea"
style=
"@style/consultant_FilterTextViewStyle"
android:layout_width=
"0dp"
android:layout_weight=
"1"
android:width=
"0dp"
android:textColor=
"@color/platform_color_242424"
android:drawableEnd=
"@drawable/platform_ic_arrow_drop_down_grey_500_18dp"
android:drawableRight=
"@drawable/platform_ic_arrow_drop_down_grey_500_18dp"
android:text=
"@string/platform_area"
/>
<com.ydl.ydlcommon.view.DrawableRightTextView
android:id=
"@+id/tvSort"
style=
"@style/consultant_FilterTextViewStyle"
android:layout_width=
"0dp"
android:layout_weight=
"1"
android:width=
"0dp"
android:textColor=
"@color/platform_color_242424"
android:drawableEnd=
"@drawable/platform_ic_arrow_drop_down_grey_500_18dp"
android:drawableRight=
"@drawable/platform_ic_arrow_drop_down_grey_500_18dp"
android:text=
"@string/platform_sort"
/>
<com.ydl.ydlcommon.view.DrawableRightTextView
android:id=
"@+id/tvFilter"
style=
"@style/consultant_FilterTextViewStyle"
android:layout_width=
"0dp"
android:layout_weight=
"1"
android:width=
"0dp"
android:textColor=
"@color/platform_color_242424"
android:drawableEnd=
"@drawable/platform_ic_arrow_drop_down_grey_500_18dp"
android:drawableRight=
"@drawable/platform_ic_arrow_drop_down_grey_500_18dp"
android:text=
"@string/platform_filter"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/lin_filter2"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:paddingLeft=
"10dp"
android:paddingBottom=
"10dp"
android:orientation=
"horizontal"
>
</LinearLayout>
<View
android:layout_width=
"match_parent"
android:layout_height=
"6dp"
android:background=
"@drawable/consult_fillter_bg"
/>
android:background=
"@color/platform_white"
android:orientation=
"horizontal"
>
<com.ydl.ydlcommon.view.DrawableRightTextView
android:id=
"@+id/tvSubject"
style=
"@style/consultant_FilterTextViewStyle"
android:layout_width=
"0dp"
android:layout_weight=
"1"
android:width=
"0dp"
android:drawableEnd=
"@drawable/platform_ic_arrow_drop_down_grey_500_18dp"
android:drawableRight=
"@drawable/platform_ic_arrow_drop_down_grey_500_18dp"
android:text=
"@string/platform_theme"
android:textColor=
"@color/platform_color_242424"
/>
<com.ydl.ydlcommon.view.DrawableRightTextView
android:id=
"@+id/tvArea"
style=
"@style/consultant_FilterTextViewStyle"
android:layout_width=
"0dp"
android:layout_weight=
"1"
android:width=
"0dp"
android:drawableEnd=
"@drawable/platform_ic_arrow_drop_down_grey_500_18dp"
android:drawableRight=
"@drawable/platform_ic_arrow_drop_down_grey_500_18dp"
android:text=
"@string/platform_area"
android:textColor=
"@color/platform_color_242424"
/>
<com.ydl.ydlcommon.view.DrawableRightTextView
android:id=
"@+id/tvSort"
style=
"@style/consultant_FilterTextViewStyle"
android:layout_width=
"0dp"
android:layout_weight=
"1"
android:width=
"0dp"
android:drawableEnd=
"@drawable/platform_ic_arrow_drop_down_grey_500_18dp"
android:drawableRight=
"@drawable/platform_ic_arrow_drop_down_grey_500_18dp"
android:text=
"@string/platform_sort"
android:textColor=
"@color/platform_color_242424"
/>
<com.ydl.ydlcommon.view.DrawableRightTextView
android:id=
"@+id/tvFilter"
style=
"@style/consultant_FilterTextViewStyle"
android:layout_width=
"0dp"
android:layout_weight=
"1"
android:width=
"0dp"
android:drawableEnd=
"@drawable/platform_ic_arrow_drop_down_grey_500_18dp"
android:drawableRight=
"@drawable/platform_ic_arrow_drop_down_grey_500_18dp"
android:text=
"@string/platform_filter"
android:textColor=
"@color/platform_color_242424"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/lin_filter2"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:orientation=
"horizontal"
android:paddingLeft=
"10dp"
android:paddingBottom=
"10dp"
></LinearLayout>
<View
android:layout_width=
"match_parent"
android:layout_height=
"6dp"
android:background=
"@drawable/consult_fillter_bg"
/>
</LinearLayout>
</com.yidianling.consultant.ui.view.DisInterceptNestedScrollView>
<RelativeLayout
...
...
@@ -96,46 +94,43 @@
android:id=
"@+id/viewSep2"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:background=
"@color/transparent"
/>
android:background=
"@color/transparent"
/>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/rvExperts"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"@color/platform_white"
android:overScrollMode=
"never"
/>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/rvExperts"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"@color/platform_white"
android:overScrollMode=
"never"
/>
<com.ydl.ydlcommon.ui.LogoLoadingView
android:id=
"@+id/v_loading"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:visibility=
"gone"
/>
android:visibility=
"gone"
/>
<LinearLayout
android:id=
"@+id/ll_network_error"
android:layout_width=
"match_parent"
android:layout_height=
"400dp"
android:orientation=
"vertical"
android:background=
"@color/platform_white"
android:gravity=
"center_horizontal"
android:
visibility=
"gone
"
>
android:
orientation=
"vertical
"
android:visibility=
"gone"
>
<ImageView
android:id=
"@+id/iv_exception"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:src=
"@drawable/consultant_img_netwrok_error"
/>
android:src=
"@drawable/consultant_img_netwrok_error"
/>
<TextView
android:id=
"@+id/tv_reload_hint"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"@string/consultant_reload_hint"
/>
android:text=
"@string/consultant_reload_hint"
/>
<TextView
android:id=
"@+id/tv_reload"
...
...
@@ -148,7 +143,7 @@
android:paddingRight=
"@dimen/platform_dp_32"
android:paddingBottom=
"@dimen/platform_dp_8"
android:text=
"重新加载"
android:textColor=
"@color/platform_main_theme"
/>
android:textColor=
"@color/platform_main_theme"
/>
</LinearLayout>
<ImageButton
...
...
@@ -162,14 +157,13 @@
android:background=
"@color/platform_transparent"
android:padding=
"0dp"
android:src=
"@drawable/consultant_ico_totop"
android:visibility=
"gone"
/>
android:visibility=
"gone"
/>
<View
android:id=
"@+id/viewDim"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"#40000000"
android:visibility=
"invisible"
/>
android:visibility=
"invisible"
/>
</RelativeLayout>
</LinearLayout>
m-consultant/src/main/res/layout/consultant_ui_filter_popup.xml
View file @
0b9cc604
<?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:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"@color/platform_white"
android:orientation=
"vertical"
>
<ScrollView
android:id=
"@+id/sv_filter"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:background=
"@color/platform_white"
android:overScrollMode=
"never"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"11dp"
android:layout_marginTop=
"@dimen/platform_dp_20"
android:orientation=
"vertical"
>
<TextView
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"@dimen/platform_dp_5"
android:layout_marginTop=
"@dimen/platform_dp_20"
android:text=
"显示方式"
android:textColor=
"@color/platform_color_242424"
android:textSize=
"@dimen/platform_dp_16"
android:textStyle=
"bold"
android:visibility=
"gone"
/>
<FrameLayout
android:id=
"@+id/flShowType"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"12dp"
android:visibility=
"gone"
/>
<TextView
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"@dimen/platform_dp_5"
android:layout_marginTop=
"@dimen/platform_dp_28"
android:text=
"咨询方式"
android:textColor=
"@color/platform_color_242424"
android:textSize=
"@dimen/platform_dp_16"
android:textStyle=
"bold"
/>
<FrameLayout
android:id=
"@+id/flEnquiryType"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"12dp"
/>
<TextView
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"@dimen/platform_dp_5"
android:layout_marginTop=
"@dimen/platform_dp_28"
android:text=
"服务均价"
android:textColor=
"@color/platform_color_242424"
android:textSize=
"@dimen/platform_dp_16"
android:textStyle=
"bold"
/>
<FrameLayout
android:id=
"@+id/flPriceRange"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"12dp"
/>
<TextView
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"@dimen/platform_dp_5"
android:layout_marginTop=
"@dimen/platform_dp_28"
android:text=
"年龄选择"
android:textColor=
"@color/platform_color_242424"
android:textSize=
"@dimen/platform_dp_16"
android:textStyle=
"bold"
/>
<FrameLayout
android:id=
"@+id/flAge"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"12dp"
/>
<TextView
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"@dimen/platform_dp_5"
android:layout_marginTop=
"@dimen/platform_dp_28"
android:text=
"资质选择"
android:textColor=
"@color/platform_color_242424"
android:textSize=
"@dimen/platform_dp_16"
android:textStyle=
"bold"
/>
<cn.lankton.flowlayout.FlowLayout
android:id=
"@+id/flZhizi"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"12dp"
android:paddingLeft=
"5dp"
app:lineSpacing=
"10dp"
/>
<TextView
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"@dimen/platform_dp_5"
android:layout_marginTop=
"@dimen/platform_dp_28"
android:text=
"其他选择"
android:textColor=
"@color/platform_color_242424"
android:textSize=
"@dimen/platform_dp_16"
android:textStyle=
"bold"
/>
<FrameLayout
android:id=
"@+id/flOther"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"12dp"
android:layout_marginBottom=
"40dp"
/>
</LinearLayout>
</ScrollView>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"15dp"
android:layout_marginRight=
"15dp"
android:layout_marginBottom=
"15dp"
android:layout_marginTop=
"10dp"
android:background=
"@color/platform_white"
android:orientation=
"horizontal"
>
<TextView
android:id=
"@+id/btnReset"
android:layout_width=
"0dp"
android:layout_height=
"44dp"
android:layout_weight=
"1"
android:background=
"@drawable/consultant_bg_radius_gray_6"
android:gravity=
"center"
android:text=
"@string/platform_reset"
android:textColor=
"@color/platform_color_999999"
android:textSize=
"16sp"
/>
<TextView
android:id=
"@+id/btnConfirm"
android:layout_width=
"0dp"
android:layout_height=
"44dp"
android:layout_marginStart=
"10dp"
android:layout_marginLeft=
"10dp"
android:layout_weight=
"2"
android:background=
"@drawable/consultant_bg_radius_5_light"
android:gravity=
"center"
android:hint=
"暂无匹配咨询师"
android:textColorHint=
"@color/platform_color_E0E0E0"
android:textColor=
"@color/platform_but_text_color"
android:textSize=
"16sp"
/>
</LinearLayout>
</LinearLayout>
<?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"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"@color/platform_white"
android:orientation=
"vertical"
>
<ScrollView
android:id=
"@+id/sv_filter"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_weight=
"1"
android:background=
"@color/platform_white"
android:overScrollMode=
"never"
android:scrollbars=
"none"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"8dp"
android:orientation=
"vertical"
>
<TextView
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"@dimen/platform_dp_5"
android:layout_marginTop=
"@dimen/platform_dp_20"
android:text=
"显示方式"
android:textColor=
"@color/platform_color_242424"
android:textSize=
"@dimen/platform_dp_16"
android:textStyle=
"bold"
android:visibility=
"gone"
/>
<FrameLayout
android:id=
"@+id/flShowType"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"12dp"
android:visibility=
"gone"
/>
<TextView
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/platform_dp_28"
android:text=
"咨询方式"
android:textColor=
"@color/platform_color_242424"
android:textSize=
"@dimen/platform_dp_16"
android:textStyle=
"bold"
/>
<FrameLayout
android:id=
"@+id/flEnquiryType"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"12dp"
/>
<TextView
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/platform_dp_28"
android:text=
"服务均价"
android:textColor=
"@color/platform_color_242424"
android:textSize=
"@dimen/platform_dp_16"
android:textStyle=
"bold"
/>
<FrameLayout
android:id=
"@+id/flPriceRange"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"12dp"
/>
<TextView
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/platform_dp_28"
android:text=
"年龄选择"
android:textColor=
"@color/platform_color_242424"
android:textSize=
"@dimen/platform_dp_16"
android:textStyle=
"bold"
/>
<FrameLayout
android:id=
"@+id/flAge"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"12dp"
/>
<TextView
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/platform_dp_28"
android:text=
"资质选择"
android:textColor=
"@color/platform_color_242424"
android:textSize=
"@dimen/platform_dp_16"
android:textStyle=
"bold"
/>
<cn.lankton.flowlayout.FlowLayout
android:id=
"@+id/flZhizi"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"12dp"
android:paddingLeft=
"5dp"
app:lineSpacing=
"10dp"
/>
<TextView
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"28dp"
android:text=
"擅长人群"
android:textColor=
"@color/platform_color_242424"
android:textSize=
"16sp"
android:textStyle=
"bold"
/>
<cn.lankton.flowlayout.FlowLayout
android:id=
"@+id/fl_crowd"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"12dp"
android:paddingLeft=
"5dp"
app:lineSpacing=
"10dp"
/>
<LinearLayout
android:id=
"@+id/ll_crowd_more"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"24dp"
android:gravity=
"center"
android:orientation=
"horizontal"
android:visibility=
"gone"
tools:ignore=
"MissingConstraints"
tools:visibility=
"visible"
>
<TextView
android:id=
"@+id/tv_crowd_open"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"展开"
android:textSize=
"12sp"
android:textColor=
"@color/platform_color_666666"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
/>
<ImageView
android:id=
"@+id/iv_crowd_open"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:src=
"@drawable/ic_crowd_open"
/>
</LinearLayout>
<TextView
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/platform_dp_28"
android:text=
"其他选择"
android:textColor=
"@color/platform_color_242424"
android:textSize=
"@dimen/platform_dp_16"
android:textStyle=
"bold"
/>
<FrameLayout
android:id=
"@+id/flOther"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"12dp"
android:layout_marginBottom=
"40dp"
/>
</LinearLayout>
</ScrollView>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"15dp"
android:layout_marginTop=
"10dp"
android:layout_marginRight=
"15dp"
android:layout_marginBottom=
"15dp"
android:background=
"@color/platform_white"
android:orientation=
"horizontal"
>
<TextView
android:id=
"@+id/btnReset"
android:layout_width=
"0dp"
android:layout_height=
"44dp"
android:layout_weight=
"1"
android:background=
"@drawable/consultant_bg_radius_gray_6"
android:gravity=
"center"
android:text=
"@string/platform_reset"
android:textColor=
"@color/platform_color_999999"
android:textSize=
"16sp"
/>
<TextView
android:id=
"@+id/btnConfirm"
android:layout_width=
"0dp"
android:layout_height=
"44dp"
android:layout_marginStart=
"10dp"
android:layout_marginLeft=
"10dp"
android:layout_weight=
"1"
android:background=
"@drawable/consultant_bg_radius_5_light"
android:gravity=
"center"
android:hint=
"暂无匹配咨询师"
android:textColor=
"@color/platform_but_text_color"
android:textColorHint=
"@color/platform_color_E0E0E0"
android:textSize=
"16sp"
/>
</LinearLayout>
</LinearLayout>
m-dynamic/src/main/java/com/yidianling/dynamic/router/DynamicIn.kt
View file @
0b9cc604
...
...
@@ -78,7 +78,7 @@ object DynamicIn {
fun
getUserInfo
():
UserResponseBean
.
UserInfo
?
=
getUserService
().
getUserInfo
()
fun
loginWayIntent
(
activity
:
Activity
):
Intent
?
{
fun
loginWayIntent
(
activity
:
Activity
):
Intent
{
return
getUserService
().
loginWayIntent
(
activity
)
}
...
...
@@ -86,7 +86,7 @@ object DynamicIn {
getAppService
().
personalInfoIntent
(
activity
)
}
fun
inputPhoneIntent
(
activity
:
Activity
,
smsAction
:
String
):
Intent
?
{
fun
inputPhoneIntent
(
activity
:
Activity
,
smsAction
:
String
):
Intent
{
return
getUserService
().
inputPhoneIntent
(
activity
,
smsAction
)
}
...
...
@@ -104,7 +104,7 @@ object DynamicIn {
showType
:
Int
,
isInitShowHot
:
Boolean
):
Intent
?
{
return
getConsultService
().
expertSearchIntent
(
activity
,
category
,
showType
,
isInitShowHot
)
return
getConsultService
().
expertSearchIntent
(
activity
,
category
.
toString
()
,
showType
,
isInitShowHot
)
}
fun
testResultH5
(
testResultId
:
Int
)
{
...
...
@@ -115,11 +115,11 @@ object DynamicIn {
getTestsService
().
testDetailH5
(
testId
.
toString
());
}
fun
phoneCallIntent
(
activity
:
Activity
):
Intent
?
{
fun
phoneCallIntent
(
activity
:
Activity
):
Intent
{
return
getConfideService
().
phoneCallIntent
(
activity
)
}
fun
fmDetailIntent
(
activity
:
Activity
,
fmId
:
Int
):
Intent
?
{
fun
fmDetailIntent
(
activity
:
Activity
,
fmId
:
Int
):
Intent
{
return
getFMService
().
fmDetailIntent
(
activity
,
fmId
)
}
...
...
@@ -131,7 +131,7 @@ object DynamicIn {
getAppService
().
rechargeIntent
(
activity
)
}
fun
phoneCallFragment
(
head
:
String
,
callId
:
String
):
DialogFragment
?
{
fun
phoneCallFragment
(
head
:
String
,
callId
:
String
):
DialogFragment
{
return
getConfideService
().
phoneCallFragment
(
head
,
callId
)
}
...
...
@@ -141,11 +141,11 @@ object DynamicIn {
}
fun
isFmPlaying
():
Boolean
{
return
getFMService
().
isPlaying
()
?:
false
return
getFMService
().
isPlaying
()
}
fun
isCoursePlaying
():
Boolean
{
return
getCourseService
().
isPlaying
()
?:
false
return
getCourseService
().
isPlaying
()
}
fun
playCourse
()
{
...
...
m-home/src/main/java/com/yidianling/home/http/HomeBaseHttp.kt
View file @
0b9cc604
...
...
@@ -39,7 +39,7 @@ class HomeBaseHttp {
//首页头部 分类&Banner 请求
fun
newHomeHeaderRequest
():
Observable
<
BaseAPIResponse
<
HomeHeaderBean
>>
{
return
getHomePagerApi
().
getHomeHeaderData
()
return
getHomePagerApi
().
getHomeHeaderData
(
2
)
}
//首页倾述请求
...
...
m-home/src/main/java/com/yidianling/home/http/HomeBasePagerApi.kt
View file @
0b9cc604
...
...
@@ -25,7 +25,7 @@ interface HomeBasePagerApi {
*/
@GET
(
"home/index"
)
@Headers
(
YDL_DOMAIN
+
YDL_DOMAIN_JAVA
)
fun
getHomeHeaderData
():
Observable
<
BaseAPIResponse
<
HomeHeaderBean
>>
fun
getHomeHeaderData
(
@Query
(
"cateSource"
)
cateSource
:
Int
):
Observable
<
BaseAPIResponse
<
HomeHeaderBean
>>
/**
* 首页咨询请求
...
...
m-im/src/main/java/com/yidianling/im/ui/page/fragment/ChatFragment.kt
View file @
0b9cc604
...
...
@@ -287,7 +287,7 @@ class ChatFragment : BaseFragment(), XRecyclerView.LoadingListener {
ll_chat_unusual_view
.
setListener
(
object
:
ChatUnusualView
.
ChatUnusualListener
{
override
fun
onButtonClick
()
{
startActivity
(
ImIn
.
getConsultService
().
expertSearchIntent
(
activity
!!
,
0
,
0
,
false
)
ImIn
.
getConsultService
().
expertSearchIntent
(
activity
!!
,
"0"
,
0
,
false
)
)
}
})
...
...
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