diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt deleted file mode 100644 index e016832..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.qd.smartwell.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.casic.qd.smartwell.R -import com.qmuiteam.qmui.util.QMUIDisplayHelper - - -/** - * 可删减九宫格 - * */ -@SuppressLint("NotifyDataSetChanged") -class NineGridImageAdapter(private val context: Context) : - RecyclerView.Adapter() { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt deleted file mode 100644 index e016832..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.qd.smartwell.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.casic.qd.smartwell.R -import com.qmuiteam.qmui.util.QMUIDisplayHelper - - -/** - * 可删减九宫格 - * */ -@SuppressLint("NotifyDataSetChanged") -class NineGridImageAdapter(private val context: Context) : - RecyclerView.Adapter() { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt deleted file mode 100644 index e016832..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.qd.smartwell.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.casic.qd.smartwell.R -import com.qmuiteam.qmui.util.QMUIDisplayHelper - - -/** - * 可删减九宫格 - * */ -@SuppressLint("NotifyDataSetChanged") -class NineGridImageAdapter(private val context: Context) : - RecyclerView.Adapter() { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 3a226ca..c67e61a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.* @@ -15,7 +14,7 @@ * PublicKey校验 */ @GET("/config/baseConfig") - suspend fun obtainPublicKey(): PublicKeyModel + suspend fun authenticate(): String /** * 登录并获取Token @@ -26,7 +25,7 @@ */ @FormUrlEncoded @POST("/user/login") - suspend fun obtainLoginResult( + suspend fun login( @Field("sid") sid: String, @Field("username") account: String, @Field("password") secretKey: String diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt deleted file mode 100644 index e016832..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.qd.smartwell.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.casic.qd.smartwell.R -import com.qmuiteam.qmui.util.QMUIDisplayHelper - - -/** - * 可删减九宫格 - * */ -@SuppressLint("NotifyDataSetChanged") -class NineGridImageAdapter(private val context: Context) : - RecyclerView.Adapter() { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 3a226ca..c67e61a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.* @@ -15,7 +14,7 @@ * PublicKey校验 */ @GET("/config/baseConfig") - suspend fun obtainPublicKey(): PublicKeyModel + suspend fun authenticate(): String /** * 登录并获取Token @@ -26,7 +25,7 @@ */ @FormUrlEncoded @POST("/user/login") - suspend fun obtainLoginResult( + suspend fun login( @Field("sid") sid: String, @Field("username") account: String, @Field("password") secretKey: String diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 8a35a50..237af66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory @@ -23,15 +22,15 @@ /** * 验证PublicKey */ - suspend fun authenticate(): PublicKeyModel { - return api.obtainPublicKey() + suspend fun authenticate(): String { + return api.authenticate() } /** * 登录并获取Token */ suspend fun login(sid: String, account: String, secretKey: String): String { - return api.obtainLoginResult(sid, account, secretKey) + return api.login(sid, account, secretKey) } /** diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt deleted file mode 100644 index e016832..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.qd.smartwell.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.casic.qd.smartwell.R -import com.qmuiteam.qmui.util.QMUIDisplayHelper - - -/** - * 可删减九宫格 - * */ -@SuppressLint("NotifyDataSetChanged") -class NineGridImageAdapter(private val context: Context) : - RecyclerView.Adapter() { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 3a226ca..c67e61a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.* @@ -15,7 +14,7 @@ * PublicKey校验 */ @GET("/config/baseConfig") - suspend fun obtainPublicKey(): PublicKeyModel + suspend fun authenticate(): String /** * 登录并获取Token @@ -26,7 +25,7 @@ */ @FormUrlEncoded @POST("/user/login") - suspend fun obtainLoginResult( + suspend fun login( @Field("sid") sid: String, @Field("username") account: String, @Field("password") secretKey: String diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 8a35a50..237af66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory @@ -23,15 +22,15 @@ /** * 验证PublicKey */ - suspend fun authenticate(): PublicKeyModel { - return api.obtainPublicKey() + suspend fun authenticate(): String { + return api.authenticate() } /** * 登录并获取Token */ suspend fun login(sid: String, account: String, secretKey: String): String { - return api.obtainLoginResult(sid, account, secretKey) + return api.login(sid, account, secretKey) } /** diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 976811c..85370c5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -6,13 +6,16 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -20,7 +23,7 @@ import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmManagementActivity : BaseActivity() { +class AlarmManagementActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -35,6 +38,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "当前告警" rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt deleted file mode 100644 index e016832..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.qd.smartwell.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.casic.qd.smartwell.R -import com.qmuiteam.qmui.util.QMUIDisplayHelper - - -/** - * 可删减九宫格 - * */ -@SuppressLint("NotifyDataSetChanged") -class NineGridImageAdapter(private val context: Context) : - RecyclerView.Adapter() { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 3a226ca..c67e61a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.* @@ -15,7 +14,7 @@ * PublicKey校验 */ @GET("/config/baseConfig") - suspend fun obtainPublicKey(): PublicKeyModel + suspend fun authenticate(): String /** * 登录并获取Token @@ -26,7 +25,7 @@ */ @FormUrlEncoded @POST("/user/login") - suspend fun obtainLoginResult( + suspend fun login( @Field("sid") sid: String, @Field("username") account: String, @Field("password") secretKey: String diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 8a35a50..237af66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory @@ -23,15 +22,15 @@ /** * 验证PublicKey */ - suspend fun authenticate(): PublicKeyModel { - return api.obtainPublicKey() + suspend fun authenticate(): String { + return api.authenticate() } /** * 登录并获取Token */ suspend fun login(sid: String, account: String, secretKey: String): String { - return api.obtainLoginResult(sid, account, secretKey) + return api.login(sid, account, secretKey) } /** diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 976811c..85370c5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -6,13 +6,16 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -20,7 +23,7 @@ import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmManagementActivity : BaseActivity() { +class AlarmManagementActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -35,6 +38,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "当前告警" rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index f27d4d3..f9e8fbc 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -6,14 +6,17 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.SearchResultViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -21,7 +24,7 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmSearchResultActivity : BaseActivity() { +class AlarmSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchAlarmViewModel: SearchResultViewModel @@ -38,6 +41,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "查询结果" } @@ -91,12 +97,14 @@ }) searchAlarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt deleted file mode 100644 index e016832..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.qd.smartwell.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.casic.qd.smartwell.R -import com.qmuiteam.qmui.util.QMUIDisplayHelper - - -/** - * 可删减九宫格 - * */ -@SuppressLint("NotifyDataSetChanged") -class NineGridImageAdapter(private val context: Context) : - RecyclerView.Adapter() { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 3a226ca..c67e61a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.* @@ -15,7 +14,7 @@ * PublicKey校验 */ @GET("/config/baseConfig") - suspend fun obtainPublicKey(): PublicKeyModel + suspend fun authenticate(): String /** * 登录并获取Token @@ -26,7 +25,7 @@ */ @FormUrlEncoded @POST("/user/login") - suspend fun obtainLoginResult( + suspend fun login( @Field("sid") sid: String, @Field("username") account: String, @Field("password") secretKey: String diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 8a35a50..237af66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory @@ -23,15 +22,15 @@ /** * 验证PublicKey */ - suspend fun authenticate(): PublicKeyModel { - return api.obtainPublicKey() + suspend fun authenticate(): String { + return api.authenticate() } /** * 登录并获取Token */ suspend fun login(sid: String, account: String, secretKey: String): String { - return api.obtainLoginResult(sid, account, secretKey) + return api.login(sid, account, secretKey) } /** diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 976811c..85370c5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -6,13 +6,16 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -20,7 +23,7 @@ import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmManagementActivity : BaseActivity() { +class AlarmManagementActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -35,6 +38,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "当前告警" rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index f27d4d3..f9e8fbc 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -6,14 +6,17 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.SearchResultViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -21,7 +24,7 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmSearchResultActivity : BaseActivity() { +class AlarmSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchAlarmViewModel: SearchResultViewModel @@ -38,6 +41,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "查询结果" } @@ -91,12 +97,14 @@ }) searchAlarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 597e793..40240d5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.view; import android.content.Context +import android.graphics.Color import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -9,10 +10,8 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.photoview.PhotoView -import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager @@ -20,13 +19,13 @@ import java.util.* -class BigImageActivity : BaseActivity() { +class BigImageActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_big_image override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, R.color.black.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, Color.BLACK) + leftBackView.setOnClickListener { finish() } } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt deleted file mode 100644 index e016832..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.qd.smartwell.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.casic.qd.smartwell.R -import com.qmuiteam.qmui.util.QMUIDisplayHelper - - -/** - * 可删减九宫格 - * */ -@SuppressLint("NotifyDataSetChanged") -class NineGridImageAdapter(private val context: Context) : - RecyclerView.Adapter() { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 3a226ca..c67e61a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.* @@ -15,7 +14,7 @@ * PublicKey校验 */ @GET("/config/baseConfig") - suspend fun obtainPublicKey(): PublicKeyModel + suspend fun authenticate(): String /** * 登录并获取Token @@ -26,7 +25,7 @@ */ @FormUrlEncoded @POST("/user/login") - suspend fun obtainLoginResult( + suspend fun login( @Field("sid") sid: String, @Field("username") account: String, @Field("password") secretKey: String diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 8a35a50..237af66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory @@ -23,15 +22,15 @@ /** * 验证PublicKey */ - suspend fun authenticate(): PublicKeyModel { - return api.obtainPublicKey() + suspend fun authenticate(): String { + return api.authenticate() } /** * 登录并获取Token */ suspend fun login(sid: String, account: String, secretKey: String): String { - return api.obtainLoginResult(sid, account, secretKey) + return api.login(sid, account, secretKey) } /** diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 976811c..85370c5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -6,13 +6,16 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -20,7 +23,7 @@ import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmManagementActivity : BaseActivity() { +class AlarmManagementActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -35,6 +38,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "当前告警" rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index f27d4d3..f9e8fbc 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -6,14 +6,17 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.SearchResultViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -21,7 +24,7 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmSearchResultActivity : BaseActivity() { +class AlarmSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchAlarmViewModel: SearchResultViewModel @@ -38,6 +41,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "查询结果" } @@ -91,12 +97,14 @@ }) searchAlarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 597e793..40240d5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.view; import android.content.Context +import android.graphics.Color import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -9,10 +10,8 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.photoview.PhotoView -import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager @@ -20,13 +19,13 @@ import java.util.* -class BigImageActivity : BaseActivity() { +class BigImageActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_big_image override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, R.color.black.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, Color.BLACK) + leftBackView.setOnClickListener { finish() } } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 6e35c09..7660a79 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -2,22 +2,24 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.timestampToLastWeekTime import com.pengxh.kt.lite.extensions.timestampToTime +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_device_data_detail.* import kotlinx.android.synthetic.main.activity_main.rightOptionView import kotlinx.android.synthetic.main.activity_main.titleView -class DeviceDataDetailActivity : BaseActivity() { +class DeviceDataDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDataDetailActivity" private lateinit var deviceCode: String @@ -26,6 +28,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_data_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } deviceCode = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! titleView.text = String.format("${deviceCode}历史数据") diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt deleted file mode 100644 index e016832..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.qd.smartwell.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.casic.qd.smartwell.R -import com.qmuiteam.qmui.util.QMUIDisplayHelper - - -/** - * 可删减九宫格 - * */ -@SuppressLint("NotifyDataSetChanged") -class NineGridImageAdapter(private val context: Context) : - RecyclerView.Adapter() { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 3a226ca..c67e61a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.* @@ -15,7 +14,7 @@ * PublicKey校验 */ @GET("/config/baseConfig") - suspend fun obtainPublicKey(): PublicKeyModel + suspend fun authenticate(): String /** * 登录并获取Token @@ -26,7 +25,7 @@ */ @FormUrlEncoded @POST("/user/login") - suspend fun obtainLoginResult( + suspend fun login( @Field("sid") sid: String, @Field("username") account: String, @Field("password") secretKey: String diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 8a35a50..237af66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory @@ -23,15 +22,15 @@ /** * 验证PublicKey */ - suspend fun authenticate(): PublicKeyModel { - return api.obtainPublicKey() + suspend fun authenticate(): String { + return api.authenticate() } /** * 登录并获取Token */ suspend fun login(sid: String, account: String, secretKey: String): String { - return api.obtainLoginResult(sid, account, secretKey) + return api.login(sid, account, secretKey) } /** diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 976811c..85370c5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -6,13 +6,16 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -20,7 +23,7 @@ import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmManagementActivity : BaseActivity() { +class AlarmManagementActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -35,6 +38,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "当前告警" rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index f27d4d3..f9e8fbc 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -6,14 +6,17 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.SearchResultViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -21,7 +24,7 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmSearchResultActivity : BaseActivity() { +class AlarmSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchAlarmViewModel: SearchResultViewModel @@ -38,6 +41,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "查询结果" } @@ -91,12 +97,14 @@ }) searchAlarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 597e793..40240d5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.view; import android.content.Context +import android.graphics.Color import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -9,10 +10,8 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.photoview.PhotoView -import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager @@ -20,13 +19,13 @@ import java.util.* -class BigImageActivity : BaseActivity() { +class BigImageActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_big_image override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, R.color.black.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, Color.BLACK) + leftBackView.setOnClickListener { finish() } } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 6e35c09..7660a79 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -2,22 +2,24 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.timestampToLastWeekTime import com.pengxh.kt.lite.extensions.timestampToTime +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_device_data_detail.* import kotlinx.android.synthetic.main.activity_main.rightOptionView import kotlinx.android.synthetic.main.activity_main.titleView -class DeviceDataDetailActivity : BaseActivity() { +class DeviceDataDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDataDetailActivity" private lateinit var deviceCode: String @@ -26,6 +28,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_data_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } deviceCode = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! titleView.text = String.format("${deviceCode}历史数据") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index dc5e200..e681958 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -8,20 +8,21 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.LoginViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper import kotlinx.android.synthetic.main.activity_login.* -// TODO 修改登录逻辑,参考四分公司 -class LoginActivity : BaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel @@ -48,8 +49,8 @@ override fun initLayoutView(): Int = R.layout.activity_login override fun setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this) + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) } override fun initData() { @@ -102,7 +103,7 @@ val dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!) //登录并获取Token,POST请求 - loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey) + loginViewModel.enter(it.data!!.sid!!, account, dataByPublicKey) loginViewModel.resultModel.observe(this, { loginResult -> if (loginResult.code == 200) { AuthenticationHelper.saveToken(loginResult.data!!.token!!) @@ -121,20 +122,15 @@ }) loginViewModel.loadState.observe(this, { loginState -> when (loginState) { - is LoadState.Success -> { - "登录成功".show(this) - DialogHelper.dismissLoadingDialog() + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "登录中,请稍后...") } else -> { - "登录失败,用户名或密码错误".show(this) DialogHelper.dismissLoadingDialog() } } }) } }) - authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt deleted file mode 100644 index e016832..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.qd.smartwell.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.casic.qd.smartwell.R -import com.qmuiteam.qmui.util.QMUIDisplayHelper - - -/** - * 可删减九宫格 - * */ -@SuppressLint("NotifyDataSetChanged") -class NineGridImageAdapter(private val context: Context) : - RecyclerView.Adapter() { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 3a226ca..c67e61a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.* @@ -15,7 +14,7 @@ * PublicKey校验 */ @GET("/config/baseConfig") - suspend fun obtainPublicKey(): PublicKeyModel + suspend fun authenticate(): String /** * 登录并获取Token @@ -26,7 +25,7 @@ */ @FormUrlEncoded @POST("/user/login") - suspend fun obtainLoginResult( + suspend fun login( @Field("sid") sid: String, @Field("username") account: String, @Field("password") secretKey: String diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 8a35a50..237af66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory @@ -23,15 +22,15 @@ /** * 验证PublicKey */ - suspend fun authenticate(): PublicKeyModel { - return api.obtainPublicKey() + suspend fun authenticate(): String { + return api.authenticate() } /** * 登录并获取Token */ suspend fun login(sid: String, account: String, secretKey: String): String { - return api.obtainLoginResult(sid, account, secretKey) + return api.login(sid, account, secretKey) } /** diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 976811c..85370c5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -6,13 +6,16 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -20,7 +23,7 @@ import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmManagementActivity : BaseActivity() { +class AlarmManagementActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -35,6 +38,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "当前告警" rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index f27d4d3..f9e8fbc 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -6,14 +6,17 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.SearchResultViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -21,7 +24,7 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmSearchResultActivity : BaseActivity() { +class AlarmSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchAlarmViewModel: SearchResultViewModel @@ -38,6 +41,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "查询结果" } @@ -91,12 +97,14 @@ }) searchAlarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 597e793..40240d5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.view; import android.content.Context +import android.graphics.Color import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -9,10 +10,8 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.photoview.PhotoView -import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager @@ -20,13 +19,13 @@ import java.util.* -class BigImageActivity : BaseActivity() { +class BigImageActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_big_image override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, R.color.black.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, Color.BLACK) + leftBackView.setOnClickListener { finish() } } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 6e35c09..7660a79 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -2,22 +2,24 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.timestampToLastWeekTime import com.pengxh.kt.lite.extensions.timestampToTime +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_device_data_detail.* import kotlinx.android.synthetic.main.activity_main.rightOptionView import kotlinx.android.synthetic.main.activity_main.titleView -class DeviceDataDetailActivity : BaseActivity() { +class DeviceDataDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDataDetailActivity" private lateinit var deviceCode: String @@ -26,6 +28,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_data_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } deviceCode = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! titleView.text = String.format("${deviceCode}历史数据") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index dc5e200..e681958 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -8,20 +8,21 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.LoginViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper import kotlinx.android.synthetic.main.activity_login.* -// TODO 修改登录逻辑,参考四分公司 -class LoginActivity : BaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel @@ -48,8 +49,8 @@ override fun initLayoutView(): Int = R.layout.activity_login override fun setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this) + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) } override fun initData() { @@ -102,7 +103,7 @@ val dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!) //登录并获取Token,POST请求 - loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey) + loginViewModel.enter(it.data!!.sid!!, account, dataByPublicKey) loginViewModel.resultModel.observe(this, { loginResult -> if (loginResult.code == 200) { AuthenticationHelper.saveToken(loginResult.data!!.token!!) @@ -121,20 +122,15 @@ }) loginViewModel.loadState.observe(this, { loginState -> when (loginState) { - is LoadState.Success -> { - "登录成功".show(this) - DialogHelper.dismissLoadingDialog() + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "登录中,请稍后...") } else -> { - "登录失败,用户名或密码错误".show(this) DialogHelper.dismissLoadingDialog() } } }) } }) - authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index b0f3847..704e484 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -13,7 +13,6 @@ import com.bumptech.glide.Glide import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.HomeRecycleAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.model.LineChartEntryModel @@ -26,7 +25,10 @@ import com.google.android.material.navigation.NavigationView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState @@ -49,7 +51,7 @@ import java.util.* import kotlin.collections.ArrayList -class MainActivity : BaseActivity(), DrawerLayout.DrawerListener, +class MainActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener, NavigationView.OnNavigationItemSelectedListener { private val kTag = "MainActivity" @@ -64,7 +66,23 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = resources.getString(R.string.app_name) + + leftOptionView.setOnClickListener { + if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { + leftDrawerLayout.closeDrawer(GravityCompat.START) + } else { + leftDrawerLayout.openDrawer(GravityCompat.START) + } + } + leftDrawerLayout.addDrawerListener(this) + + rightOptionView.setOnClickListener { + navigatePageTo() + } } override fun initData() { @@ -149,18 +167,13 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) + + waterViewModel.waterStatistics() } override fun initEvent() { - leftOptionView.setOnClickListener { - if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { - leftDrawerLayout.closeDrawer(GravityCompat.START) - } else { - leftDrawerLayout.openDrawer(GravityCompat.START) - } - } - leftDrawerLayout.addDrawerListener(this) navigationView.setNavigationItemSelectedListener(this) + loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -169,11 +182,6 @@ } }) - rightOptionView.setOnClickListener { - navigatePageTo() - } - - waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt deleted file mode 100644 index e016832..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.qd.smartwell.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.casic.qd.smartwell.R -import com.qmuiteam.qmui.util.QMUIDisplayHelper - - -/** - * 可删减九宫格 - * */ -@SuppressLint("NotifyDataSetChanged") -class NineGridImageAdapter(private val context: Context) : - RecyclerView.Adapter() { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 3a226ca..c67e61a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.* @@ -15,7 +14,7 @@ * PublicKey校验 */ @GET("/config/baseConfig") - suspend fun obtainPublicKey(): PublicKeyModel + suspend fun authenticate(): String /** * 登录并获取Token @@ -26,7 +25,7 @@ */ @FormUrlEncoded @POST("/user/login") - suspend fun obtainLoginResult( + suspend fun login( @Field("sid") sid: String, @Field("username") account: String, @Field("password") secretKey: String diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 8a35a50..237af66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory @@ -23,15 +22,15 @@ /** * 验证PublicKey */ - suspend fun authenticate(): PublicKeyModel { - return api.obtainPublicKey() + suspend fun authenticate(): String { + return api.authenticate() } /** * 登录并获取Token */ suspend fun login(sid: String, account: String, secretKey: String): String { - return api.obtainLoginResult(sid, account, secretKey) + return api.login(sid, account, secretKey) } /** diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 976811c..85370c5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -6,13 +6,16 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -20,7 +23,7 @@ import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmManagementActivity : BaseActivity() { +class AlarmManagementActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -35,6 +38,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "当前告警" rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index f27d4d3..f9e8fbc 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -6,14 +6,17 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.SearchResultViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -21,7 +24,7 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmSearchResultActivity : BaseActivity() { +class AlarmSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchAlarmViewModel: SearchResultViewModel @@ -38,6 +41,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "查询结果" } @@ -91,12 +97,14 @@ }) searchAlarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 597e793..40240d5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.view; import android.content.Context +import android.graphics.Color import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -9,10 +10,8 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.photoview.PhotoView -import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager @@ -20,13 +19,13 @@ import java.util.* -class BigImageActivity : BaseActivity() { +class BigImageActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_big_image override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, R.color.black.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, Color.BLACK) + leftBackView.setOnClickListener { finish() } } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 6e35c09..7660a79 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -2,22 +2,24 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.timestampToLastWeekTime import com.pengxh.kt.lite.extensions.timestampToTime +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_device_data_detail.* import kotlinx.android.synthetic.main.activity_main.rightOptionView import kotlinx.android.synthetic.main.activity_main.titleView -class DeviceDataDetailActivity : BaseActivity() { +class DeviceDataDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDataDetailActivity" private lateinit var deviceCode: String @@ -26,6 +28,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_data_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } deviceCode = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! titleView.text = String.format("${deviceCode}历史数据") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index dc5e200..e681958 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -8,20 +8,21 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.LoginViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper import kotlinx.android.synthetic.main.activity_login.* -// TODO 修改登录逻辑,参考四分公司 -class LoginActivity : BaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel @@ -48,8 +49,8 @@ override fun initLayoutView(): Int = R.layout.activity_login override fun setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this) + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) } override fun initData() { @@ -102,7 +103,7 @@ val dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!) //登录并获取Token,POST请求 - loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey) + loginViewModel.enter(it.data!!.sid!!, account, dataByPublicKey) loginViewModel.resultModel.observe(this, { loginResult -> if (loginResult.code == 200) { AuthenticationHelper.saveToken(loginResult.data!!.token!!) @@ -121,20 +122,15 @@ }) loginViewModel.loadState.observe(this, { loginState -> when (loginState) { - is LoadState.Success -> { - "登录成功".show(this) - DialogHelper.dismissLoadingDialog() + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "登录中,请稍后...") } else -> { - "登录失败,用户名或密码错误".show(this) DialogHelper.dismissLoadingDialog() } } }) } }) - authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index b0f3847..704e484 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -13,7 +13,6 @@ import com.bumptech.glide.Glide import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.HomeRecycleAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.model.LineChartEntryModel @@ -26,7 +25,10 @@ import com.google.android.material.navigation.NavigationView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState @@ -49,7 +51,7 @@ import java.util.* import kotlin.collections.ArrayList -class MainActivity : BaseActivity(), DrawerLayout.DrawerListener, +class MainActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener, NavigationView.OnNavigationItemSelectedListener { private val kTag = "MainActivity" @@ -64,7 +66,23 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = resources.getString(R.string.app_name) + + leftOptionView.setOnClickListener { + if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { + leftDrawerLayout.closeDrawer(GravityCompat.START) + } else { + leftDrawerLayout.openDrawer(GravityCompat.START) + } + } + leftDrawerLayout.addDrawerListener(this) + + rightOptionView.setOnClickListener { + navigatePageTo() + } } override fun initData() { @@ -149,18 +167,13 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) + + waterViewModel.waterStatistics() } override fun initEvent() { - leftOptionView.setOnClickListener { - if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { - leftDrawerLayout.closeDrawer(GravityCompat.START) - } else { - leftDrawerLayout.openDrawer(GravityCompat.START) - } - } - leftDrawerLayout.addDrawerListener(this) navigationView.setNavigationItemSelectedListener(this) + loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -169,11 +182,6 @@ } }) - rightOptionView.setOnClickListener { - navigatePageTo() - } - - waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index d6336d6..1ee58ff 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -14,7 +14,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.MapDeviceListModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -22,9 +21,13 @@ import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -38,7 +41,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class MapActivity : BaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class MapActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "MapActivity" @@ -70,8 +73,12 @@ override fun initLayoutView(): Int = R.layout.activity_map override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt deleted file mode 100644 index e016832..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.qd.smartwell.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.casic.qd.smartwell.R -import com.qmuiteam.qmui.util.QMUIDisplayHelper - - -/** - * 可删减九宫格 - * */ -@SuppressLint("NotifyDataSetChanged") -class NineGridImageAdapter(private val context: Context) : - RecyclerView.Adapter() { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 3a226ca..c67e61a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.* @@ -15,7 +14,7 @@ * PublicKey校验 */ @GET("/config/baseConfig") - suspend fun obtainPublicKey(): PublicKeyModel + suspend fun authenticate(): String /** * 登录并获取Token @@ -26,7 +25,7 @@ */ @FormUrlEncoded @POST("/user/login") - suspend fun obtainLoginResult( + suspend fun login( @Field("sid") sid: String, @Field("username") account: String, @Field("password") secretKey: String diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 8a35a50..237af66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory @@ -23,15 +22,15 @@ /** * 验证PublicKey */ - suspend fun authenticate(): PublicKeyModel { - return api.obtainPublicKey() + suspend fun authenticate(): String { + return api.authenticate() } /** * 登录并获取Token */ suspend fun login(sid: String, account: String, secretKey: String): String { - return api.obtainLoginResult(sid, account, secretKey) + return api.login(sid, account, secretKey) } /** diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 976811c..85370c5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -6,13 +6,16 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -20,7 +23,7 @@ import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmManagementActivity : BaseActivity() { +class AlarmManagementActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -35,6 +38,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "当前告警" rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index f27d4d3..f9e8fbc 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -6,14 +6,17 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.SearchResultViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -21,7 +24,7 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmSearchResultActivity : BaseActivity() { +class AlarmSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchAlarmViewModel: SearchResultViewModel @@ -38,6 +41,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "查询结果" } @@ -91,12 +97,14 @@ }) searchAlarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 597e793..40240d5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.view; import android.content.Context +import android.graphics.Color import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -9,10 +10,8 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.photoview.PhotoView -import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager @@ -20,13 +19,13 @@ import java.util.* -class BigImageActivity : BaseActivity() { +class BigImageActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_big_image override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, R.color.black.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, Color.BLACK) + leftBackView.setOnClickListener { finish() } } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 6e35c09..7660a79 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -2,22 +2,24 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.timestampToLastWeekTime import com.pengxh.kt.lite.extensions.timestampToTime +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_device_data_detail.* import kotlinx.android.synthetic.main.activity_main.rightOptionView import kotlinx.android.synthetic.main.activity_main.titleView -class DeviceDataDetailActivity : BaseActivity() { +class DeviceDataDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDataDetailActivity" private lateinit var deviceCode: String @@ -26,6 +28,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_data_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } deviceCode = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! titleView.text = String.format("${deviceCode}历史数据") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index dc5e200..e681958 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -8,20 +8,21 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.LoginViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper import kotlinx.android.synthetic.main.activity_login.* -// TODO 修改登录逻辑,参考四分公司 -class LoginActivity : BaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel @@ -48,8 +49,8 @@ override fun initLayoutView(): Int = R.layout.activity_login override fun setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this) + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) } override fun initData() { @@ -102,7 +103,7 @@ val dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!) //登录并获取Token,POST请求 - loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey) + loginViewModel.enter(it.data!!.sid!!, account, dataByPublicKey) loginViewModel.resultModel.observe(this, { loginResult -> if (loginResult.code == 200) { AuthenticationHelper.saveToken(loginResult.data!!.token!!) @@ -121,20 +122,15 @@ }) loginViewModel.loadState.observe(this, { loginState -> when (loginState) { - is LoadState.Success -> { - "登录成功".show(this) - DialogHelper.dismissLoadingDialog() + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "登录中,请稍后...") } else -> { - "登录失败,用户名或密码错误".show(this) DialogHelper.dismissLoadingDialog() } } }) } }) - authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index b0f3847..704e484 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -13,7 +13,6 @@ import com.bumptech.glide.Glide import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.HomeRecycleAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.model.LineChartEntryModel @@ -26,7 +25,10 @@ import com.google.android.material.navigation.NavigationView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState @@ -49,7 +51,7 @@ import java.util.* import kotlin.collections.ArrayList -class MainActivity : BaseActivity(), DrawerLayout.DrawerListener, +class MainActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener, NavigationView.OnNavigationItemSelectedListener { private val kTag = "MainActivity" @@ -64,7 +66,23 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = resources.getString(R.string.app_name) + + leftOptionView.setOnClickListener { + if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { + leftDrawerLayout.closeDrawer(GravityCompat.START) + } else { + leftDrawerLayout.openDrawer(GravityCompat.START) + } + } + leftDrawerLayout.addDrawerListener(this) + + rightOptionView.setOnClickListener { + navigatePageTo() + } } override fun initData() { @@ -149,18 +167,13 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) + + waterViewModel.waterStatistics() } override fun initEvent() { - leftOptionView.setOnClickListener { - if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { - leftDrawerLayout.closeDrawer(GravityCompat.START) - } else { - leftDrawerLayout.openDrawer(GravityCompat.START) - } - } - leftDrawerLayout.addDrawerListener(this) navigationView.setNavigationItemSelectedListener(this) + loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -169,11 +182,6 @@ } }) - rightOptionView.setOnClickListener { - navigatePageTo() - } - - waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index d6336d6..1ee58ff 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -14,7 +14,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.MapDeviceListModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -22,9 +21,13 @@ import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -38,7 +41,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class MapActivity : BaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class MapActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "MapActivity" @@ -70,8 +73,12 @@ override fun initLayoutView(): Int = R.layout.activity_map override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index b386373..809e6c0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,22 +5,24 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_completed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderCompletedDetailActivity : BaseActivity() { +class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -28,6 +30,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt deleted file mode 100644 index e016832..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.qd.smartwell.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.casic.qd.smartwell.R -import com.qmuiteam.qmui.util.QMUIDisplayHelper - - -/** - * 可删减九宫格 - * */ -@SuppressLint("NotifyDataSetChanged") -class NineGridImageAdapter(private val context: Context) : - RecyclerView.Adapter() { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 3a226ca..c67e61a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.* @@ -15,7 +14,7 @@ * PublicKey校验 */ @GET("/config/baseConfig") - suspend fun obtainPublicKey(): PublicKeyModel + suspend fun authenticate(): String /** * 登录并获取Token @@ -26,7 +25,7 @@ */ @FormUrlEncoded @POST("/user/login") - suspend fun obtainLoginResult( + suspend fun login( @Field("sid") sid: String, @Field("username") account: String, @Field("password") secretKey: String diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 8a35a50..237af66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory @@ -23,15 +22,15 @@ /** * 验证PublicKey */ - suspend fun authenticate(): PublicKeyModel { - return api.obtainPublicKey() + suspend fun authenticate(): String { + return api.authenticate() } /** * 登录并获取Token */ suspend fun login(sid: String, account: String, secretKey: String): String { - return api.obtainLoginResult(sid, account, secretKey) + return api.login(sid, account, secretKey) } /** diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 976811c..85370c5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -6,13 +6,16 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -20,7 +23,7 @@ import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmManagementActivity : BaseActivity() { +class AlarmManagementActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -35,6 +38,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "当前告警" rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index f27d4d3..f9e8fbc 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -6,14 +6,17 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.SearchResultViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -21,7 +24,7 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmSearchResultActivity : BaseActivity() { +class AlarmSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchAlarmViewModel: SearchResultViewModel @@ -38,6 +41,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "查询结果" } @@ -91,12 +97,14 @@ }) searchAlarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 597e793..40240d5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.view; import android.content.Context +import android.graphics.Color import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -9,10 +10,8 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.photoview.PhotoView -import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager @@ -20,13 +19,13 @@ import java.util.* -class BigImageActivity : BaseActivity() { +class BigImageActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_big_image override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, R.color.black.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, Color.BLACK) + leftBackView.setOnClickListener { finish() } } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 6e35c09..7660a79 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -2,22 +2,24 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.timestampToLastWeekTime import com.pengxh.kt.lite.extensions.timestampToTime +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_device_data_detail.* import kotlinx.android.synthetic.main.activity_main.rightOptionView import kotlinx.android.synthetic.main.activity_main.titleView -class DeviceDataDetailActivity : BaseActivity() { +class DeviceDataDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDataDetailActivity" private lateinit var deviceCode: String @@ -26,6 +28,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_data_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } deviceCode = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! titleView.text = String.format("${deviceCode}历史数据") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index dc5e200..e681958 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -8,20 +8,21 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.LoginViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper import kotlinx.android.synthetic.main.activity_login.* -// TODO 修改登录逻辑,参考四分公司 -class LoginActivity : BaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel @@ -48,8 +49,8 @@ override fun initLayoutView(): Int = R.layout.activity_login override fun setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this) + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) } override fun initData() { @@ -102,7 +103,7 @@ val dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!) //登录并获取Token,POST请求 - loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey) + loginViewModel.enter(it.data!!.sid!!, account, dataByPublicKey) loginViewModel.resultModel.observe(this, { loginResult -> if (loginResult.code == 200) { AuthenticationHelper.saveToken(loginResult.data!!.token!!) @@ -121,20 +122,15 @@ }) loginViewModel.loadState.observe(this, { loginState -> when (loginState) { - is LoadState.Success -> { - "登录成功".show(this) - DialogHelper.dismissLoadingDialog() + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "登录中,请稍后...") } else -> { - "登录失败,用户名或密码错误".show(this) DialogHelper.dismissLoadingDialog() } } }) } }) - authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index b0f3847..704e484 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -13,7 +13,6 @@ import com.bumptech.glide.Glide import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.HomeRecycleAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.model.LineChartEntryModel @@ -26,7 +25,10 @@ import com.google.android.material.navigation.NavigationView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState @@ -49,7 +51,7 @@ import java.util.* import kotlin.collections.ArrayList -class MainActivity : BaseActivity(), DrawerLayout.DrawerListener, +class MainActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener, NavigationView.OnNavigationItemSelectedListener { private val kTag = "MainActivity" @@ -64,7 +66,23 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = resources.getString(R.string.app_name) + + leftOptionView.setOnClickListener { + if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { + leftDrawerLayout.closeDrawer(GravityCompat.START) + } else { + leftDrawerLayout.openDrawer(GravityCompat.START) + } + } + leftDrawerLayout.addDrawerListener(this) + + rightOptionView.setOnClickListener { + navigatePageTo() + } } override fun initData() { @@ -149,18 +167,13 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) + + waterViewModel.waterStatistics() } override fun initEvent() { - leftOptionView.setOnClickListener { - if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { - leftDrawerLayout.closeDrawer(GravityCompat.START) - } else { - leftDrawerLayout.openDrawer(GravityCompat.START) - } - } - leftDrawerLayout.addDrawerListener(this) navigationView.setNavigationItemSelectedListener(this) + loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -169,11 +182,6 @@ } }) - rightOptionView.setOnClickListener { - navigatePageTo() - } - - waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index d6336d6..1ee58ff 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -14,7 +14,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.MapDeviceListModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -22,9 +21,13 @@ import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -38,7 +41,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class MapActivity : BaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class MapActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "MapActivity" @@ -70,8 +73,12 @@ override fun initLayoutView(): Int = R.layout.activity_map override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index b386373..809e6c0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,22 +5,24 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_completed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderCompletedDetailActivity : BaseActivity() { +class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -28,6 +30,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index 8653564..76f8077 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -9,41 +9,41 @@ import android.view.View import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderInHandleDetailActivity : BaseActivity() { +class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private val context: Context = this@OrderInHandleDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,6 +52,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -59,16 +62,14 @@ override fun initData() { val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!!//初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) - workOrderViewModel.obtainWorkOrderDetail(jobId) } @@ -240,7 +241,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -274,7 +275,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //处理完成工单状态处理 @@ -330,7 +338,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -393,22 +400,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt deleted file mode 100644 index e016832..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.qd.smartwell.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.casic.qd.smartwell.R -import com.qmuiteam.qmui.util.QMUIDisplayHelper - - -/** - * 可删减九宫格 - * */ -@SuppressLint("NotifyDataSetChanged") -class NineGridImageAdapter(private val context: Context) : - RecyclerView.Adapter() { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 3a226ca..c67e61a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.* @@ -15,7 +14,7 @@ * PublicKey校验 */ @GET("/config/baseConfig") - suspend fun obtainPublicKey(): PublicKeyModel + suspend fun authenticate(): String /** * 登录并获取Token @@ -26,7 +25,7 @@ */ @FormUrlEncoded @POST("/user/login") - suspend fun obtainLoginResult( + suspend fun login( @Field("sid") sid: String, @Field("username") account: String, @Field("password") secretKey: String diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 8a35a50..237af66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory @@ -23,15 +22,15 @@ /** * 验证PublicKey */ - suspend fun authenticate(): PublicKeyModel { - return api.obtainPublicKey() + suspend fun authenticate(): String { + return api.authenticate() } /** * 登录并获取Token */ suspend fun login(sid: String, account: String, secretKey: String): String { - return api.obtainLoginResult(sid, account, secretKey) + return api.login(sid, account, secretKey) } /** diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 976811c..85370c5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -6,13 +6,16 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -20,7 +23,7 @@ import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmManagementActivity : BaseActivity() { +class AlarmManagementActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -35,6 +38,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "当前告警" rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index f27d4d3..f9e8fbc 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -6,14 +6,17 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.SearchResultViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -21,7 +24,7 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmSearchResultActivity : BaseActivity() { +class AlarmSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchAlarmViewModel: SearchResultViewModel @@ -38,6 +41,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "查询结果" } @@ -91,12 +97,14 @@ }) searchAlarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 597e793..40240d5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.view; import android.content.Context +import android.graphics.Color import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -9,10 +10,8 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.photoview.PhotoView -import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager @@ -20,13 +19,13 @@ import java.util.* -class BigImageActivity : BaseActivity() { +class BigImageActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_big_image override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, R.color.black.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, Color.BLACK) + leftBackView.setOnClickListener { finish() } } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 6e35c09..7660a79 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -2,22 +2,24 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.timestampToLastWeekTime import com.pengxh.kt.lite.extensions.timestampToTime +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_device_data_detail.* import kotlinx.android.synthetic.main.activity_main.rightOptionView import kotlinx.android.synthetic.main.activity_main.titleView -class DeviceDataDetailActivity : BaseActivity() { +class DeviceDataDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDataDetailActivity" private lateinit var deviceCode: String @@ -26,6 +28,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_data_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } deviceCode = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! titleView.text = String.format("${deviceCode}历史数据") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index dc5e200..e681958 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -8,20 +8,21 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.LoginViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper import kotlinx.android.synthetic.main.activity_login.* -// TODO 修改登录逻辑,参考四分公司 -class LoginActivity : BaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel @@ -48,8 +49,8 @@ override fun initLayoutView(): Int = R.layout.activity_login override fun setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this) + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) } override fun initData() { @@ -102,7 +103,7 @@ val dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!) //登录并获取Token,POST请求 - loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey) + loginViewModel.enter(it.data!!.sid!!, account, dataByPublicKey) loginViewModel.resultModel.observe(this, { loginResult -> if (loginResult.code == 200) { AuthenticationHelper.saveToken(loginResult.data!!.token!!) @@ -121,20 +122,15 @@ }) loginViewModel.loadState.observe(this, { loginState -> when (loginState) { - is LoadState.Success -> { - "登录成功".show(this) - DialogHelper.dismissLoadingDialog() + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "登录中,请稍后...") } else -> { - "登录失败,用户名或密码错误".show(this) DialogHelper.dismissLoadingDialog() } } }) } }) - authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index b0f3847..704e484 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -13,7 +13,6 @@ import com.bumptech.glide.Glide import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.HomeRecycleAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.model.LineChartEntryModel @@ -26,7 +25,10 @@ import com.google.android.material.navigation.NavigationView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState @@ -49,7 +51,7 @@ import java.util.* import kotlin.collections.ArrayList -class MainActivity : BaseActivity(), DrawerLayout.DrawerListener, +class MainActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener, NavigationView.OnNavigationItemSelectedListener { private val kTag = "MainActivity" @@ -64,7 +66,23 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = resources.getString(R.string.app_name) + + leftOptionView.setOnClickListener { + if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { + leftDrawerLayout.closeDrawer(GravityCompat.START) + } else { + leftDrawerLayout.openDrawer(GravityCompat.START) + } + } + leftDrawerLayout.addDrawerListener(this) + + rightOptionView.setOnClickListener { + navigatePageTo() + } } override fun initData() { @@ -149,18 +167,13 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) + + waterViewModel.waterStatistics() } override fun initEvent() { - leftOptionView.setOnClickListener { - if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { - leftDrawerLayout.closeDrawer(GravityCompat.START) - } else { - leftDrawerLayout.openDrawer(GravityCompat.START) - } - } - leftDrawerLayout.addDrawerListener(this) navigationView.setNavigationItemSelectedListener(this) + loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -169,11 +182,6 @@ } }) - rightOptionView.setOnClickListener { - navigatePageTo() - } - - waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index d6336d6..1ee58ff 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -14,7 +14,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.MapDeviceListModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -22,9 +21,13 @@ import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -38,7 +41,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class MapActivity : BaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class MapActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "MapActivity" @@ -70,8 +73,12 @@ override fun initLayoutView(): Int = R.layout.activity_map override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index b386373..809e6c0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,22 +5,24 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_completed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderCompletedDetailActivity : BaseActivity() { +class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -28,6 +30,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index 8653564..76f8077 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -9,41 +9,41 @@ import android.view.View import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderInHandleDetailActivity : BaseActivity() { +class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private val context: Context = this@OrderInHandleDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,6 +52,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -59,16 +62,14 @@ override fun initData() { val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!!//初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) - workOrderViewModel.obtainWorkOrderDetail(jobId) } @@ -240,7 +241,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -274,7 +275,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //处理完成工单状态处理 @@ -330,7 +338,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -393,22 +400,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index fa5a469..483307d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -3,30 +3,36 @@ import androidx.fragment.app.Fragment import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.TopViewPagerAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.fragment.OrderCompletedFragment import com.casic.qd.smartwell.fragment.OrderInHandleFragment import com.casic.qd.smartwell.fragment.OrderNotConfirmedFragment import com.casic.qd.smartwell.fragment.OrderNotProcessedFragment import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_order_management.* import java.util.* -class OrderManagementActivity : BaseActivity() { +class OrderManagementActivity : KotlinBaseActivity() { - private var fragmentList: ArrayList = ArrayList() + private var fragmentPages: ArrayList = ArrayList() init { - fragmentList.add(OrderNotProcessedFragment())//待处理 - fragmentList.add(OrderNotConfirmedFragment())//待确认 - fragmentList.add(OrderInHandleFragment())//处理中 - fragmentList.add(OrderCompletedFragment())//已完成 + fragmentPages.add(OrderNotProcessedFragment())//待处理 + fragmentPages.add(OrderNotConfirmedFragment())//待确认 + fragmentPages.add(OrderInHandleFragment())//处理中 + fragmentPages.add(OrderCompletedFragment())//已完成 } override fun initLayoutView(): Int = R.layout.activity_order_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "工单管理" rightOptionView.setOnClickListener { @@ -36,9 +42,9 @@ override fun initData() { val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentList + supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) - orderViewPager.offscreenPageLimit = fragmentList.size + orderViewPager.offscreenPageLimit = fragmentPages.size orderViewPager.adapter = topViewPagerAdapter orderTabLayout.setupWithViewPager(orderViewPager) } diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt deleted file mode 100644 index e016832..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.qd.smartwell.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.casic.qd.smartwell.R -import com.qmuiteam.qmui.util.QMUIDisplayHelper - - -/** - * 可删减九宫格 - * */ -@SuppressLint("NotifyDataSetChanged") -class NineGridImageAdapter(private val context: Context) : - RecyclerView.Adapter() { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 3a226ca..c67e61a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.* @@ -15,7 +14,7 @@ * PublicKey校验 */ @GET("/config/baseConfig") - suspend fun obtainPublicKey(): PublicKeyModel + suspend fun authenticate(): String /** * 登录并获取Token @@ -26,7 +25,7 @@ */ @FormUrlEncoded @POST("/user/login") - suspend fun obtainLoginResult( + suspend fun login( @Field("sid") sid: String, @Field("username") account: String, @Field("password") secretKey: String diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 8a35a50..237af66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory @@ -23,15 +22,15 @@ /** * 验证PublicKey */ - suspend fun authenticate(): PublicKeyModel { - return api.obtainPublicKey() + suspend fun authenticate(): String { + return api.authenticate() } /** * 登录并获取Token */ suspend fun login(sid: String, account: String, secretKey: String): String { - return api.obtainLoginResult(sid, account, secretKey) + return api.login(sid, account, secretKey) } /** diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 976811c..85370c5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -6,13 +6,16 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -20,7 +23,7 @@ import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmManagementActivity : BaseActivity() { +class AlarmManagementActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -35,6 +38,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "当前告警" rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index f27d4d3..f9e8fbc 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -6,14 +6,17 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.SearchResultViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -21,7 +24,7 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmSearchResultActivity : BaseActivity() { +class AlarmSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchAlarmViewModel: SearchResultViewModel @@ -38,6 +41,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "查询结果" } @@ -91,12 +97,14 @@ }) searchAlarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 597e793..40240d5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.view; import android.content.Context +import android.graphics.Color import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -9,10 +10,8 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.photoview.PhotoView -import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager @@ -20,13 +19,13 @@ import java.util.* -class BigImageActivity : BaseActivity() { +class BigImageActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_big_image override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, R.color.black.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, Color.BLACK) + leftBackView.setOnClickListener { finish() } } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 6e35c09..7660a79 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -2,22 +2,24 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.timestampToLastWeekTime import com.pengxh.kt.lite.extensions.timestampToTime +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_device_data_detail.* import kotlinx.android.synthetic.main.activity_main.rightOptionView import kotlinx.android.synthetic.main.activity_main.titleView -class DeviceDataDetailActivity : BaseActivity() { +class DeviceDataDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDataDetailActivity" private lateinit var deviceCode: String @@ -26,6 +28,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_data_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } deviceCode = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! titleView.text = String.format("${deviceCode}历史数据") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index dc5e200..e681958 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -8,20 +8,21 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.LoginViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper import kotlinx.android.synthetic.main.activity_login.* -// TODO 修改登录逻辑,参考四分公司 -class LoginActivity : BaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel @@ -48,8 +49,8 @@ override fun initLayoutView(): Int = R.layout.activity_login override fun setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this) + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) } override fun initData() { @@ -102,7 +103,7 @@ val dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!) //登录并获取Token,POST请求 - loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey) + loginViewModel.enter(it.data!!.sid!!, account, dataByPublicKey) loginViewModel.resultModel.observe(this, { loginResult -> if (loginResult.code == 200) { AuthenticationHelper.saveToken(loginResult.data!!.token!!) @@ -121,20 +122,15 @@ }) loginViewModel.loadState.observe(this, { loginState -> when (loginState) { - is LoadState.Success -> { - "登录成功".show(this) - DialogHelper.dismissLoadingDialog() + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "登录中,请稍后...") } else -> { - "登录失败,用户名或密码错误".show(this) DialogHelper.dismissLoadingDialog() } } }) } }) - authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index b0f3847..704e484 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -13,7 +13,6 @@ import com.bumptech.glide.Glide import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.HomeRecycleAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.model.LineChartEntryModel @@ -26,7 +25,10 @@ import com.google.android.material.navigation.NavigationView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState @@ -49,7 +51,7 @@ import java.util.* import kotlin.collections.ArrayList -class MainActivity : BaseActivity(), DrawerLayout.DrawerListener, +class MainActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener, NavigationView.OnNavigationItemSelectedListener { private val kTag = "MainActivity" @@ -64,7 +66,23 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = resources.getString(R.string.app_name) + + leftOptionView.setOnClickListener { + if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { + leftDrawerLayout.closeDrawer(GravityCompat.START) + } else { + leftDrawerLayout.openDrawer(GravityCompat.START) + } + } + leftDrawerLayout.addDrawerListener(this) + + rightOptionView.setOnClickListener { + navigatePageTo() + } } override fun initData() { @@ -149,18 +167,13 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) + + waterViewModel.waterStatistics() } override fun initEvent() { - leftOptionView.setOnClickListener { - if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { - leftDrawerLayout.closeDrawer(GravityCompat.START) - } else { - leftDrawerLayout.openDrawer(GravityCompat.START) - } - } - leftDrawerLayout.addDrawerListener(this) navigationView.setNavigationItemSelectedListener(this) + loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -169,11 +182,6 @@ } }) - rightOptionView.setOnClickListener { - navigatePageTo() - } - - waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index d6336d6..1ee58ff 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -14,7 +14,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.MapDeviceListModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -22,9 +21,13 @@ import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -38,7 +41,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class MapActivity : BaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class MapActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "MapActivity" @@ -70,8 +73,12 @@ override fun initLayoutView(): Int = R.layout.activity_map override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index b386373..809e6c0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,22 +5,24 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_completed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderCompletedDetailActivity : BaseActivity() { +class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -28,6 +30,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index 8653564..76f8077 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -9,41 +9,41 @@ import android.view.View import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderInHandleDetailActivity : BaseActivity() { +class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private val context: Context = this@OrderInHandleDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,6 +52,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -59,16 +62,14 @@ override fun initData() { val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!!//初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) - workOrderViewModel.obtainWorkOrderDetail(jobId) } @@ -240,7 +241,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -274,7 +275,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //处理完成工单状态处理 @@ -330,7 +338,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -393,22 +400,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index fa5a469..483307d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -3,30 +3,36 @@ import androidx.fragment.app.Fragment import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.TopViewPagerAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.fragment.OrderCompletedFragment import com.casic.qd.smartwell.fragment.OrderInHandleFragment import com.casic.qd.smartwell.fragment.OrderNotConfirmedFragment import com.casic.qd.smartwell.fragment.OrderNotProcessedFragment import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_order_management.* import java.util.* -class OrderManagementActivity : BaseActivity() { +class OrderManagementActivity : KotlinBaseActivity() { - private var fragmentList: ArrayList = ArrayList() + private var fragmentPages: ArrayList = ArrayList() init { - fragmentList.add(OrderNotProcessedFragment())//待处理 - fragmentList.add(OrderNotConfirmedFragment())//待确认 - fragmentList.add(OrderInHandleFragment())//处理中 - fragmentList.add(OrderCompletedFragment())//已完成 + fragmentPages.add(OrderNotProcessedFragment())//待处理 + fragmentPages.add(OrderNotConfirmedFragment())//待确认 + fragmentPages.add(OrderInHandleFragment())//处理中 + fragmentPages.add(OrderCompletedFragment())//已完成 } override fun initLayoutView(): Int = R.layout.activity_order_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "工单管理" rightOptionView.setOnClickListener { @@ -36,9 +42,9 @@ override fun initData() { val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentList + supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) - orderViewPager.offscreenPageLimit = fragmentList.size + orderViewPager.offscreenPageLimit = fragmentPages.size orderViewPager.adapter = topViewPagerAdapter orderTabLayout.setupWithViewPager(orderViewPager) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index 0b5e1d1..dd87a66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -8,42 +8,41 @@ import android.util.Log import android.view.View import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderNotConfirmedDetailActivity : BaseActivity() { +class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,23 +51,26 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } } override fun initData() { - jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) + workOrderViewModel.obtainWorkOrderDetail(jobId) } override fun initEvent() { @@ -93,7 +95,6 @@ } }) - workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -204,7 +205,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -238,7 +239,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //确认工单状态处理 @@ -262,6 +270,7 @@ BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(arrayListOf("拍照", "相册")) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { @@ -293,7 +302,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -356,22 +364,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt deleted file mode 100644 index e016832..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.qd.smartwell.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.casic.qd.smartwell.R -import com.qmuiteam.qmui.util.QMUIDisplayHelper - - -/** - * 可删减九宫格 - * */ -@SuppressLint("NotifyDataSetChanged") -class NineGridImageAdapter(private val context: Context) : - RecyclerView.Adapter() { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 3a226ca..c67e61a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.* @@ -15,7 +14,7 @@ * PublicKey校验 */ @GET("/config/baseConfig") - suspend fun obtainPublicKey(): PublicKeyModel + suspend fun authenticate(): String /** * 登录并获取Token @@ -26,7 +25,7 @@ */ @FormUrlEncoded @POST("/user/login") - suspend fun obtainLoginResult( + suspend fun login( @Field("sid") sid: String, @Field("username") account: String, @Field("password") secretKey: String diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 8a35a50..237af66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory @@ -23,15 +22,15 @@ /** * 验证PublicKey */ - suspend fun authenticate(): PublicKeyModel { - return api.obtainPublicKey() + suspend fun authenticate(): String { + return api.authenticate() } /** * 登录并获取Token */ suspend fun login(sid: String, account: String, secretKey: String): String { - return api.obtainLoginResult(sid, account, secretKey) + return api.login(sid, account, secretKey) } /** diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 976811c..85370c5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -6,13 +6,16 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -20,7 +23,7 @@ import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmManagementActivity : BaseActivity() { +class AlarmManagementActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -35,6 +38,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "当前告警" rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index f27d4d3..f9e8fbc 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -6,14 +6,17 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.SearchResultViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -21,7 +24,7 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmSearchResultActivity : BaseActivity() { +class AlarmSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchAlarmViewModel: SearchResultViewModel @@ -38,6 +41,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "查询结果" } @@ -91,12 +97,14 @@ }) searchAlarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 597e793..40240d5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.view; import android.content.Context +import android.graphics.Color import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -9,10 +10,8 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.photoview.PhotoView -import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager @@ -20,13 +19,13 @@ import java.util.* -class BigImageActivity : BaseActivity() { +class BigImageActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_big_image override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, R.color.black.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, Color.BLACK) + leftBackView.setOnClickListener { finish() } } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 6e35c09..7660a79 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -2,22 +2,24 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.timestampToLastWeekTime import com.pengxh.kt.lite.extensions.timestampToTime +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_device_data_detail.* import kotlinx.android.synthetic.main.activity_main.rightOptionView import kotlinx.android.synthetic.main.activity_main.titleView -class DeviceDataDetailActivity : BaseActivity() { +class DeviceDataDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDataDetailActivity" private lateinit var deviceCode: String @@ -26,6 +28,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_data_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } deviceCode = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! titleView.text = String.format("${deviceCode}历史数据") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index dc5e200..e681958 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -8,20 +8,21 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.LoginViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper import kotlinx.android.synthetic.main.activity_login.* -// TODO 修改登录逻辑,参考四分公司 -class LoginActivity : BaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel @@ -48,8 +49,8 @@ override fun initLayoutView(): Int = R.layout.activity_login override fun setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this) + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) } override fun initData() { @@ -102,7 +103,7 @@ val dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!) //登录并获取Token,POST请求 - loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey) + loginViewModel.enter(it.data!!.sid!!, account, dataByPublicKey) loginViewModel.resultModel.observe(this, { loginResult -> if (loginResult.code == 200) { AuthenticationHelper.saveToken(loginResult.data!!.token!!) @@ -121,20 +122,15 @@ }) loginViewModel.loadState.observe(this, { loginState -> when (loginState) { - is LoadState.Success -> { - "登录成功".show(this) - DialogHelper.dismissLoadingDialog() + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "登录中,请稍后...") } else -> { - "登录失败,用户名或密码错误".show(this) DialogHelper.dismissLoadingDialog() } } }) } }) - authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index b0f3847..704e484 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -13,7 +13,6 @@ import com.bumptech.glide.Glide import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.HomeRecycleAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.model.LineChartEntryModel @@ -26,7 +25,10 @@ import com.google.android.material.navigation.NavigationView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState @@ -49,7 +51,7 @@ import java.util.* import kotlin.collections.ArrayList -class MainActivity : BaseActivity(), DrawerLayout.DrawerListener, +class MainActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener, NavigationView.OnNavigationItemSelectedListener { private val kTag = "MainActivity" @@ -64,7 +66,23 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = resources.getString(R.string.app_name) + + leftOptionView.setOnClickListener { + if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { + leftDrawerLayout.closeDrawer(GravityCompat.START) + } else { + leftDrawerLayout.openDrawer(GravityCompat.START) + } + } + leftDrawerLayout.addDrawerListener(this) + + rightOptionView.setOnClickListener { + navigatePageTo() + } } override fun initData() { @@ -149,18 +167,13 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) + + waterViewModel.waterStatistics() } override fun initEvent() { - leftOptionView.setOnClickListener { - if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { - leftDrawerLayout.closeDrawer(GravityCompat.START) - } else { - leftDrawerLayout.openDrawer(GravityCompat.START) - } - } - leftDrawerLayout.addDrawerListener(this) navigationView.setNavigationItemSelectedListener(this) + loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -169,11 +182,6 @@ } }) - rightOptionView.setOnClickListener { - navigatePageTo() - } - - waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index d6336d6..1ee58ff 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -14,7 +14,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.MapDeviceListModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -22,9 +21,13 @@ import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -38,7 +41,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class MapActivity : BaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class MapActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "MapActivity" @@ -70,8 +73,12 @@ override fun initLayoutView(): Int = R.layout.activity_map override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index b386373..809e6c0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,22 +5,24 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_completed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderCompletedDetailActivity : BaseActivity() { +class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -28,6 +30,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index 8653564..76f8077 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -9,41 +9,41 @@ import android.view.View import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderInHandleDetailActivity : BaseActivity() { +class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private val context: Context = this@OrderInHandleDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,6 +52,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -59,16 +62,14 @@ override fun initData() { val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!!//初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) - workOrderViewModel.obtainWorkOrderDetail(jobId) } @@ -240,7 +241,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -274,7 +275,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //处理完成工单状态处理 @@ -330,7 +338,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -393,22 +400,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index fa5a469..483307d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -3,30 +3,36 @@ import androidx.fragment.app.Fragment import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.TopViewPagerAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.fragment.OrderCompletedFragment import com.casic.qd.smartwell.fragment.OrderInHandleFragment import com.casic.qd.smartwell.fragment.OrderNotConfirmedFragment import com.casic.qd.smartwell.fragment.OrderNotProcessedFragment import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_order_management.* import java.util.* -class OrderManagementActivity : BaseActivity() { +class OrderManagementActivity : KotlinBaseActivity() { - private var fragmentList: ArrayList = ArrayList() + private var fragmentPages: ArrayList = ArrayList() init { - fragmentList.add(OrderNotProcessedFragment())//待处理 - fragmentList.add(OrderNotConfirmedFragment())//待确认 - fragmentList.add(OrderInHandleFragment())//处理中 - fragmentList.add(OrderCompletedFragment())//已完成 + fragmentPages.add(OrderNotProcessedFragment())//待处理 + fragmentPages.add(OrderNotConfirmedFragment())//待确认 + fragmentPages.add(OrderInHandleFragment())//处理中 + fragmentPages.add(OrderCompletedFragment())//已完成 } override fun initLayoutView(): Int = R.layout.activity_order_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "工单管理" rightOptionView.setOnClickListener { @@ -36,9 +42,9 @@ override fun initData() { val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentList + supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) - orderViewPager.offscreenPageLimit = fragmentList.size + orderViewPager.offscreenPageLimit = fragmentPages.size orderViewPager.adapter = topViewPagerAdapter orderTabLayout.setupWithViewPager(orderViewPager) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index 0b5e1d1..dd87a66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -8,42 +8,41 @@ import android.util.Log import android.view.View import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderNotConfirmedDetailActivity : BaseActivity() { +class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,23 +51,26 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } } override fun initData() { - jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) + workOrderViewModel.obtainWorkOrderDetail(jobId) } override fun initEvent() { @@ -93,7 +95,6 @@ } }) - workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -204,7 +205,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -238,7 +239,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //确认工单状态处理 @@ -262,6 +270,7 @@ BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(arrayListOf("拍照", "相册")) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { @@ -293,7 +302,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -356,22 +364,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index 63922a1..ac18ef0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,21 +6,24 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Poi import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WellViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderNotProcessedDetailActivity : BaseActivity() { +class OrderNotProcessedDetailActivity : KotlinBaseActivity() { private val context: Context = this@OrderNotProcessedDetailActivity private lateinit var workOrderViewModel: WorkOrderViewModel @@ -30,6 +33,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -147,12 +153,6 @@ } is LoadState.Success -> { DialogHelper.dismissLoadingDialog() - //通知列表刷新数据 -// BroadcastReceiverManager.instance.sendMultiBroadcast( -// Constant.NOT_PROCESSED_ACTION, -// Constant.NOT_CONFIRMED_ACTION, -// Constant.NOT_ACCEPT_ACTION -// ) this.finish() } else -> { diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt deleted file mode 100644 index e016832..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.qd.smartwell.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.casic.qd.smartwell.R -import com.qmuiteam.qmui.util.QMUIDisplayHelper - - -/** - * 可删减九宫格 - * */ -@SuppressLint("NotifyDataSetChanged") -class NineGridImageAdapter(private val context: Context) : - RecyclerView.Adapter() { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 3a226ca..c67e61a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.* @@ -15,7 +14,7 @@ * PublicKey校验 */ @GET("/config/baseConfig") - suspend fun obtainPublicKey(): PublicKeyModel + suspend fun authenticate(): String /** * 登录并获取Token @@ -26,7 +25,7 @@ */ @FormUrlEncoded @POST("/user/login") - suspend fun obtainLoginResult( + suspend fun login( @Field("sid") sid: String, @Field("username") account: String, @Field("password") secretKey: String diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 8a35a50..237af66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory @@ -23,15 +22,15 @@ /** * 验证PublicKey */ - suspend fun authenticate(): PublicKeyModel { - return api.obtainPublicKey() + suspend fun authenticate(): String { + return api.authenticate() } /** * 登录并获取Token */ suspend fun login(sid: String, account: String, secretKey: String): String { - return api.obtainLoginResult(sid, account, secretKey) + return api.login(sid, account, secretKey) } /** diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 976811c..85370c5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -6,13 +6,16 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -20,7 +23,7 @@ import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmManagementActivity : BaseActivity() { +class AlarmManagementActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -35,6 +38,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "当前告警" rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index f27d4d3..f9e8fbc 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -6,14 +6,17 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.SearchResultViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -21,7 +24,7 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmSearchResultActivity : BaseActivity() { +class AlarmSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchAlarmViewModel: SearchResultViewModel @@ -38,6 +41,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "查询结果" } @@ -91,12 +97,14 @@ }) searchAlarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 597e793..40240d5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.view; import android.content.Context +import android.graphics.Color import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -9,10 +10,8 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.photoview.PhotoView -import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager @@ -20,13 +19,13 @@ import java.util.* -class BigImageActivity : BaseActivity() { +class BigImageActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_big_image override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, R.color.black.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, Color.BLACK) + leftBackView.setOnClickListener { finish() } } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 6e35c09..7660a79 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -2,22 +2,24 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.timestampToLastWeekTime import com.pengxh.kt.lite.extensions.timestampToTime +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_device_data_detail.* import kotlinx.android.synthetic.main.activity_main.rightOptionView import kotlinx.android.synthetic.main.activity_main.titleView -class DeviceDataDetailActivity : BaseActivity() { +class DeviceDataDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDataDetailActivity" private lateinit var deviceCode: String @@ -26,6 +28,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_data_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } deviceCode = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! titleView.text = String.format("${deviceCode}历史数据") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index dc5e200..e681958 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -8,20 +8,21 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.LoginViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper import kotlinx.android.synthetic.main.activity_login.* -// TODO 修改登录逻辑,参考四分公司 -class LoginActivity : BaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel @@ -48,8 +49,8 @@ override fun initLayoutView(): Int = R.layout.activity_login override fun setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this) + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) } override fun initData() { @@ -102,7 +103,7 @@ val dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!) //登录并获取Token,POST请求 - loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey) + loginViewModel.enter(it.data!!.sid!!, account, dataByPublicKey) loginViewModel.resultModel.observe(this, { loginResult -> if (loginResult.code == 200) { AuthenticationHelper.saveToken(loginResult.data!!.token!!) @@ -121,20 +122,15 @@ }) loginViewModel.loadState.observe(this, { loginState -> when (loginState) { - is LoadState.Success -> { - "登录成功".show(this) - DialogHelper.dismissLoadingDialog() + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "登录中,请稍后...") } else -> { - "登录失败,用户名或密码错误".show(this) DialogHelper.dismissLoadingDialog() } } }) } }) - authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index b0f3847..704e484 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -13,7 +13,6 @@ import com.bumptech.glide.Glide import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.HomeRecycleAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.model.LineChartEntryModel @@ -26,7 +25,10 @@ import com.google.android.material.navigation.NavigationView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState @@ -49,7 +51,7 @@ import java.util.* import kotlin.collections.ArrayList -class MainActivity : BaseActivity(), DrawerLayout.DrawerListener, +class MainActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener, NavigationView.OnNavigationItemSelectedListener { private val kTag = "MainActivity" @@ -64,7 +66,23 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = resources.getString(R.string.app_name) + + leftOptionView.setOnClickListener { + if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { + leftDrawerLayout.closeDrawer(GravityCompat.START) + } else { + leftDrawerLayout.openDrawer(GravityCompat.START) + } + } + leftDrawerLayout.addDrawerListener(this) + + rightOptionView.setOnClickListener { + navigatePageTo() + } } override fun initData() { @@ -149,18 +167,13 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) + + waterViewModel.waterStatistics() } override fun initEvent() { - leftOptionView.setOnClickListener { - if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { - leftDrawerLayout.closeDrawer(GravityCompat.START) - } else { - leftDrawerLayout.openDrawer(GravityCompat.START) - } - } - leftDrawerLayout.addDrawerListener(this) navigationView.setNavigationItemSelectedListener(this) + loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -169,11 +182,6 @@ } }) - rightOptionView.setOnClickListener { - navigatePageTo() - } - - waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index d6336d6..1ee58ff 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -14,7 +14,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.MapDeviceListModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -22,9 +21,13 @@ import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -38,7 +41,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class MapActivity : BaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class MapActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "MapActivity" @@ -70,8 +73,12 @@ override fun initLayoutView(): Int = R.layout.activity_map override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index b386373..809e6c0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,22 +5,24 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_completed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderCompletedDetailActivity : BaseActivity() { +class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -28,6 +30,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index 8653564..76f8077 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -9,41 +9,41 @@ import android.view.View import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderInHandleDetailActivity : BaseActivity() { +class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private val context: Context = this@OrderInHandleDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,6 +52,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -59,16 +62,14 @@ override fun initData() { val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!!//初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) - workOrderViewModel.obtainWorkOrderDetail(jobId) } @@ -240,7 +241,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -274,7 +275,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //处理完成工单状态处理 @@ -330,7 +338,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -393,22 +400,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index fa5a469..483307d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -3,30 +3,36 @@ import androidx.fragment.app.Fragment import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.TopViewPagerAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.fragment.OrderCompletedFragment import com.casic.qd.smartwell.fragment.OrderInHandleFragment import com.casic.qd.smartwell.fragment.OrderNotConfirmedFragment import com.casic.qd.smartwell.fragment.OrderNotProcessedFragment import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_order_management.* import java.util.* -class OrderManagementActivity : BaseActivity() { +class OrderManagementActivity : KotlinBaseActivity() { - private var fragmentList: ArrayList = ArrayList() + private var fragmentPages: ArrayList = ArrayList() init { - fragmentList.add(OrderNotProcessedFragment())//待处理 - fragmentList.add(OrderNotConfirmedFragment())//待确认 - fragmentList.add(OrderInHandleFragment())//处理中 - fragmentList.add(OrderCompletedFragment())//已完成 + fragmentPages.add(OrderNotProcessedFragment())//待处理 + fragmentPages.add(OrderNotConfirmedFragment())//待确认 + fragmentPages.add(OrderInHandleFragment())//处理中 + fragmentPages.add(OrderCompletedFragment())//已完成 } override fun initLayoutView(): Int = R.layout.activity_order_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "工单管理" rightOptionView.setOnClickListener { @@ -36,9 +42,9 @@ override fun initData() { val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentList + supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) - orderViewPager.offscreenPageLimit = fragmentList.size + orderViewPager.offscreenPageLimit = fragmentPages.size orderViewPager.adapter = topViewPagerAdapter orderTabLayout.setupWithViewPager(orderViewPager) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index 0b5e1d1..dd87a66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -8,42 +8,41 @@ import android.util.Log import android.view.View import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderNotConfirmedDetailActivity : BaseActivity() { +class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,23 +51,26 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } } override fun initData() { - jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) + workOrderViewModel.obtainWorkOrderDetail(jobId) } override fun initEvent() { @@ -93,7 +95,6 @@ } }) - workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -204,7 +205,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -238,7 +239,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //确认工单状态处理 @@ -262,6 +270,7 @@ BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(arrayListOf("拍照", "相册")) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { @@ -293,7 +302,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -356,22 +364,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index 63922a1..ac18ef0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,21 +6,24 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Poi import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WellViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderNotProcessedDetailActivity : BaseActivity() { +class OrderNotProcessedDetailActivity : KotlinBaseActivity() { private val context: Context = this@OrderNotProcessedDetailActivity private lateinit var workOrderViewModel: WorkOrderViewModel @@ -30,6 +33,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -147,12 +153,6 @@ } is LoadState.Success -> { DialogHelper.dismissLoadingDialog() - //通知列表刷新数据 -// BroadcastReceiverManager.instance.sendMultiBroadcast( -// Constant.NOT_PROCESSED_ACTION, -// Constant.NOT_CONFIRMED_ACTION, -// Constant.NOT_ACCEPT_ACTION -// ) this.finish() } else -> { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index b051c34..8b95aa8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -7,15 +7,18 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.SearchResultAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.SearchResultModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -26,7 +29,7 @@ import okhttp3.RequestBody import org.json.JSONObject -class OrderSearchResultActivity : BaseActivity() { +class OrderSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var operationViewModel: OperationViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -42,6 +45,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "查询结果" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -95,12 +101,14 @@ } }) workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt deleted file mode 100644 index e016832..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.qd.smartwell.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.casic.qd.smartwell.R -import com.qmuiteam.qmui.util.QMUIDisplayHelper - - -/** - * 可删减九宫格 - * */ -@SuppressLint("NotifyDataSetChanged") -class NineGridImageAdapter(private val context: Context) : - RecyclerView.Adapter() { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 3a226ca..c67e61a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.* @@ -15,7 +14,7 @@ * PublicKey校验 */ @GET("/config/baseConfig") - suspend fun obtainPublicKey(): PublicKeyModel + suspend fun authenticate(): String /** * 登录并获取Token @@ -26,7 +25,7 @@ */ @FormUrlEncoded @POST("/user/login") - suspend fun obtainLoginResult( + suspend fun login( @Field("sid") sid: String, @Field("username") account: String, @Field("password") secretKey: String diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 8a35a50..237af66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory @@ -23,15 +22,15 @@ /** * 验证PublicKey */ - suspend fun authenticate(): PublicKeyModel { - return api.obtainPublicKey() + suspend fun authenticate(): String { + return api.authenticate() } /** * 登录并获取Token */ suspend fun login(sid: String, account: String, secretKey: String): String { - return api.obtainLoginResult(sid, account, secretKey) + return api.login(sid, account, secretKey) } /** diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 976811c..85370c5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -6,13 +6,16 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -20,7 +23,7 @@ import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmManagementActivity : BaseActivity() { +class AlarmManagementActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -35,6 +38,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "当前告警" rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index f27d4d3..f9e8fbc 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -6,14 +6,17 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.SearchResultViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -21,7 +24,7 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmSearchResultActivity : BaseActivity() { +class AlarmSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchAlarmViewModel: SearchResultViewModel @@ -38,6 +41,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "查询结果" } @@ -91,12 +97,14 @@ }) searchAlarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 597e793..40240d5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.view; import android.content.Context +import android.graphics.Color import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -9,10 +10,8 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.photoview.PhotoView -import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager @@ -20,13 +19,13 @@ import java.util.* -class BigImageActivity : BaseActivity() { +class BigImageActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_big_image override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, R.color.black.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, Color.BLACK) + leftBackView.setOnClickListener { finish() } } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 6e35c09..7660a79 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -2,22 +2,24 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.timestampToLastWeekTime import com.pengxh.kt.lite.extensions.timestampToTime +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_device_data_detail.* import kotlinx.android.synthetic.main.activity_main.rightOptionView import kotlinx.android.synthetic.main.activity_main.titleView -class DeviceDataDetailActivity : BaseActivity() { +class DeviceDataDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDataDetailActivity" private lateinit var deviceCode: String @@ -26,6 +28,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_data_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } deviceCode = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! titleView.text = String.format("${deviceCode}历史数据") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index dc5e200..e681958 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -8,20 +8,21 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.LoginViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper import kotlinx.android.synthetic.main.activity_login.* -// TODO 修改登录逻辑,参考四分公司 -class LoginActivity : BaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel @@ -48,8 +49,8 @@ override fun initLayoutView(): Int = R.layout.activity_login override fun setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this) + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) } override fun initData() { @@ -102,7 +103,7 @@ val dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!) //登录并获取Token,POST请求 - loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey) + loginViewModel.enter(it.data!!.sid!!, account, dataByPublicKey) loginViewModel.resultModel.observe(this, { loginResult -> if (loginResult.code == 200) { AuthenticationHelper.saveToken(loginResult.data!!.token!!) @@ -121,20 +122,15 @@ }) loginViewModel.loadState.observe(this, { loginState -> when (loginState) { - is LoadState.Success -> { - "登录成功".show(this) - DialogHelper.dismissLoadingDialog() + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "登录中,请稍后...") } else -> { - "登录失败,用户名或密码错误".show(this) DialogHelper.dismissLoadingDialog() } } }) } }) - authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index b0f3847..704e484 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -13,7 +13,6 @@ import com.bumptech.glide.Glide import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.HomeRecycleAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.model.LineChartEntryModel @@ -26,7 +25,10 @@ import com.google.android.material.navigation.NavigationView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState @@ -49,7 +51,7 @@ import java.util.* import kotlin.collections.ArrayList -class MainActivity : BaseActivity(), DrawerLayout.DrawerListener, +class MainActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener, NavigationView.OnNavigationItemSelectedListener { private val kTag = "MainActivity" @@ -64,7 +66,23 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = resources.getString(R.string.app_name) + + leftOptionView.setOnClickListener { + if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { + leftDrawerLayout.closeDrawer(GravityCompat.START) + } else { + leftDrawerLayout.openDrawer(GravityCompat.START) + } + } + leftDrawerLayout.addDrawerListener(this) + + rightOptionView.setOnClickListener { + navigatePageTo() + } } override fun initData() { @@ -149,18 +167,13 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) + + waterViewModel.waterStatistics() } override fun initEvent() { - leftOptionView.setOnClickListener { - if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { - leftDrawerLayout.closeDrawer(GravityCompat.START) - } else { - leftDrawerLayout.openDrawer(GravityCompat.START) - } - } - leftDrawerLayout.addDrawerListener(this) navigationView.setNavigationItemSelectedListener(this) + loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -169,11 +182,6 @@ } }) - rightOptionView.setOnClickListener { - navigatePageTo() - } - - waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index d6336d6..1ee58ff 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -14,7 +14,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.MapDeviceListModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -22,9 +21,13 @@ import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -38,7 +41,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class MapActivity : BaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class MapActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "MapActivity" @@ -70,8 +73,12 @@ override fun initLayoutView(): Int = R.layout.activity_map override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index b386373..809e6c0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,22 +5,24 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_completed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderCompletedDetailActivity : BaseActivity() { +class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -28,6 +30,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index 8653564..76f8077 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -9,41 +9,41 @@ import android.view.View import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderInHandleDetailActivity : BaseActivity() { +class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private val context: Context = this@OrderInHandleDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,6 +52,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -59,16 +62,14 @@ override fun initData() { val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!!//初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) - workOrderViewModel.obtainWorkOrderDetail(jobId) } @@ -240,7 +241,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -274,7 +275,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //处理完成工单状态处理 @@ -330,7 +338,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -393,22 +400,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index fa5a469..483307d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -3,30 +3,36 @@ import androidx.fragment.app.Fragment import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.TopViewPagerAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.fragment.OrderCompletedFragment import com.casic.qd.smartwell.fragment.OrderInHandleFragment import com.casic.qd.smartwell.fragment.OrderNotConfirmedFragment import com.casic.qd.smartwell.fragment.OrderNotProcessedFragment import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_order_management.* import java.util.* -class OrderManagementActivity : BaseActivity() { +class OrderManagementActivity : KotlinBaseActivity() { - private var fragmentList: ArrayList = ArrayList() + private var fragmentPages: ArrayList = ArrayList() init { - fragmentList.add(OrderNotProcessedFragment())//待处理 - fragmentList.add(OrderNotConfirmedFragment())//待确认 - fragmentList.add(OrderInHandleFragment())//处理中 - fragmentList.add(OrderCompletedFragment())//已完成 + fragmentPages.add(OrderNotProcessedFragment())//待处理 + fragmentPages.add(OrderNotConfirmedFragment())//待确认 + fragmentPages.add(OrderInHandleFragment())//处理中 + fragmentPages.add(OrderCompletedFragment())//已完成 } override fun initLayoutView(): Int = R.layout.activity_order_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "工单管理" rightOptionView.setOnClickListener { @@ -36,9 +42,9 @@ override fun initData() { val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentList + supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) - orderViewPager.offscreenPageLimit = fragmentList.size + orderViewPager.offscreenPageLimit = fragmentPages.size orderViewPager.adapter = topViewPagerAdapter orderTabLayout.setupWithViewPager(orderViewPager) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index 0b5e1d1..dd87a66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -8,42 +8,41 @@ import android.util.Log import android.view.View import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderNotConfirmedDetailActivity : BaseActivity() { +class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,23 +51,26 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } } override fun initData() { - jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) + workOrderViewModel.obtainWorkOrderDetail(jobId) } override fun initEvent() { @@ -93,7 +95,6 @@ } }) - workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -204,7 +205,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -238,7 +239,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //确认工单状态处理 @@ -262,6 +270,7 @@ BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(arrayListOf("拍照", "相册")) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { @@ -293,7 +302,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -356,22 +364,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index 63922a1..ac18ef0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,21 +6,24 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Poi import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WellViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderNotProcessedDetailActivity : BaseActivity() { +class OrderNotProcessedDetailActivity : KotlinBaseActivity() { private val context: Context = this@OrderNotProcessedDetailActivity private lateinit var workOrderViewModel: WorkOrderViewModel @@ -30,6 +33,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -147,12 +153,6 @@ } is LoadState.Success -> { DialogHelper.dismissLoadingDialog() - //通知列表刷新数据 -// BroadcastReceiverManager.instance.sendMultiBroadcast( -// Constant.NOT_PROCESSED_ACTION, -// Constant.NOT_CONFIRMED_ACTION, -// Constant.NOT_ACCEPT_ACTION -// ) this.finish() } else -> { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index b051c34..8b95aa8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -7,15 +7,18 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.SearchResultAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.SearchResultModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -26,7 +29,7 @@ import okhttp3.RequestBody import org.json.JSONObject -class OrderSearchResultActivity : BaseActivity() { +class OrderSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var operationViewModel: OperationViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -42,6 +45,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "查询结果" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -95,12 +101,14 @@ } }) workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt index e5c9f86..f53a0d8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt @@ -1,32 +1,46 @@ package com.casic.qd.smartwell.view -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting +import com.casic.qd.smartwell.R import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : AppCompatActivity(), PermissionCallbacks { +class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - PageNavigationManager.addActivity(this) + override fun initLayoutView(): Int = R.layout.activity_permssion + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) + } + + override fun initData() { //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - EasyPermissions.requestPermissions( - this, - "需要获取相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) + enterMainButton.setOnClickListener { + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) + } } } + override fun initEvent() { + + } + private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) @@ -36,9 +50,7 @@ } override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt deleted file mode 100644 index e016832..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.qd.smartwell.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.casic.qd.smartwell.R -import com.qmuiteam.qmui.util.QMUIDisplayHelper - - -/** - * 可删减九宫格 - * */ -@SuppressLint("NotifyDataSetChanged") -class NineGridImageAdapter(private val context: Context) : - RecyclerView.Adapter() { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 3a226ca..c67e61a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.* @@ -15,7 +14,7 @@ * PublicKey校验 */ @GET("/config/baseConfig") - suspend fun obtainPublicKey(): PublicKeyModel + suspend fun authenticate(): String /** * 登录并获取Token @@ -26,7 +25,7 @@ */ @FormUrlEncoded @POST("/user/login") - suspend fun obtainLoginResult( + suspend fun login( @Field("sid") sid: String, @Field("username") account: String, @Field("password") secretKey: String diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 8a35a50..237af66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory @@ -23,15 +22,15 @@ /** * 验证PublicKey */ - suspend fun authenticate(): PublicKeyModel { - return api.obtainPublicKey() + suspend fun authenticate(): String { + return api.authenticate() } /** * 登录并获取Token */ suspend fun login(sid: String, account: String, secretKey: String): String { - return api.obtainLoginResult(sid, account, secretKey) + return api.login(sid, account, secretKey) } /** diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 976811c..85370c5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -6,13 +6,16 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -20,7 +23,7 @@ import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmManagementActivity : BaseActivity() { +class AlarmManagementActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -35,6 +38,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "当前告警" rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index f27d4d3..f9e8fbc 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -6,14 +6,17 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.SearchResultViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -21,7 +24,7 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmSearchResultActivity : BaseActivity() { +class AlarmSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchAlarmViewModel: SearchResultViewModel @@ -38,6 +41,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "查询结果" } @@ -91,12 +97,14 @@ }) searchAlarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 597e793..40240d5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.view; import android.content.Context +import android.graphics.Color import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -9,10 +10,8 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.photoview.PhotoView -import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager @@ -20,13 +19,13 @@ import java.util.* -class BigImageActivity : BaseActivity() { +class BigImageActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_big_image override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, R.color.black.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, Color.BLACK) + leftBackView.setOnClickListener { finish() } } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 6e35c09..7660a79 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -2,22 +2,24 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.timestampToLastWeekTime import com.pengxh.kt.lite.extensions.timestampToTime +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_device_data_detail.* import kotlinx.android.synthetic.main.activity_main.rightOptionView import kotlinx.android.synthetic.main.activity_main.titleView -class DeviceDataDetailActivity : BaseActivity() { +class DeviceDataDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDataDetailActivity" private lateinit var deviceCode: String @@ -26,6 +28,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_data_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } deviceCode = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! titleView.text = String.format("${deviceCode}历史数据") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index dc5e200..e681958 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -8,20 +8,21 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.LoginViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper import kotlinx.android.synthetic.main.activity_login.* -// TODO 修改登录逻辑,参考四分公司 -class LoginActivity : BaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel @@ -48,8 +49,8 @@ override fun initLayoutView(): Int = R.layout.activity_login override fun setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this) + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) } override fun initData() { @@ -102,7 +103,7 @@ val dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!) //登录并获取Token,POST请求 - loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey) + loginViewModel.enter(it.data!!.sid!!, account, dataByPublicKey) loginViewModel.resultModel.observe(this, { loginResult -> if (loginResult.code == 200) { AuthenticationHelper.saveToken(loginResult.data!!.token!!) @@ -121,20 +122,15 @@ }) loginViewModel.loadState.observe(this, { loginState -> when (loginState) { - is LoadState.Success -> { - "登录成功".show(this) - DialogHelper.dismissLoadingDialog() + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "登录中,请稍后...") } else -> { - "登录失败,用户名或密码错误".show(this) DialogHelper.dismissLoadingDialog() } } }) } }) - authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index b0f3847..704e484 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -13,7 +13,6 @@ import com.bumptech.glide.Glide import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.HomeRecycleAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.model.LineChartEntryModel @@ -26,7 +25,10 @@ import com.google.android.material.navigation.NavigationView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState @@ -49,7 +51,7 @@ import java.util.* import kotlin.collections.ArrayList -class MainActivity : BaseActivity(), DrawerLayout.DrawerListener, +class MainActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener, NavigationView.OnNavigationItemSelectedListener { private val kTag = "MainActivity" @@ -64,7 +66,23 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = resources.getString(R.string.app_name) + + leftOptionView.setOnClickListener { + if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { + leftDrawerLayout.closeDrawer(GravityCompat.START) + } else { + leftDrawerLayout.openDrawer(GravityCompat.START) + } + } + leftDrawerLayout.addDrawerListener(this) + + rightOptionView.setOnClickListener { + navigatePageTo() + } } override fun initData() { @@ -149,18 +167,13 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) + + waterViewModel.waterStatistics() } override fun initEvent() { - leftOptionView.setOnClickListener { - if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { - leftDrawerLayout.closeDrawer(GravityCompat.START) - } else { - leftDrawerLayout.openDrawer(GravityCompat.START) - } - } - leftDrawerLayout.addDrawerListener(this) navigationView.setNavigationItemSelectedListener(this) + loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -169,11 +182,6 @@ } }) - rightOptionView.setOnClickListener { - navigatePageTo() - } - - waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index d6336d6..1ee58ff 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -14,7 +14,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.MapDeviceListModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -22,9 +21,13 @@ import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -38,7 +41,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class MapActivity : BaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class MapActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "MapActivity" @@ -70,8 +73,12 @@ override fun initLayoutView(): Int = R.layout.activity_map override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index b386373..809e6c0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,22 +5,24 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_completed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderCompletedDetailActivity : BaseActivity() { +class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -28,6 +30,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index 8653564..76f8077 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -9,41 +9,41 @@ import android.view.View import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderInHandleDetailActivity : BaseActivity() { +class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private val context: Context = this@OrderInHandleDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,6 +52,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -59,16 +62,14 @@ override fun initData() { val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!!//初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) - workOrderViewModel.obtainWorkOrderDetail(jobId) } @@ -240,7 +241,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -274,7 +275,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //处理完成工单状态处理 @@ -330,7 +338,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -393,22 +400,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index fa5a469..483307d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -3,30 +3,36 @@ import androidx.fragment.app.Fragment import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.TopViewPagerAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.fragment.OrderCompletedFragment import com.casic.qd.smartwell.fragment.OrderInHandleFragment import com.casic.qd.smartwell.fragment.OrderNotConfirmedFragment import com.casic.qd.smartwell.fragment.OrderNotProcessedFragment import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_order_management.* import java.util.* -class OrderManagementActivity : BaseActivity() { +class OrderManagementActivity : KotlinBaseActivity() { - private var fragmentList: ArrayList = ArrayList() + private var fragmentPages: ArrayList = ArrayList() init { - fragmentList.add(OrderNotProcessedFragment())//待处理 - fragmentList.add(OrderNotConfirmedFragment())//待确认 - fragmentList.add(OrderInHandleFragment())//处理中 - fragmentList.add(OrderCompletedFragment())//已完成 + fragmentPages.add(OrderNotProcessedFragment())//待处理 + fragmentPages.add(OrderNotConfirmedFragment())//待确认 + fragmentPages.add(OrderInHandleFragment())//处理中 + fragmentPages.add(OrderCompletedFragment())//已完成 } override fun initLayoutView(): Int = R.layout.activity_order_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "工单管理" rightOptionView.setOnClickListener { @@ -36,9 +42,9 @@ override fun initData() { val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentList + supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) - orderViewPager.offscreenPageLimit = fragmentList.size + orderViewPager.offscreenPageLimit = fragmentPages.size orderViewPager.adapter = topViewPagerAdapter orderTabLayout.setupWithViewPager(orderViewPager) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index 0b5e1d1..dd87a66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -8,42 +8,41 @@ import android.util.Log import android.view.View import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderNotConfirmedDetailActivity : BaseActivity() { +class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,23 +51,26 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } } override fun initData() { - jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) + workOrderViewModel.obtainWorkOrderDetail(jobId) } override fun initEvent() { @@ -93,7 +95,6 @@ } }) - workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -204,7 +205,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -238,7 +239,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //确认工单状态处理 @@ -262,6 +270,7 @@ BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(arrayListOf("拍照", "相册")) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { @@ -293,7 +302,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -356,22 +364,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index 63922a1..ac18ef0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,21 +6,24 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Poi import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WellViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderNotProcessedDetailActivity : BaseActivity() { +class OrderNotProcessedDetailActivity : KotlinBaseActivity() { private val context: Context = this@OrderNotProcessedDetailActivity private lateinit var workOrderViewModel: WorkOrderViewModel @@ -30,6 +33,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -147,12 +153,6 @@ } is LoadState.Success -> { DialogHelper.dismissLoadingDialog() - //通知列表刷新数据 -// BroadcastReceiverManager.instance.sendMultiBroadcast( -// Constant.NOT_PROCESSED_ACTION, -// Constant.NOT_CONFIRMED_ACTION, -// Constant.NOT_ACCEPT_ACTION -// ) this.finish() } else -> { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index b051c34..8b95aa8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -7,15 +7,18 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.SearchResultAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.SearchResultModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -26,7 +29,7 @@ import okhttp3.RequestBody import org.json.JSONObject -class OrderSearchResultActivity : BaseActivity() { +class OrderSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var operationViewModel: OperationViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -42,6 +45,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "查询结果" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -95,12 +101,14 @@ } }) workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt index e5c9f86..f53a0d8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt @@ -1,32 +1,46 @@ package com.casic.qd.smartwell.view -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting +import com.casic.qd.smartwell.R import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : AppCompatActivity(), PermissionCallbacks { +class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - PageNavigationManager.addActivity(this) + override fun initLayoutView(): Int = R.layout.activity_permssion + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) + } + + override fun initData() { //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - EasyPermissions.requestPermissions( - this, - "需要获取相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) + enterMainButton.setOnClickListener { + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) + } } } + override fun initEvent() { + + } + private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) @@ -36,9 +50,7 @@ } override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt index 5ce9def..edad500 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt @@ -2,21 +2,23 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder import kotlinx.android.synthetic.main.activity_alarm_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchAlarmActivity : BaseActivity() { +class SearchAlarmActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var areaViewModel: AreaViewModel @@ -27,6 +29,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "告警查询" } diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt deleted file mode 100644 index e016832..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.qd.smartwell.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.casic.qd.smartwell.R -import com.qmuiteam.qmui.util.QMUIDisplayHelper - - -/** - * 可删减九宫格 - * */ -@SuppressLint("NotifyDataSetChanged") -class NineGridImageAdapter(private val context: Context) : - RecyclerView.Adapter() { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 3a226ca..c67e61a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.* @@ -15,7 +14,7 @@ * PublicKey校验 */ @GET("/config/baseConfig") - suspend fun obtainPublicKey(): PublicKeyModel + suspend fun authenticate(): String /** * 登录并获取Token @@ -26,7 +25,7 @@ */ @FormUrlEncoded @POST("/user/login") - suspend fun obtainLoginResult( + suspend fun login( @Field("sid") sid: String, @Field("username") account: String, @Field("password") secretKey: String diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 8a35a50..237af66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory @@ -23,15 +22,15 @@ /** * 验证PublicKey */ - suspend fun authenticate(): PublicKeyModel { - return api.obtainPublicKey() + suspend fun authenticate(): String { + return api.authenticate() } /** * 登录并获取Token */ suspend fun login(sid: String, account: String, secretKey: String): String { - return api.obtainLoginResult(sid, account, secretKey) + return api.login(sid, account, secretKey) } /** diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 976811c..85370c5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -6,13 +6,16 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -20,7 +23,7 @@ import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmManagementActivity : BaseActivity() { +class AlarmManagementActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -35,6 +38,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "当前告警" rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index f27d4d3..f9e8fbc 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -6,14 +6,17 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.SearchResultViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -21,7 +24,7 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmSearchResultActivity : BaseActivity() { +class AlarmSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchAlarmViewModel: SearchResultViewModel @@ -38,6 +41,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "查询结果" } @@ -91,12 +97,14 @@ }) searchAlarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 597e793..40240d5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.view; import android.content.Context +import android.graphics.Color import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -9,10 +10,8 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.photoview.PhotoView -import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager @@ -20,13 +19,13 @@ import java.util.* -class BigImageActivity : BaseActivity() { +class BigImageActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_big_image override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, R.color.black.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, Color.BLACK) + leftBackView.setOnClickListener { finish() } } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 6e35c09..7660a79 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -2,22 +2,24 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.timestampToLastWeekTime import com.pengxh.kt.lite.extensions.timestampToTime +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_device_data_detail.* import kotlinx.android.synthetic.main.activity_main.rightOptionView import kotlinx.android.synthetic.main.activity_main.titleView -class DeviceDataDetailActivity : BaseActivity() { +class DeviceDataDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDataDetailActivity" private lateinit var deviceCode: String @@ -26,6 +28,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_data_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } deviceCode = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! titleView.text = String.format("${deviceCode}历史数据") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index dc5e200..e681958 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -8,20 +8,21 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.LoginViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper import kotlinx.android.synthetic.main.activity_login.* -// TODO 修改登录逻辑,参考四分公司 -class LoginActivity : BaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel @@ -48,8 +49,8 @@ override fun initLayoutView(): Int = R.layout.activity_login override fun setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this) + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) } override fun initData() { @@ -102,7 +103,7 @@ val dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!) //登录并获取Token,POST请求 - loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey) + loginViewModel.enter(it.data!!.sid!!, account, dataByPublicKey) loginViewModel.resultModel.observe(this, { loginResult -> if (loginResult.code == 200) { AuthenticationHelper.saveToken(loginResult.data!!.token!!) @@ -121,20 +122,15 @@ }) loginViewModel.loadState.observe(this, { loginState -> when (loginState) { - is LoadState.Success -> { - "登录成功".show(this) - DialogHelper.dismissLoadingDialog() + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "登录中,请稍后...") } else -> { - "登录失败,用户名或密码错误".show(this) DialogHelper.dismissLoadingDialog() } } }) } }) - authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index b0f3847..704e484 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -13,7 +13,6 @@ import com.bumptech.glide.Glide import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.HomeRecycleAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.model.LineChartEntryModel @@ -26,7 +25,10 @@ import com.google.android.material.navigation.NavigationView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState @@ -49,7 +51,7 @@ import java.util.* import kotlin.collections.ArrayList -class MainActivity : BaseActivity(), DrawerLayout.DrawerListener, +class MainActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener, NavigationView.OnNavigationItemSelectedListener { private val kTag = "MainActivity" @@ -64,7 +66,23 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = resources.getString(R.string.app_name) + + leftOptionView.setOnClickListener { + if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { + leftDrawerLayout.closeDrawer(GravityCompat.START) + } else { + leftDrawerLayout.openDrawer(GravityCompat.START) + } + } + leftDrawerLayout.addDrawerListener(this) + + rightOptionView.setOnClickListener { + navigatePageTo() + } } override fun initData() { @@ -149,18 +167,13 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) + + waterViewModel.waterStatistics() } override fun initEvent() { - leftOptionView.setOnClickListener { - if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { - leftDrawerLayout.closeDrawer(GravityCompat.START) - } else { - leftDrawerLayout.openDrawer(GravityCompat.START) - } - } - leftDrawerLayout.addDrawerListener(this) navigationView.setNavigationItemSelectedListener(this) + loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -169,11 +182,6 @@ } }) - rightOptionView.setOnClickListener { - navigatePageTo() - } - - waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index d6336d6..1ee58ff 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -14,7 +14,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.MapDeviceListModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -22,9 +21,13 @@ import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -38,7 +41,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class MapActivity : BaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class MapActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "MapActivity" @@ -70,8 +73,12 @@ override fun initLayoutView(): Int = R.layout.activity_map override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index b386373..809e6c0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,22 +5,24 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_completed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderCompletedDetailActivity : BaseActivity() { +class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -28,6 +30,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index 8653564..76f8077 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -9,41 +9,41 @@ import android.view.View import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderInHandleDetailActivity : BaseActivity() { +class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private val context: Context = this@OrderInHandleDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,6 +52,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -59,16 +62,14 @@ override fun initData() { val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!!//初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) - workOrderViewModel.obtainWorkOrderDetail(jobId) } @@ -240,7 +241,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -274,7 +275,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //处理完成工单状态处理 @@ -330,7 +338,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -393,22 +400,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index fa5a469..483307d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -3,30 +3,36 @@ import androidx.fragment.app.Fragment import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.TopViewPagerAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.fragment.OrderCompletedFragment import com.casic.qd.smartwell.fragment.OrderInHandleFragment import com.casic.qd.smartwell.fragment.OrderNotConfirmedFragment import com.casic.qd.smartwell.fragment.OrderNotProcessedFragment import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_order_management.* import java.util.* -class OrderManagementActivity : BaseActivity() { +class OrderManagementActivity : KotlinBaseActivity() { - private var fragmentList: ArrayList = ArrayList() + private var fragmentPages: ArrayList = ArrayList() init { - fragmentList.add(OrderNotProcessedFragment())//待处理 - fragmentList.add(OrderNotConfirmedFragment())//待确认 - fragmentList.add(OrderInHandleFragment())//处理中 - fragmentList.add(OrderCompletedFragment())//已完成 + fragmentPages.add(OrderNotProcessedFragment())//待处理 + fragmentPages.add(OrderNotConfirmedFragment())//待确认 + fragmentPages.add(OrderInHandleFragment())//处理中 + fragmentPages.add(OrderCompletedFragment())//已完成 } override fun initLayoutView(): Int = R.layout.activity_order_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "工单管理" rightOptionView.setOnClickListener { @@ -36,9 +42,9 @@ override fun initData() { val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentList + supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) - orderViewPager.offscreenPageLimit = fragmentList.size + orderViewPager.offscreenPageLimit = fragmentPages.size orderViewPager.adapter = topViewPagerAdapter orderTabLayout.setupWithViewPager(orderViewPager) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index 0b5e1d1..dd87a66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -8,42 +8,41 @@ import android.util.Log import android.view.View import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderNotConfirmedDetailActivity : BaseActivity() { +class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,23 +51,26 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } } override fun initData() { - jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) + workOrderViewModel.obtainWorkOrderDetail(jobId) } override fun initEvent() { @@ -93,7 +95,6 @@ } }) - workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -204,7 +205,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -238,7 +239,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //确认工单状态处理 @@ -262,6 +270,7 @@ BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(arrayListOf("拍照", "相册")) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { @@ -293,7 +302,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -356,22 +364,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index 63922a1..ac18ef0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,21 +6,24 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Poi import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WellViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderNotProcessedDetailActivity : BaseActivity() { +class OrderNotProcessedDetailActivity : KotlinBaseActivity() { private val context: Context = this@OrderNotProcessedDetailActivity private lateinit var workOrderViewModel: WorkOrderViewModel @@ -30,6 +33,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -147,12 +153,6 @@ } is LoadState.Success -> { DialogHelper.dismissLoadingDialog() - //通知列表刷新数据 -// BroadcastReceiverManager.instance.sendMultiBroadcast( -// Constant.NOT_PROCESSED_ACTION, -// Constant.NOT_CONFIRMED_ACTION, -// Constant.NOT_ACCEPT_ACTION -// ) this.finish() } else -> { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index b051c34..8b95aa8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -7,15 +7,18 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.SearchResultAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.SearchResultModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -26,7 +29,7 @@ import okhttp3.RequestBody import org.json.JSONObject -class OrderSearchResultActivity : BaseActivity() { +class OrderSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var operationViewModel: OperationViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -42,6 +45,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "查询结果" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -95,12 +101,14 @@ } }) workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt index e5c9f86..f53a0d8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt @@ -1,32 +1,46 @@ package com.casic.qd.smartwell.view -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting +import com.casic.qd.smartwell.R import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : AppCompatActivity(), PermissionCallbacks { +class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - PageNavigationManager.addActivity(this) + override fun initLayoutView(): Int = R.layout.activity_permssion + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) + } + + override fun initData() { //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - EasyPermissions.requestPermissions( - this, - "需要获取相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) + enterMainButton.setOnClickListener { + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) + } } } + override fun initEvent() { + + } + private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) @@ -36,9 +50,7 @@ } override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt index 5ce9def..edad500 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt @@ -2,21 +2,23 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder import kotlinx.android.synthetic.main.activity_alarm_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchAlarmActivity : BaseActivity() { +class SearchAlarmActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var areaViewModel: AreaViewModel @@ -27,6 +29,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "告警查询" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt index f994402..a5f6a30 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt @@ -12,7 +12,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceDataListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceDataModel @@ -20,8 +19,12 @@ import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import kotlinx.android.synthetic.main.activity_data_search.* @@ -34,7 +37,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDataActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDataActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var deviceViewModel: DeviceViewModel @@ -52,6 +55,9 @@ override fun initLayoutView(): Int = R.layout.activity_data_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "数据查询" rightOptionView.setOnClickListener { @@ -68,11 +74,12 @@ weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + //默认加载所有数据 + obtainSearchResult() } override fun initEvent() { - //默认加载所有数据 - obtainSearchResult(pageIndex) deviceViewModel.deviceDataModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -100,12 +107,14 @@ }) deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -114,12 +123,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } areaViewModel.areaModel.observe(this, { @@ -152,7 +161,7 @@ }) } - private fun obtainSearchResult(pageIndex: Int) { + private fun obtainSearchResult() { deviceViewModel.obtainDeviceData(areaId, keywords, pageIndex) } @@ -173,7 +182,7 @@ searchButton.setOnClickListener { keywords = deviceCodeView.text.toString() pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -201,7 +210,8 @@ } else { if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt deleted file mode 100644 index e016832..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.qd.smartwell.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.casic.qd.smartwell.R -import com.qmuiteam.qmui.util.QMUIDisplayHelper - - -/** - * 可删减九宫格 - * */ -@SuppressLint("NotifyDataSetChanged") -class NineGridImageAdapter(private val context: Context) : - RecyclerView.Adapter() { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 3a226ca..c67e61a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.* @@ -15,7 +14,7 @@ * PublicKey校验 */ @GET("/config/baseConfig") - suspend fun obtainPublicKey(): PublicKeyModel + suspend fun authenticate(): String /** * 登录并获取Token @@ -26,7 +25,7 @@ */ @FormUrlEncoded @POST("/user/login") - suspend fun obtainLoginResult( + suspend fun login( @Field("sid") sid: String, @Field("username") account: String, @Field("password") secretKey: String diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 8a35a50..237af66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory @@ -23,15 +22,15 @@ /** * 验证PublicKey */ - suspend fun authenticate(): PublicKeyModel { - return api.obtainPublicKey() + suspend fun authenticate(): String { + return api.authenticate() } /** * 登录并获取Token */ suspend fun login(sid: String, account: String, secretKey: String): String { - return api.obtainLoginResult(sid, account, secretKey) + return api.login(sid, account, secretKey) } /** diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 976811c..85370c5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -6,13 +6,16 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -20,7 +23,7 @@ import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmManagementActivity : BaseActivity() { +class AlarmManagementActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -35,6 +38,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "当前告警" rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index f27d4d3..f9e8fbc 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -6,14 +6,17 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.SearchResultViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -21,7 +24,7 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmSearchResultActivity : BaseActivity() { +class AlarmSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchAlarmViewModel: SearchResultViewModel @@ -38,6 +41,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "查询结果" } @@ -91,12 +97,14 @@ }) searchAlarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 597e793..40240d5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.view; import android.content.Context +import android.graphics.Color import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -9,10 +10,8 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.photoview.PhotoView -import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager @@ -20,13 +19,13 @@ import java.util.* -class BigImageActivity : BaseActivity() { +class BigImageActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_big_image override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, R.color.black.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, Color.BLACK) + leftBackView.setOnClickListener { finish() } } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 6e35c09..7660a79 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -2,22 +2,24 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.timestampToLastWeekTime import com.pengxh.kt.lite.extensions.timestampToTime +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_device_data_detail.* import kotlinx.android.synthetic.main.activity_main.rightOptionView import kotlinx.android.synthetic.main.activity_main.titleView -class DeviceDataDetailActivity : BaseActivity() { +class DeviceDataDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDataDetailActivity" private lateinit var deviceCode: String @@ -26,6 +28,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_data_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } deviceCode = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! titleView.text = String.format("${deviceCode}历史数据") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index dc5e200..e681958 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -8,20 +8,21 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.LoginViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper import kotlinx.android.synthetic.main.activity_login.* -// TODO 修改登录逻辑,参考四分公司 -class LoginActivity : BaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel @@ -48,8 +49,8 @@ override fun initLayoutView(): Int = R.layout.activity_login override fun setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this) + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) } override fun initData() { @@ -102,7 +103,7 @@ val dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!) //登录并获取Token,POST请求 - loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey) + loginViewModel.enter(it.data!!.sid!!, account, dataByPublicKey) loginViewModel.resultModel.observe(this, { loginResult -> if (loginResult.code == 200) { AuthenticationHelper.saveToken(loginResult.data!!.token!!) @@ -121,20 +122,15 @@ }) loginViewModel.loadState.observe(this, { loginState -> when (loginState) { - is LoadState.Success -> { - "登录成功".show(this) - DialogHelper.dismissLoadingDialog() + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "登录中,请稍后...") } else -> { - "登录失败,用户名或密码错误".show(this) DialogHelper.dismissLoadingDialog() } } }) } }) - authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index b0f3847..704e484 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -13,7 +13,6 @@ import com.bumptech.glide.Glide import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.HomeRecycleAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.model.LineChartEntryModel @@ -26,7 +25,10 @@ import com.google.android.material.navigation.NavigationView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState @@ -49,7 +51,7 @@ import java.util.* import kotlin.collections.ArrayList -class MainActivity : BaseActivity(), DrawerLayout.DrawerListener, +class MainActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener, NavigationView.OnNavigationItemSelectedListener { private val kTag = "MainActivity" @@ -64,7 +66,23 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = resources.getString(R.string.app_name) + + leftOptionView.setOnClickListener { + if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { + leftDrawerLayout.closeDrawer(GravityCompat.START) + } else { + leftDrawerLayout.openDrawer(GravityCompat.START) + } + } + leftDrawerLayout.addDrawerListener(this) + + rightOptionView.setOnClickListener { + navigatePageTo() + } } override fun initData() { @@ -149,18 +167,13 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) + + waterViewModel.waterStatistics() } override fun initEvent() { - leftOptionView.setOnClickListener { - if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { - leftDrawerLayout.closeDrawer(GravityCompat.START) - } else { - leftDrawerLayout.openDrawer(GravityCompat.START) - } - } - leftDrawerLayout.addDrawerListener(this) navigationView.setNavigationItemSelectedListener(this) + loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -169,11 +182,6 @@ } }) - rightOptionView.setOnClickListener { - navigatePageTo() - } - - waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index d6336d6..1ee58ff 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -14,7 +14,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.MapDeviceListModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -22,9 +21,13 @@ import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -38,7 +41,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class MapActivity : BaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class MapActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "MapActivity" @@ -70,8 +73,12 @@ override fun initLayoutView(): Int = R.layout.activity_map override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index b386373..809e6c0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,22 +5,24 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_completed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderCompletedDetailActivity : BaseActivity() { +class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -28,6 +30,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index 8653564..76f8077 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -9,41 +9,41 @@ import android.view.View import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderInHandleDetailActivity : BaseActivity() { +class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private val context: Context = this@OrderInHandleDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,6 +52,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -59,16 +62,14 @@ override fun initData() { val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!!//初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) - workOrderViewModel.obtainWorkOrderDetail(jobId) } @@ -240,7 +241,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -274,7 +275,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //处理完成工单状态处理 @@ -330,7 +338,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -393,22 +400,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index fa5a469..483307d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -3,30 +3,36 @@ import androidx.fragment.app.Fragment import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.TopViewPagerAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.fragment.OrderCompletedFragment import com.casic.qd.smartwell.fragment.OrderInHandleFragment import com.casic.qd.smartwell.fragment.OrderNotConfirmedFragment import com.casic.qd.smartwell.fragment.OrderNotProcessedFragment import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_order_management.* import java.util.* -class OrderManagementActivity : BaseActivity() { +class OrderManagementActivity : KotlinBaseActivity() { - private var fragmentList: ArrayList = ArrayList() + private var fragmentPages: ArrayList = ArrayList() init { - fragmentList.add(OrderNotProcessedFragment())//待处理 - fragmentList.add(OrderNotConfirmedFragment())//待确认 - fragmentList.add(OrderInHandleFragment())//处理中 - fragmentList.add(OrderCompletedFragment())//已完成 + fragmentPages.add(OrderNotProcessedFragment())//待处理 + fragmentPages.add(OrderNotConfirmedFragment())//待确认 + fragmentPages.add(OrderInHandleFragment())//处理中 + fragmentPages.add(OrderCompletedFragment())//已完成 } override fun initLayoutView(): Int = R.layout.activity_order_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "工单管理" rightOptionView.setOnClickListener { @@ -36,9 +42,9 @@ override fun initData() { val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentList + supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) - orderViewPager.offscreenPageLimit = fragmentList.size + orderViewPager.offscreenPageLimit = fragmentPages.size orderViewPager.adapter = topViewPagerAdapter orderTabLayout.setupWithViewPager(orderViewPager) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index 0b5e1d1..dd87a66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -8,42 +8,41 @@ import android.util.Log import android.view.View import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderNotConfirmedDetailActivity : BaseActivity() { +class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,23 +51,26 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } } override fun initData() { - jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) + workOrderViewModel.obtainWorkOrderDetail(jobId) } override fun initEvent() { @@ -93,7 +95,6 @@ } }) - workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -204,7 +205,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -238,7 +239,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //确认工单状态处理 @@ -262,6 +270,7 @@ BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(arrayListOf("拍照", "相册")) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { @@ -293,7 +302,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -356,22 +364,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index 63922a1..ac18ef0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,21 +6,24 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Poi import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WellViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderNotProcessedDetailActivity : BaseActivity() { +class OrderNotProcessedDetailActivity : KotlinBaseActivity() { private val context: Context = this@OrderNotProcessedDetailActivity private lateinit var workOrderViewModel: WorkOrderViewModel @@ -30,6 +33,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -147,12 +153,6 @@ } is LoadState.Success -> { DialogHelper.dismissLoadingDialog() - //通知列表刷新数据 -// BroadcastReceiverManager.instance.sendMultiBroadcast( -// Constant.NOT_PROCESSED_ACTION, -// Constant.NOT_CONFIRMED_ACTION, -// Constant.NOT_ACCEPT_ACTION -// ) this.finish() } else -> { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index b051c34..8b95aa8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -7,15 +7,18 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.SearchResultAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.SearchResultModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -26,7 +29,7 @@ import okhttp3.RequestBody import org.json.JSONObject -class OrderSearchResultActivity : BaseActivity() { +class OrderSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var operationViewModel: OperationViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -42,6 +45,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "查询结果" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -95,12 +101,14 @@ } }) workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt index e5c9f86..f53a0d8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt @@ -1,32 +1,46 @@ package com.casic.qd.smartwell.view -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting +import com.casic.qd.smartwell.R import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : AppCompatActivity(), PermissionCallbacks { +class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - PageNavigationManager.addActivity(this) + override fun initLayoutView(): Int = R.layout.activity_permssion + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) + } + + override fun initData() { //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - EasyPermissions.requestPermissions( - this, - "需要获取相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) + enterMainButton.setOnClickListener { + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) + } } } + override fun initEvent() { + + } + private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) @@ -36,9 +50,7 @@ } override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt index 5ce9def..edad500 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt @@ -2,21 +2,23 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder import kotlinx.android.synthetic.main.activity_alarm_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchAlarmActivity : BaseActivity() { +class SearchAlarmActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var areaViewModel: AreaViewModel @@ -27,6 +29,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "告警查询" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt index f994402..a5f6a30 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt @@ -12,7 +12,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceDataListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceDataModel @@ -20,8 +19,12 @@ import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import kotlinx.android.synthetic.main.activity_data_search.* @@ -34,7 +37,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDataActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDataActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var deviceViewModel: DeviceViewModel @@ -52,6 +55,9 @@ override fun initLayoutView(): Int = R.layout.activity_data_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "数据查询" rightOptionView.setOnClickListener { @@ -68,11 +74,12 @@ weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + //默认加载所有数据 + obtainSearchResult() } override fun initEvent() { - //默认加载所有数据 - obtainSearchResult(pageIndex) deviceViewModel.deviceDataModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -100,12 +107,14 @@ }) deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -114,12 +123,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } areaViewModel.areaModel.observe(this, { @@ -152,7 +161,7 @@ }) } - private fun obtainSearchResult(pageIndex: Int) { + private fun obtainSearchResult() { deviceViewModel.obtainDeviceData(areaId, keywords, pageIndex) } @@ -173,7 +182,7 @@ searchButton.setOnClickListener { keywords = deviceCodeView.text.toString() pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -201,7 +210,8 @@ } else { if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt index cc9cdb2..643a7e1 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt @@ -11,7 +11,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceListModel @@ -25,8 +24,12 @@ import com.casic.qd.smartwell.widgets.BottomAreaSheet import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState @@ -40,7 +43,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDeviceActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDeviceActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchDeviceViewModel: SearchResultViewModel @@ -66,6 +69,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "设备查询" rightOptionView.setOnClickListener { @@ -90,10 +96,11 @@ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + obtainSearchResult() } override fun initEvent() { - obtainSearchResult(pageIndex) searchDeviceViewModel.deviceResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -121,12 +128,14 @@ }) searchDeviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -135,12 +144,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } //数据监听 @@ -195,7 +204,7 @@ searchButton.setOnClickListener { pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -296,9 +305,9 @@ }) } - private fun obtainSearchResult(page: Int) { + private fun obtainSearchResult() { searchDeviceViewModel.obtainDeviceResult( - keywords, deviceTypeValue, deptId, deviceState, areaId, page + keywords, deviceTypeValue, deptId, deviceState, areaId, pageIndex ) } @@ -309,7 +318,8 @@ } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt deleted file mode 100644 index e016832..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.qd.smartwell.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.casic.qd.smartwell.R -import com.qmuiteam.qmui.util.QMUIDisplayHelper - - -/** - * 可删减九宫格 - * */ -@SuppressLint("NotifyDataSetChanged") -class NineGridImageAdapter(private val context: Context) : - RecyclerView.Adapter() { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 3a226ca..c67e61a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.* @@ -15,7 +14,7 @@ * PublicKey校验 */ @GET("/config/baseConfig") - suspend fun obtainPublicKey(): PublicKeyModel + suspend fun authenticate(): String /** * 登录并获取Token @@ -26,7 +25,7 @@ */ @FormUrlEncoded @POST("/user/login") - suspend fun obtainLoginResult( + suspend fun login( @Field("sid") sid: String, @Field("username") account: String, @Field("password") secretKey: String diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 8a35a50..237af66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory @@ -23,15 +22,15 @@ /** * 验证PublicKey */ - suspend fun authenticate(): PublicKeyModel { - return api.obtainPublicKey() + suspend fun authenticate(): String { + return api.authenticate() } /** * 登录并获取Token */ suspend fun login(sid: String, account: String, secretKey: String): String { - return api.obtainLoginResult(sid, account, secretKey) + return api.login(sid, account, secretKey) } /** diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 976811c..85370c5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -6,13 +6,16 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -20,7 +23,7 @@ import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmManagementActivity : BaseActivity() { +class AlarmManagementActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -35,6 +38,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "当前告警" rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index f27d4d3..f9e8fbc 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -6,14 +6,17 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.SearchResultViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -21,7 +24,7 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmSearchResultActivity : BaseActivity() { +class AlarmSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchAlarmViewModel: SearchResultViewModel @@ -38,6 +41,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "查询结果" } @@ -91,12 +97,14 @@ }) searchAlarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 597e793..40240d5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.view; import android.content.Context +import android.graphics.Color import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -9,10 +10,8 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.photoview.PhotoView -import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager @@ -20,13 +19,13 @@ import java.util.* -class BigImageActivity : BaseActivity() { +class BigImageActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_big_image override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, R.color.black.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, Color.BLACK) + leftBackView.setOnClickListener { finish() } } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 6e35c09..7660a79 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -2,22 +2,24 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.timestampToLastWeekTime import com.pengxh.kt.lite.extensions.timestampToTime +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_device_data_detail.* import kotlinx.android.synthetic.main.activity_main.rightOptionView import kotlinx.android.synthetic.main.activity_main.titleView -class DeviceDataDetailActivity : BaseActivity() { +class DeviceDataDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDataDetailActivity" private lateinit var deviceCode: String @@ -26,6 +28,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_data_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } deviceCode = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! titleView.text = String.format("${deviceCode}历史数据") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index dc5e200..e681958 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -8,20 +8,21 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.LoginViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper import kotlinx.android.synthetic.main.activity_login.* -// TODO 修改登录逻辑,参考四分公司 -class LoginActivity : BaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel @@ -48,8 +49,8 @@ override fun initLayoutView(): Int = R.layout.activity_login override fun setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this) + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) } override fun initData() { @@ -102,7 +103,7 @@ val dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!) //登录并获取Token,POST请求 - loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey) + loginViewModel.enter(it.data!!.sid!!, account, dataByPublicKey) loginViewModel.resultModel.observe(this, { loginResult -> if (loginResult.code == 200) { AuthenticationHelper.saveToken(loginResult.data!!.token!!) @@ -121,20 +122,15 @@ }) loginViewModel.loadState.observe(this, { loginState -> when (loginState) { - is LoadState.Success -> { - "登录成功".show(this) - DialogHelper.dismissLoadingDialog() + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "登录中,请稍后...") } else -> { - "登录失败,用户名或密码错误".show(this) DialogHelper.dismissLoadingDialog() } } }) } }) - authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index b0f3847..704e484 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -13,7 +13,6 @@ import com.bumptech.glide.Glide import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.HomeRecycleAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.model.LineChartEntryModel @@ -26,7 +25,10 @@ import com.google.android.material.navigation.NavigationView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState @@ -49,7 +51,7 @@ import java.util.* import kotlin.collections.ArrayList -class MainActivity : BaseActivity(), DrawerLayout.DrawerListener, +class MainActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener, NavigationView.OnNavigationItemSelectedListener { private val kTag = "MainActivity" @@ -64,7 +66,23 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = resources.getString(R.string.app_name) + + leftOptionView.setOnClickListener { + if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { + leftDrawerLayout.closeDrawer(GravityCompat.START) + } else { + leftDrawerLayout.openDrawer(GravityCompat.START) + } + } + leftDrawerLayout.addDrawerListener(this) + + rightOptionView.setOnClickListener { + navigatePageTo() + } } override fun initData() { @@ -149,18 +167,13 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) + + waterViewModel.waterStatistics() } override fun initEvent() { - leftOptionView.setOnClickListener { - if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { - leftDrawerLayout.closeDrawer(GravityCompat.START) - } else { - leftDrawerLayout.openDrawer(GravityCompat.START) - } - } - leftDrawerLayout.addDrawerListener(this) navigationView.setNavigationItemSelectedListener(this) + loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -169,11 +182,6 @@ } }) - rightOptionView.setOnClickListener { - navigatePageTo() - } - - waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index d6336d6..1ee58ff 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -14,7 +14,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.MapDeviceListModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -22,9 +21,13 @@ import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -38,7 +41,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class MapActivity : BaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class MapActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "MapActivity" @@ -70,8 +73,12 @@ override fun initLayoutView(): Int = R.layout.activity_map override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index b386373..809e6c0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,22 +5,24 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_completed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderCompletedDetailActivity : BaseActivity() { +class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -28,6 +30,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index 8653564..76f8077 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -9,41 +9,41 @@ import android.view.View import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderInHandleDetailActivity : BaseActivity() { +class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private val context: Context = this@OrderInHandleDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,6 +52,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -59,16 +62,14 @@ override fun initData() { val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!!//初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) - workOrderViewModel.obtainWorkOrderDetail(jobId) } @@ -240,7 +241,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -274,7 +275,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //处理完成工单状态处理 @@ -330,7 +338,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -393,22 +400,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index fa5a469..483307d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -3,30 +3,36 @@ import androidx.fragment.app.Fragment import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.TopViewPagerAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.fragment.OrderCompletedFragment import com.casic.qd.smartwell.fragment.OrderInHandleFragment import com.casic.qd.smartwell.fragment.OrderNotConfirmedFragment import com.casic.qd.smartwell.fragment.OrderNotProcessedFragment import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_order_management.* import java.util.* -class OrderManagementActivity : BaseActivity() { +class OrderManagementActivity : KotlinBaseActivity() { - private var fragmentList: ArrayList = ArrayList() + private var fragmentPages: ArrayList = ArrayList() init { - fragmentList.add(OrderNotProcessedFragment())//待处理 - fragmentList.add(OrderNotConfirmedFragment())//待确认 - fragmentList.add(OrderInHandleFragment())//处理中 - fragmentList.add(OrderCompletedFragment())//已完成 + fragmentPages.add(OrderNotProcessedFragment())//待处理 + fragmentPages.add(OrderNotConfirmedFragment())//待确认 + fragmentPages.add(OrderInHandleFragment())//处理中 + fragmentPages.add(OrderCompletedFragment())//已完成 } override fun initLayoutView(): Int = R.layout.activity_order_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "工单管理" rightOptionView.setOnClickListener { @@ -36,9 +42,9 @@ override fun initData() { val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentList + supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) - orderViewPager.offscreenPageLimit = fragmentList.size + orderViewPager.offscreenPageLimit = fragmentPages.size orderViewPager.adapter = topViewPagerAdapter orderTabLayout.setupWithViewPager(orderViewPager) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index 0b5e1d1..dd87a66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -8,42 +8,41 @@ import android.util.Log import android.view.View import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderNotConfirmedDetailActivity : BaseActivity() { +class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,23 +51,26 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } } override fun initData() { - jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) + workOrderViewModel.obtainWorkOrderDetail(jobId) } override fun initEvent() { @@ -93,7 +95,6 @@ } }) - workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -204,7 +205,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -238,7 +239,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //确认工单状态处理 @@ -262,6 +270,7 @@ BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(arrayListOf("拍照", "相册")) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { @@ -293,7 +302,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -356,22 +364,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index 63922a1..ac18ef0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,21 +6,24 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Poi import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WellViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderNotProcessedDetailActivity : BaseActivity() { +class OrderNotProcessedDetailActivity : KotlinBaseActivity() { private val context: Context = this@OrderNotProcessedDetailActivity private lateinit var workOrderViewModel: WorkOrderViewModel @@ -30,6 +33,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -147,12 +153,6 @@ } is LoadState.Success -> { DialogHelper.dismissLoadingDialog() - //通知列表刷新数据 -// BroadcastReceiverManager.instance.sendMultiBroadcast( -// Constant.NOT_PROCESSED_ACTION, -// Constant.NOT_CONFIRMED_ACTION, -// Constant.NOT_ACCEPT_ACTION -// ) this.finish() } else -> { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index b051c34..8b95aa8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -7,15 +7,18 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.SearchResultAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.SearchResultModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -26,7 +29,7 @@ import okhttp3.RequestBody import org.json.JSONObject -class OrderSearchResultActivity : BaseActivity() { +class OrderSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var operationViewModel: OperationViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -42,6 +45,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "查询结果" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -95,12 +101,14 @@ } }) workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt index e5c9f86..f53a0d8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt @@ -1,32 +1,46 @@ package com.casic.qd.smartwell.view -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting +import com.casic.qd.smartwell.R import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : AppCompatActivity(), PermissionCallbacks { +class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - PageNavigationManager.addActivity(this) + override fun initLayoutView(): Int = R.layout.activity_permssion + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) + } + + override fun initData() { //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - EasyPermissions.requestPermissions( - this, - "需要获取相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) + enterMainButton.setOnClickListener { + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) + } } } + override fun initEvent() { + + } + private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) @@ -36,9 +50,7 @@ } override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt index 5ce9def..edad500 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt @@ -2,21 +2,23 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder import kotlinx.android.synthetic.main.activity_alarm_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchAlarmActivity : BaseActivity() { +class SearchAlarmActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var areaViewModel: AreaViewModel @@ -27,6 +29,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "告警查询" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt index f994402..a5f6a30 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt @@ -12,7 +12,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceDataListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceDataModel @@ -20,8 +19,12 @@ import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import kotlinx.android.synthetic.main.activity_data_search.* @@ -34,7 +37,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDataActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDataActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var deviceViewModel: DeviceViewModel @@ -52,6 +55,9 @@ override fun initLayoutView(): Int = R.layout.activity_data_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "数据查询" rightOptionView.setOnClickListener { @@ -68,11 +74,12 @@ weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + //默认加载所有数据 + obtainSearchResult() } override fun initEvent() { - //默认加载所有数据 - obtainSearchResult(pageIndex) deviceViewModel.deviceDataModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -100,12 +107,14 @@ }) deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -114,12 +123,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } areaViewModel.areaModel.observe(this, { @@ -152,7 +161,7 @@ }) } - private fun obtainSearchResult(pageIndex: Int) { + private fun obtainSearchResult() { deviceViewModel.obtainDeviceData(areaId, keywords, pageIndex) } @@ -173,7 +182,7 @@ searchButton.setOnClickListener { keywords = deviceCodeView.text.toString() pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -201,7 +210,8 @@ } else { if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt index cc9cdb2..643a7e1 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt @@ -11,7 +11,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceListModel @@ -25,8 +24,12 @@ import com.casic.qd.smartwell.widgets.BottomAreaSheet import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState @@ -40,7 +43,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDeviceActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDeviceActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchDeviceViewModel: SearchResultViewModel @@ -66,6 +69,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "设备查询" rightOptionView.setOnClickListener { @@ -90,10 +96,11 @@ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + obtainSearchResult() } override fun initEvent() { - obtainSearchResult(pageIndex) searchDeviceViewModel.deviceResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -121,12 +128,14 @@ }) searchDeviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -135,12 +144,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } //数据监听 @@ -195,7 +204,7 @@ searchButton.setOnClickListener { pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -296,9 +305,9 @@ }) } - private fun obtainSearchResult(page: Int) { + private fun obtainSearchResult() { searchDeviceViewModel.obtainDeviceResult( - keywords, deviceTypeValue, deptId, deviceState, areaId, page + keywords, deviceTypeValue, deptId, deviceState, areaId, pageIndex ) } @@ -309,7 +318,8 @@ } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt index 430174b..e6e6045 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt @@ -5,23 +5,25 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AlarmContentModel import com.casic.qd.smartwell.model.OrderStatusModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.zhy.view.flowlayout.FlowLayout import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchOrderActivity : BaseActivity() { +class SearchOrderActivity : KotlinBaseActivity() { private lateinit var contentTypeViewModel: AlarmViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -37,6 +39,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单查询" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt deleted file mode 100644 index e016832..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.qd.smartwell.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.casic.qd.smartwell.R -import com.qmuiteam.qmui.util.QMUIDisplayHelper - - -/** - * 可删减九宫格 - * */ -@SuppressLint("NotifyDataSetChanged") -class NineGridImageAdapter(private val context: Context) : - RecyclerView.Adapter() { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 3a226ca..c67e61a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.* @@ -15,7 +14,7 @@ * PublicKey校验 */ @GET("/config/baseConfig") - suspend fun obtainPublicKey(): PublicKeyModel + suspend fun authenticate(): String /** * 登录并获取Token @@ -26,7 +25,7 @@ */ @FormUrlEncoded @POST("/user/login") - suspend fun obtainLoginResult( + suspend fun login( @Field("sid") sid: String, @Field("username") account: String, @Field("password") secretKey: String diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 8a35a50..237af66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory @@ -23,15 +22,15 @@ /** * 验证PublicKey */ - suspend fun authenticate(): PublicKeyModel { - return api.obtainPublicKey() + suspend fun authenticate(): String { + return api.authenticate() } /** * 登录并获取Token */ suspend fun login(sid: String, account: String, secretKey: String): String { - return api.obtainLoginResult(sid, account, secretKey) + return api.login(sid, account, secretKey) } /** diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 976811c..85370c5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -6,13 +6,16 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -20,7 +23,7 @@ import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmManagementActivity : BaseActivity() { +class AlarmManagementActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -35,6 +38,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "当前告警" rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index f27d4d3..f9e8fbc 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -6,14 +6,17 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.SearchResultViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -21,7 +24,7 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmSearchResultActivity : BaseActivity() { +class AlarmSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchAlarmViewModel: SearchResultViewModel @@ -38,6 +41,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "查询结果" } @@ -91,12 +97,14 @@ }) searchAlarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 597e793..40240d5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.view; import android.content.Context +import android.graphics.Color import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -9,10 +10,8 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.photoview.PhotoView -import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager @@ -20,13 +19,13 @@ import java.util.* -class BigImageActivity : BaseActivity() { +class BigImageActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_big_image override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, R.color.black.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, Color.BLACK) + leftBackView.setOnClickListener { finish() } } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 6e35c09..7660a79 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -2,22 +2,24 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.timestampToLastWeekTime import com.pengxh.kt.lite.extensions.timestampToTime +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_device_data_detail.* import kotlinx.android.synthetic.main.activity_main.rightOptionView import kotlinx.android.synthetic.main.activity_main.titleView -class DeviceDataDetailActivity : BaseActivity() { +class DeviceDataDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDataDetailActivity" private lateinit var deviceCode: String @@ -26,6 +28,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_data_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } deviceCode = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! titleView.text = String.format("${deviceCode}历史数据") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index dc5e200..e681958 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -8,20 +8,21 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.LoginViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper import kotlinx.android.synthetic.main.activity_login.* -// TODO 修改登录逻辑,参考四分公司 -class LoginActivity : BaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel @@ -48,8 +49,8 @@ override fun initLayoutView(): Int = R.layout.activity_login override fun setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this) + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) } override fun initData() { @@ -102,7 +103,7 @@ val dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!) //登录并获取Token,POST请求 - loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey) + loginViewModel.enter(it.data!!.sid!!, account, dataByPublicKey) loginViewModel.resultModel.observe(this, { loginResult -> if (loginResult.code == 200) { AuthenticationHelper.saveToken(loginResult.data!!.token!!) @@ -121,20 +122,15 @@ }) loginViewModel.loadState.observe(this, { loginState -> when (loginState) { - is LoadState.Success -> { - "登录成功".show(this) - DialogHelper.dismissLoadingDialog() + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "登录中,请稍后...") } else -> { - "登录失败,用户名或密码错误".show(this) DialogHelper.dismissLoadingDialog() } } }) } }) - authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index b0f3847..704e484 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -13,7 +13,6 @@ import com.bumptech.glide.Glide import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.HomeRecycleAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.model.LineChartEntryModel @@ -26,7 +25,10 @@ import com.google.android.material.navigation.NavigationView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState @@ -49,7 +51,7 @@ import java.util.* import kotlin.collections.ArrayList -class MainActivity : BaseActivity(), DrawerLayout.DrawerListener, +class MainActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener, NavigationView.OnNavigationItemSelectedListener { private val kTag = "MainActivity" @@ -64,7 +66,23 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = resources.getString(R.string.app_name) + + leftOptionView.setOnClickListener { + if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { + leftDrawerLayout.closeDrawer(GravityCompat.START) + } else { + leftDrawerLayout.openDrawer(GravityCompat.START) + } + } + leftDrawerLayout.addDrawerListener(this) + + rightOptionView.setOnClickListener { + navigatePageTo() + } } override fun initData() { @@ -149,18 +167,13 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) + + waterViewModel.waterStatistics() } override fun initEvent() { - leftOptionView.setOnClickListener { - if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { - leftDrawerLayout.closeDrawer(GravityCompat.START) - } else { - leftDrawerLayout.openDrawer(GravityCompat.START) - } - } - leftDrawerLayout.addDrawerListener(this) navigationView.setNavigationItemSelectedListener(this) + loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -169,11 +182,6 @@ } }) - rightOptionView.setOnClickListener { - navigatePageTo() - } - - waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index d6336d6..1ee58ff 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -14,7 +14,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.MapDeviceListModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -22,9 +21,13 @@ import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -38,7 +41,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class MapActivity : BaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class MapActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "MapActivity" @@ -70,8 +73,12 @@ override fun initLayoutView(): Int = R.layout.activity_map override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index b386373..809e6c0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,22 +5,24 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_completed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderCompletedDetailActivity : BaseActivity() { +class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -28,6 +30,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index 8653564..76f8077 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -9,41 +9,41 @@ import android.view.View import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderInHandleDetailActivity : BaseActivity() { +class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private val context: Context = this@OrderInHandleDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,6 +52,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -59,16 +62,14 @@ override fun initData() { val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!!//初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) - workOrderViewModel.obtainWorkOrderDetail(jobId) } @@ -240,7 +241,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -274,7 +275,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //处理完成工单状态处理 @@ -330,7 +338,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -393,22 +400,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index fa5a469..483307d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -3,30 +3,36 @@ import androidx.fragment.app.Fragment import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.TopViewPagerAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.fragment.OrderCompletedFragment import com.casic.qd.smartwell.fragment.OrderInHandleFragment import com.casic.qd.smartwell.fragment.OrderNotConfirmedFragment import com.casic.qd.smartwell.fragment.OrderNotProcessedFragment import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_order_management.* import java.util.* -class OrderManagementActivity : BaseActivity() { +class OrderManagementActivity : KotlinBaseActivity() { - private var fragmentList: ArrayList = ArrayList() + private var fragmentPages: ArrayList = ArrayList() init { - fragmentList.add(OrderNotProcessedFragment())//待处理 - fragmentList.add(OrderNotConfirmedFragment())//待确认 - fragmentList.add(OrderInHandleFragment())//处理中 - fragmentList.add(OrderCompletedFragment())//已完成 + fragmentPages.add(OrderNotProcessedFragment())//待处理 + fragmentPages.add(OrderNotConfirmedFragment())//待确认 + fragmentPages.add(OrderInHandleFragment())//处理中 + fragmentPages.add(OrderCompletedFragment())//已完成 } override fun initLayoutView(): Int = R.layout.activity_order_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "工单管理" rightOptionView.setOnClickListener { @@ -36,9 +42,9 @@ override fun initData() { val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentList + supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) - orderViewPager.offscreenPageLimit = fragmentList.size + orderViewPager.offscreenPageLimit = fragmentPages.size orderViewPager.adapter = topViewPagerAdapter orderTabLayout.setupWithViewPager(orderViewPager) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index 0b5e1d1..dd87a66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -8,42 +8,41 @@ import android.util.Log import android.view.View import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderNotConfirmedDetailActivity : BaseActivity() { +class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,23 +51,26 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } } override fun initData() { - jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) + workOrderViewModel.obtainWorkOrderDetail(jobId) } override fun initEvent() { @@ -93,7 +95,6 @@ } }) - workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -204,7 +205,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -238,7 +239,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //确认工单状态处理 @@ -262,6 +270,7 @@ BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(arrayListOf("拍照", "相册")) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { @@ -293,7 +302,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -356,22 +364,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index 63922a1..ac18ef0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,21 +6,24 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Poi import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WellViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderNotProcessedDetailActivity : BaseActivity() { +class OrderNotProcessedDetailActivity : KotlinBaseActivity() { private val context: Context = this@OrderNotProcessedDetailActivity private lateinit var workOrderViewModel: WorkOrderViewModel @@ -30,6 +33,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -147,12 +153,6 @@ } is LoadState.Success -> { DialogHelper.dismissLoadingDialog() - //通知列表刷新数据 -// BroadcastReceiverManager.instance.sendMultiBroadcast( -// Constant.NOT_PROCESSED_ACTION, -// Constant.NOT_CONFIRMED_ACTION, -// Constant.NOT_ACCEPT_ACTION -// ) this.finish() } else -> { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index b051c34..8b95aa8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -7,15 +7,18 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.SearchResultAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.SearchResultModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -26,7 +29,7 @@ import okhttp3.RequestBody import org.json.JSONObject -class OrderSearchResultActivity : BaseActivity() { +class OrderSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var operationViewModel: OperationViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -42,6 +45,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "查询结果" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -95,12 +101,14 @@ } }) workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt index e5c9f86..f53a0d8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt @@ -1,32 +1,46 @@ package com.casic.qd.smartwell.view -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting +import com.casic.qd.smartwell.R import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : AppCompatActivity(), PermissionCallbacks { +class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - PageNavigationManager.addActivity(this) + override fun initLayoutView(): Int = R.layout.activity_permssion + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) + } + + override fun initData() { //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - EasyPermissions.requestPermissions( - this, - "需要获取相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) + enterMainButton.setOnClickListener { + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) + } } } + override fun initEvent() { + + } + private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) @@ -36,9 +50,7 @@ } override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt index 5ce9def..edad500 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt @@ -2,21 +2,23 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder import kotlinx.android.synthetic.main.activity_alarm_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchAlarmActivity : BaseActivity() { +class SearchAlarmActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var areaViewModel: AreaViewModel @@ -27,6 +29,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "告警查询" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt index f994402..a5f6a30 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt @@ -12,7 +12,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceDataListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceDataModel @@ -20,8 +19,12 @@ import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import kotlinx.android.synthetic.main.activity_data_search.* @@ -34,7 +37,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDataActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDataActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var deviceViewModel: DeviceViewModel @@ -52,6 +55,9 @@ override fun initLayoutView(): Int = R.layout.activity_data_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "数据查询" rightOptionView.setOnClickListener { @@ -68,11 +74,12 @@ weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + //默认加载所有数据 + obtainSearchResult() } override fun initEvent() { - //默认加载所有数据 - obtainSearchResult(pageIndex) deviceViewModel.deviceDataModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -100,12 +107,14 @@ }) deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -114,12 +123,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } areaViewModel.areaModel.observe(this, { @@ -152,7 +161,7 @@ }) } - private fun obtainSearchResult(pageIndex: Int) { + private fun obtainSearchResult() { deviceViewModel.obtainDeviceData(areaId, keywords, pageIndex) } @@ -173,7 +182,7 @@ searchButton.setOnClickListener { keywords = deviceCodeView.text.toString() pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -201,7 +210,8 @@ } else { if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt index cc9cdb2..643a7e1 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt @@ -11,7 +11,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceListModel @@ -25,8 +24,12 @@ import com.casic.qd.smartwell.widgets.BottomAreaSheet import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState @@ -40,7 +43,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDeviceActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDeviceActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchDeviceViewModel: SearchResultViewModel @@ -66,6 +69,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "设备查询" rightOptionView.setOnClickListener { @@ -90,10 +96,11 @@ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + obtainSearchResult() } override fun initEvent() { - obtainSearchResult(pageIndex) searchDeviceViewModel.deviceResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -121,12 +128,14 @@ }) searchDeviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -135,12 +144,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } //数据监听 @@ -195,7 +204,7 @@ searchButton.setOnClickListener { pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -296,9 +305,9 @@ }) } - private fun obtainSearchResult(page: Int) { + private fun obtainSearchResult() { searchDeviceViewModel.obtainDeviceResult( - keywords, deviceTypeValue, deptId, deviceState, areaId, page + keywords, deviceTypeValue, deptId, deviceState, areaId, pageIndex ) } @@ -309,7 +318,8 @@ } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt index 430174b..e6e6045 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt @@ -5,23 +5,25 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AlarmContentModel import com.casic.qd.smartwell.model.OrderStatusModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.zhy.view.flowlayout.FlowLayout import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchOrderActivity : BaseActivity() { +class SearchOrderActivity : KotlinBaseActivity() { private lateinit var contentTypeViewModel: AlarmViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -37,6 +39,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单查询" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt index 3d78bfa..157c5e8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt @@ -5,17 +5,18 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.utils.WebCrawler import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -class SplashScreenActivity : BaseActivity() { +class SplashScreenActivity : KotlinBaseActivity() { private val kTag = "SplashScreenActivity" private lateinit var userDetailViewModel: UserDetailViewModel @@ -25,7 +26,7 @@ override fun initLayoutView(): Int = R.layout.activity_splash override fun setupTopBarLayout() { - + ImmersionBar.with(this).init() } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt deleted file mode 100644 index e016832..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.qd.smartwell.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.casic.qd.smartwell.R -import com.qmuiteam.qmui.util.QMUIDisplayHelper - - -/** - * 可删减九宫格 - * */ -@SuppressLint("NotifyDataSetChanged") -class NineGridImageAdapter(private val context: Context) : - RecyclerView.Adapter() { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 3a226ca..c67e61a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.* @@ -15,7 +14,7 @@ * PublicKey校验 */ @GET("/config/baseConfig") - suspend fun obtainPublicKey(): PublicKeyModel + suspend fun authenticate(): String /** * 登录并获取Token @@ -26,7 +25,7 @@ */ @FormUrlEncoded @POST("/user/login") - suspend fun obtainLoginResult( + suspend fun login( @Field("sid") sid: String, @Field("username") account: String, @Field("password") secretKey: String diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 8a35a50..237af66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory @@ -23,15 +22,15 @@ /** * 验证PublicKey */ - suspend fun authenticate(): PublicKeyModel { - return api.obtainPublicKey() + suspend fun authenticate(): String { + return api.authenticate() } /** * 登录并获取Token */ suspend fun login(sid: String, account: String, secretKey: String): String { - return api.obtainLoginResult(sid, account, secretKey) + return api.login(sid, account, secretKey) } /** diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 976811c..85370c5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -6,13 +6,16 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -20,7 +23,7 @@ import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmManagementActivity : BaseActivity() { +class AlarmManagementActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -35,6 +38,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "当前告警" rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index f27d4d3..f9e8fbc 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -6,14 +6,17 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.SearchResultViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -21,7 +24,7 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmSearchResultActivity : BaseActivity() { +class AlarmSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchAlarmViewModel: SearchResultViewModel @@ -38,6 +41,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "查询结果" } @@ -91,12 +97,14 @@ }) searchAlarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 597e793..40240d5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.view; import android.content.Context +import android.graphics.Color import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -9,10 +10,8 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.photoview.PhotoView -import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager @@ -20,13 +19,13 @@ import java.util.* -class BigImageActivity : BaseActivity() { +class BigImageActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_big_image override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, R.color.black.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, Color.BLACK) + leftBackView.setOnClickListener { finish() } } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 6e35c09..7660a79 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -2,22 +2,24 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.timestampToLastWeekTime import com.pengxh.kt.lite.extensions.timestampToTime +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_device_data_detail.* import kotlinx.android.synthetic.main.activity_main.rightOptionView import kotlinx.android.synthetic.main.activity_main.titleView -class DeviceDataDetailActivity : BaseActivity() { +class DeviceDataDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDataDetailActivity" private lateinit var deviceCode: String @@ -26,6 +28,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_data_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } deviceCode = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! titleView.text = String.format("${deviceCode}历史数据") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index dc5e200..e681958 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -8,20 +8,21 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.LoginViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper import kotlinx.android.synthetic.main.activity_login.* -// TODO 修改登录逻辑,参考四分公司 -class LoginActivity : BaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel @@ -48,8 +49,8 @@ override fun initLayoutView(): Int = R.layout.activity_login override fun setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this) + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) } override fun initData() { @@ -102,7 +103,7 @@ val dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!) //登录并获取Token,POST请求 - loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey) + loginViewModel.enter(it.data!!.sid!!, account, dataByPublicKey) loginViewModel.resultModel.observe(this, { loginResult -> if (loginResult.code == 200) { AuthenticationHelper.saveToken(loginResult.data!!.token!!) @@ -121,20 +122,15 @@ }) loginViewModel.loadState.observe(this, { loginState -> when (loginState) { - is LoadState.Success -> { - "登录成功".show(this) - DialogHelper.dismissLoadingDialog() + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "登录中,请稍后...") } else -> { - "登录失败,用户名或密码错误".show(this) DialogHelper.dismissLoadingDialog() } } }) } }) - authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index b0f3847..704e484 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -13,7 +13,6 @@ import com.bumptech.glide.Glide import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.HomeRecycleAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.model.LineChartEntryModel @@ -26,7 +25,10 @@ import com.google.android.material.navigation.NavigationView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState @@ -49,7 +51,7 @@ import java.util.* import kotlin.collections.ArrayList -class MainActivity : BaseActivity(), DrawerLayout.DrawerListener, +class MainActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener, NavigationView.OnNavigationItemSelectedListener { private val kTag = "MainActivity" @@ -64,7 +66,23 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = resources.getString(R.string.app_name) + + leftOptionView.setOnClickListener { + if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { + leftDrawerLayout.closeDrawer(GravityCompat.START) + } else { + leftDrawerLayout.openDrawer(GravityCompat.START) + } + } + leftDrawerLayout.addDrawerListener(this) + + rightOptionView.setOnClickListener { + navigatePageTo() + } } override fun initData() { @@ -149,18 +167,13 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) + + waterViewModel.waterStatistics() } override fun initEvent() { - leftOptionView.setOnClickListener { - if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { - leftDrawerLayout.closeDrawer(GravityCompat.START) - } else { - leftDrawerLayout.openDrawer(GravityCompat.START) - } - } - leftDrawerLayout.addDrawerListener(this) navigationView.setNavigationItemSelectedListener(this) + loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -169,11 +182,6 @@ } }) - rightOptionView.setOnClickListener { - navigatePageTo() - } - - waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index d6336d6..1ee58ff 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -14,7 +14,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.MapDeviceListModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -22,9 +21,13 @@ import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -38,7 +41,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class MapActivity : BaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class MapActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "MapActivity" @@ -70,8 +73,12 @@ override fun initLayoutView(): Int = R.layout.activity_map override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index b386373..809e6c0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,22 +5,24 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_completed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderCompletedDetailActivity : BaseActivity() { +class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -28,6 +30,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index 8653564..76f8077 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -9,41 +9,41 @@ import android.view.View import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderInHandleDetailActivity : BaseActivity() { +class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private val context: Context = this@OrderInHandleDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,6 +52,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -59,16 +62,14 @@ override fun initData() { val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!!//初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) - workOrderViewModel.obtainWorkOrderDetail(jobId) } @@ -240,7 +241,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -274,7 +275,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //处理完成工单状态处理 @@ -330,7 +338,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -393,22 +400,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index fa5a469..483307d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -3,30 +3,36 @@ import androidx.fragment.app.Fragment import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.TopViewPagerAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.fragment.OrderCompletedFragment import com.casic.qd.smartwell.fragment.OrderInHandleFragment import com.casic.qd.smartwell.fragment.OrderNotConfirmedFragment import com.casic.qd.smartwell.fragment.OrderNotProcessedFragment import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_order_management.* import java.util.* -class OrderManagementActivity : BaseActivity() { +class OrderManagementActivity : KotlinBaseActivity() { - private var fragmentList: ArrayList = ArrayList() + private var fragmentPages: ArrayList = ArrayList() init { - fragmentList.add(OrderNotProcessedFragment())//待处理 - fragmentList.add(OrderNotConfirmedFragment())//待确认 - fragmentList.add(OrderInHandleFragment())//处理中 - fragmentList.add(OrderCompletedFragment())//已完成 + fragmentPages.add(OrderNotProcessedFragment())//待处理 + fragmentPages.add(OrderNotConfirmedFragment())//待确认 + fragmentPages.add(OrderInHandleFragment())//处理中 + fragmentPages.add(OrderCompletedFragment())//已完成 } override fun initLayoutView(): Int = R.layout.activity_order_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "工单管理" rightOptionView.setOnClickListener { @@ -36,9 +42,9 @@ override fun initData() { val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentList + supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) - orderViewPager.offscreenPageLimit = fragmentList.size + orderViewPager.offscreenPageLimit = fragmentPages.size orderViewPager.adapter = topViewPagerAdapter orderTabLayout.setupWithViewPager(orderViewPager) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index 0b5e1d1..dd87a66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -8,42 +8,41 @@ import android.util.Log import android.view.View import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderNotConfirmedDetailActivity : BaseActivity() { +class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,23 +51,26 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } } override fun initData() { - jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) + workOrderViewModel.obtainWorkOrderDetail(jobId) } override fun initEvent() { @@ -93,7 +95,6 @@ } }) - workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -204,7 +205,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -238,7 +239,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //确认工单状态处理 @@ -262,6 +270,7 @@ BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(arrayListOf("拍照", "相册")) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { @@ -293,7 +302,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -356,22 +364,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index 63922a1..ac18ef0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,21 +6,24 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Poi import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WellViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderNotProcessedDetailActivity : BaseActivity() { +class OrderNotProcessedDetailActivity : KotlinBaseActivity() { private val context: Context = this@OrderNotProcessedDetailActivity private lateinit var workOrderViewModel: WorkOrderViewModel @@ -30,6 +33,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -147,12 +153,6 @@ } is LoadState.Success -> { DialogHelper.dismissLoadingDialog() - //通知列表刷新数据 -// BroadcastReceiverManager.instance.sendMultiBroadcast( -// Constant.NOT_PROCESSED_ACTION, -// Constant.NOT_CONFIRMED_ACTION, -// Constant.NOT_ACCEPT_ACTION -// ) this.finish() } else -> { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index b051c34..8b95aa8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -7,15 +7,18 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.SearchResultAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.SearchResultModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -26,7 +29,7 @@ import okhttp3.RequestBody import org.json.JSONObject -class OrderSearchResultActivity : BaseActivity() { +class OrderSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var operationViewModel: OperationViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -42,6 +45,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "查询结果" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -95,12 +101,14 @@ } }) workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt index e5c9f86..f53a0d8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt @@ -1,32 +1,46 @@ package com.casic.qd.smartwell.view -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting +import com.casic.qd.smartwell.R import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : AppCompatActivity(), PermissionCallbacks { +class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - PageNavigationManager.addActivity(this) + override fun initLayoutView(): Int = R.layout.activity_permssion + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) + } + + override fun initData() { //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - EasyPermissions.requestPermissions( - this, - "需要获取相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) + enterMainButton.setOnClickListener { + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) + } } } + override fun initEvent() { + + } + private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) @@ -36,9 +50,7 @@ } override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt index 5ce9def..edad500 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt @@ -2,21 +2,23 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder import kotlinx.android.synthetic.main.activity_alarm_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchAlarmActivity : BaseActivity() { +class SearchAlarmActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var areaViewModel: AreaViewModel @@ -27,6 +29,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "告警查询" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt index f994402..a5f6a30 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt @@ -12,7 +12,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceDataListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceDataModel @@ -20,8 +19,12 @@ import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import kotlinx.android.synthetic.main.activity_data_search.* @@ -34,7 +37,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDataActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDataActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var deviceViewModel: DeviceViewModel @@ -52,6 +55,9 @@ override fun initLayoutView(): Int = R.layout.activity_data_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "数据查询" rightOptionView.setOnClickListener { @@ -68,11 +74,12 @@ weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + //默认加载所有数据 + obtainSearchResult() } override fun initEvent() { - //默认加载所有数据 - obtainSearchResult(pageIndex) deviceViewModel.deviceDataModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -100,12 +107,14 @@ }) deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -114,12 +123,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } areaViewModel.areaModel.observe(this, { @@ -152,7 +161,7 @@ }) } - private fun obtainSearchResult(pageIndex: Int) { + private fun obtainSearchResult() { deviceViewModel.obtainDeviceData(areaId, keywords, pageIndex) } @@ -173,7 +182,7 @@ searchButton.setOnClickListener { keywords = deviceCodeView.text.toString() pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -201,7 +210,8 @@ } else { if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt index cc9cdb2..643a7e1 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt @@ -11,7 +11,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceListModel @@ -25,8 +24,12 @@ import com.casic.qd.smartwell.widgets.BottomAreaSheet import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState @@ -40,7 +43,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDeviceActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDeviceActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchDeviceViewModel: SearchResultViewModel @@ -66,6 +69,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "设备查询" rightOptionView.setOnClickListener { @@ -90,10 +96,11 @@ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + obtainSearchResult() } override fun initEvent() { - obtainSearchResult(pageIndex) searchDeviceViewModel.deviceResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -121,12 +128,14 @@ }) searchDeviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -135,12 +144,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } //数据监听 @@ -195,7 +204,7 @@ searchButton.setOnClickListener { pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -296,9 +305,9 @@ }) } - private fun obtainSearchResult(page: Int) { + private fun obtainSearchResult() { searchDeviceViewModel.obtainDeviceResult( - keywords, deviceTypeValue, deptId, deviceState, areaId, page + keywords, deviceTypeValue, deptId, deviceState, areaId, pageIndex ) } @@ -309,7 +318,8 @@ } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt index 430174b..e6e6045 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt @@ -5,23 +5,25 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AlarmContentModel import com.casic.qd.smartwell.model.OrderStatusModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.zhy.view.flowlayout.FlowLayout import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchOrderActivity : BaseActivity() { +class SearchOrderActivity : KotlinBaseActivity() { private lateinit var contentTypeViewModel: AlarmViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -37,6 +39,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单查询" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt index 3d78bfa..157c5e8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt @@ -5,17 +5,18 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.utils.WebCrawler import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -class SplashScreenActivity : BaseActivity() { +class SplashScreenActivity : KotlinBaseActivity() { private val kTag = "SplashScreenActivity" private lateinit var userDetailViewModel: UserDetailViewModel @@ -25,7 +26,7 @@ override fun initLayoutView(): Int = R.layout.activity_splash override fun setupTopBarLayout() { - + ImmersionBar.with(this).init() } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt index c87ffd2..bffa1b7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt @@ -5,7 +5,6 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -15,11 +14,11 @@ import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.BarEntry import com.github.mikephil.charting.data.PieEntry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type -import com.pengxh.kt.lite.extensions.obtainQuarterOfYear -import com.pengxh.kt.lite.extensions.timestampToDate -import com.pengxh.kt.lite.extensions.timestampToLastMonthDate -import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_statistics.* import kotlinx.android.synthetic.main.include_base_title.* import java.util.* @@ -30,7 +29,7 @@ * @date 2022/2/17 14:34 * @email 290677893@qq.com */ -class StatisticsActivity : BaseActivity() { +class StatisticsActivity : KotlinBaseActivity() { private val context: Context = this@StatisticsActivity private lateinit var waterViewModel: WaterStatisticsViewModel @@ -40,6 +39,9 @@ override fun initLayoutView(): Int = R.layout.activity_statistics override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "汇总统计" } diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt deleted file mode 100644 index e016832..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.qd.smartwell.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.casic.qd.smartwell.R -import com.qmuiteam.qmui.util.QMUIDisplayHelper - - -/** - * 可删减九宫格 - * */ -@SuppressLint("NotifyDataSetChanged") -class NineGridImageAdapter(private val context: Context) : - RecyclerView.Adapter() { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 3a226ca..c67e61a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.* @@ -15,7 +14,7 @@ * PublicKey校验 */ @GET("/config/baseConfig") - suspend fun obtainPublicKey(): PublicKeyModel + suspend fun authenticate(): String /** * 登录并获取Token @@ -26,7 +25,7 @@ */ @FormUrlEncoded @POST("/user/login") - suspend fun obtainLoginResult( + suspend fun login( @Field("sid") sid: String, @Field("username") account: String, @Field("password") secretKey: String diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 8a35a50..237af66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory @@ -23,15 +22,15 @@ /** * 验证PublicKey */ - suspend fun authenticate(): PublicKeyModel { - return api.obtainPublicKey() + suspend fun authenticate(): String { + return api.authenticate() } /** * 登录并获取Token */ suspend fun login(sid: String, account: String, secretKey: String): String { - return api.obtainLoginResult(sid, account, secretKey) + return api.login(sid, account, secretKey) } /** diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 976811c..85370c5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -6,13 +6,16 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -20,7 +23,7 @@ import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmManagementActivity : BaseActivity() { +class AlarmManagementActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -35,6 +38,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "当前告警" rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index f27d4d3..f9e8fbc 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -6,14 +6,17 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.SearchResultViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -21,7 +24,7 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmSearchResultActivity : BaseActivity() { +class AlarmSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchAlarmViewModel: SearchResultViewModel @@ -38,6 +41,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "查询结果" } @@ -91,12 +97,14 @@ }) searchAlarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 597e793..40240d5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.view; import android.content.Context +import android.graphics.Color import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -9,10 +10,8 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.photoview.PhotoView -import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager @@ -20,13 +19,13 @@ import java.util.* -class BigImageActivity : BaseActivity() { +class BigImageActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_big_image override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, R.color.black.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, Color.BLACK) + leftBackView.setOnClickListener { finish() } } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 6e35c09..7660a79 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -2,22 +2,24 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.timestampToLastWeekTime import com.pengxh.kt.lite.extensions.timestampToTime +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_device_data_detail.* import kotlinx.android.synthetic.main.activity_main.rightOptionView import kotlinx.android.synthetic.main.activity_main.titleView -class DeviceDataDetailActivity : BaseActivity() { +class DeviceDataDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDataDetailActivity" private lateinit var deviceCode: String @@ -26,6 +28,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_data_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } deviceCode = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! titleView.text = String.format("${deviceCode}历史数据") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index dc5e200..e681958 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -8,20 +8,21 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.LoginViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper import kotlinx.android.synthetic.main.activity_login.* -// TODO 修改登录逻辑,参考四分公司 -class LoginActivity : BaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel @@ -48,8 +49,8 @@ override fun initLayoutView(): Int = R.layout.activity_login override fun setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this) + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) } override fun initData() { @@ -102,7 +103,7 @@ val dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!) //登录并获取Token,POST请求 - loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey) + loginViewModel.enter(it.data!!.sid!!, account, dataByPublicKey) loginViewModel.resultModel.observe(this, { loginResult -> if (loginResult.code == 200) { AuthenticationHelper.saveToken(loginResult.data!!.token!!) @@ -121,20 +122,15 @@ }) loginViewModel.loadState.observe(this, { loginState -> when (loginState) { - is LoadState.Success -> { - "登录成功".show(this) - DialogHelper.dismissLoadingDialog() + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "登录中,请稍后...") } else -> { - "登录失败,用户名或密码错误".show(this) DialogHelper.dismissLoadingDialog() } } }) } }) - authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index b0f3847..704e484 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -13,7 +13,6 @@ import com.bumptech.glide.Glide import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.HomeRecycleAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.model.LineChartEntryModel @@ -26,7 +25,10 @@ import com.google.android.material.navigation.NavigationView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState @@ -49,7 +51,7 @@ import java.util.* import kotlin.collections.ArrayList -class MainActivity : BaseActivity(), DrawerLayout.DrawerListener, +class MainActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener, NavigationView.OnNavigationItemSelectedListener { private val kTag = "MainActivity" @@ -64,7 +66,23 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = resources.getString(R.string.app_name) + + leftOptionView.setOnClickListener { + if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { + leftDrawerLayout.closeDrawer(GravityCompat.START) + } else { + leftDrawerLayout.openDrawer(GravityCompat.START) + } + } + leftDrawerLayout.addDrawerListener(this) + + rightOptionView.setOnClickListener { + navigatePageTo() + } } override fun initData() { @@ -149,18 +167,13 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) + + waterViewModel.waterStatistics() } override fun initEvent() { - leftOptionView.setOnClickListener { - if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { - leftDrawerLayout.closeDrawer(GravityCompat.START) - } else { - leftDrawerLayout.openDrawer(GravityCompat.START) - } - } - leftDrawerLayout.addDrawerListener(this) navigationView.setNavigationItemSelectedListener(this) + loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -169,11 +182,6 @@ } }) - rightOptionView.setOnClickListener { - navigatePageTo() - } - - waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index d6336d6..1ee58ff 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -14,7 +14,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.MapDeviceListModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -22,9 +21,13 @@ import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -38,7 +41,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class MapActivity : BaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class MapActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "MapActivity" @@ -70,8 +73,12 @@ override fun initLayoutView(): Int = R.layout.activity_map override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index b386373..809e6c0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,22 +5,24 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_completed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderCompletedDetailActivity : BaseActivity() { +class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -28,6 +30,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index 8653564..76f8077 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -9,41 +9,41 @@ import android.view.View import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderInHandleDetailActivity : BaseActivity() { +class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private val context: Context = this@OrderInHandleDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,6 +52,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -59,16 +62,14 @@ override fun initData() { val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!!//初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) - workOrderViewModel.obtainWorkOrderDetail(jobId) } @@ -240,7 +241,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -274,7 +275,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //处理完成工单状态处理 @@ -330,7 +338,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -393,22 +400,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index fa5a469..483307d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -3,30 +3,36 @@ import androidx.fragment.app.Fragment import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.TopViewPagerAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.fragment.OrderCompletedFragment import com.casic.qd.smartwell.fragment.OrderInHandleFragment import com.casic.qd.smartwell.fragment.OrderNotConfirmedFragment import com.casic.qd.smartwell.fragment.OrderNotProcessedFragment import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_order_management.* import java.util.* -class OrderManagementActivity : BaseActivity() { +class OrderManagementActivity : KotlinBaseActivity() { - private var fragmentList: ArrayList = ArrayList() + private var fragmentPages: ArrayList = ArrayList() init { - fragmentList.add(OrderNotProcessedFragment())//待处理 - fragmentList.add(OrderNotConfirmedFragment())//待确认 - fragmentList.add(OrderInHandleFragment())//处理中 - fragmentList.add(OrderCompletedFragment())//已完成 + fragmentPages.add(OrderNotProcessedFragment())//待处理 + fragmentPages.add(OrderNotConfirmedFragment())//待确认 + fragmentPages.add(OrderInHandleFragment())//处理中 + fragmentPages.add(OrderCompletedFragment())//已完成 } override fun initLayoutView(): Int = R.layout.activity_order_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "工单管理" rightOptionView.setOnClickListener { @@ -36,9 +42,9 @@ override fun initData() { val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentList + supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) - orderViewPager.offscreenPageLimit = fragmentList.size + orderViewPager.offscreenPageLimit = fragmentPages.size orderViewPager.adapter = topViewPagerAdapter orderTabLayout.setupWithViewPager(orderViewPager) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index 0b5e1d1..dd87a66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -8,42 +8,41 @@ import android.util.Log import android.view.View import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderNotConfirmedDetailActivity : BaseActivity() { +class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,23 +51,26 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } } override fun initData() { - jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) + workOrderViewModel.obtainWorkOrderDetail(jobId) } override fun initEvent() { @@ -93,7 +95,6 @@ } }) - workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -204,7 +205,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -238,7 +239,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //确认工单状态处理 @@ -262,6 +270,7 @@ BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(arrayListOf("拍照", "相册")) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { @@ -293,7 +302,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -356,22 +364,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index 63922a1..ac18ef0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,21 +6,24 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Poi import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WellViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderNotProcessedDetailActivity : BaseActivity() { +class OrderNotProcessedDetailActivity : KotlinBaseActivity() { private val context: Context = this@OrderNotProcessedDetailActivity private lateinit var workOrderViewModel: WorkOrderViewModel @@ -30,6 +33,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -147,12 +153,6 @@ } is LoadState.Success -> { DialogHelper.dismissLoadingDialog() - //通知列表刷新数据 -// BroadcastReceiverManager.instance.sendMultiBroadcast( -// Constant.NOT_PROCESSED_ACTION, -// Constant.NOT_CONFIRMED_ACTION, -// Constant.NOT_ACCEPT_ACTION -// ) this.finish() } else -> { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index b051c34..8b95aa8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -7,15 +7,18 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.SearchResultAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.SearchResultModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -26,7 +29,7 @@ import okhttp3.RequestBody import org.json.JSONObject -class OrderSearchResultActivity : BaseActivity() { +class OrderSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var operationViewModel: OperationViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -42,6 +45,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "查询结果" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -95,12 +101,14 @@ } }) workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt index e5c9f86..f53a0d8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt @@ -1,32 +1,46 @@ package com.casic.qd.smartwell.view -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting +import com.casic.qd.smartwell.R import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : AppCompatActivity(), PermissionCallbacks { +class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - PageNavigationManager.addActivity(this) + override fun initLayoutView(): Int = R.layout.activity_permssion + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) + } + + override fun initData() { //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - EasyPermissions.requestPermissions( - this, - "需要获取相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) + enterMainButton.setOnClickListener { + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) + } } } + override fun initEvent() { + + } + private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) @@ -36,9 +50,7 @@ } override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt index 5ce9def..edad500 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt @@ -2,21 +2,23 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder import kotlinx.android.synthetic.main.activity_alarm_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchAlarmActivity : BaseActivity() { +class SearchAlarmActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var areaViewModel: AreaViewModel @@ -27,6 +29,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "告警查询" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt index f994402..a5f6a30 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt @@ -12,7 +12,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceDataListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceDataModel @@ -20,8 +19,12 @@ import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import kotlinx.android.synthetic.main.activity_data_search.* @@ -34,7 +37,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDataActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDataActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var deviceViewModel: DeviceViewModel @@ -52,6 +55,9 @@ override fun initLayoutView(): Int = R.layout.activity_data_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "数据查询" rightOptionView.setOnClickListener { @@ -68,11 +74,12 @@ weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + //默认加载所有数据 + obtainSearchResult() } override fun initEvent() { - //默认加载所有数据 - obtainSearchResult(pageIndex) deviceViewModel.deviceDataModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -100,12 +107,14 @@ }) deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -114,12 +123,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } areaViewModel.areaModel.observe(this, { @@ -152,7 +161,7 @@ }) } - private fun obtainSearchResult(pageIndex: Int) { + private fun obtainSearchResult() { deviceViewModel.obtainDeviceData(areaId, keywords, pageIndex) } @@ -173,7 +182,7 @@ searchButton.setOnClickListener { keywords = deviceCodeView.text.toString() pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -201,7 +210,8 @@ } else { if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt index cc9cdb2..643a7e1 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt @@ -11,7 +11,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceListModel @@ -25,8 +24,12 @@ import com.casic.qd.smartwell.widgets.BottomAreaSheet import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState @@ -40,7 +43,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDeviceActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDeviceActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchDeviceViewModel: SearchResultViewModel @@ -66,6 +69,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "设备查询" rightOptionView.setOnClickListener { @@ -90,10 +96,11 @@ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + obtainSearchResult() } override fun initEvent() { - obtainSearchResult(pageIndex) searchDeviceViewModel.deviceResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -121,12 +128,14 @@ }) searchDeviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -135,12 +144,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } //数据监听 @@ -195,7 +204,7 @@ searchButton.setOnClickListener { pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -296,9 +305,9 @@ }) } - private fun obtainSearchResult(page: Int) { + private fun obtainSearchResult() { searchDeviceViewModel.obtainDeviceResult( - keywords, deviceTypeValue, deptId, deviceState, areaId, page + keywords, deviceTypeValue, deptId, deviceState, areaId, pageIndex ) } @@ -309,7 +318,8 @@ } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt index 430174b..e6e6045 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt @@ -5,23 +5,25 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AlarmContentModel import com.casic.qd.smartwell.model.OrderStatusModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.zhy.view.flowlayout.FlowLayout import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchOrderActivity : BaseActivity() { +class SearchOrderActivity : KotlinBaseActivity() { private lateinit var contentTypeViewModel: AlarmViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -37,6 +39,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单查询" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt index 3d78bfa..157c5e8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt @@ -5,17 +5,18 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.utils.WebCrawler import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -class SplashScreenActivity : BaseActivity() { +class SplashScreenActivity : KotlinBaseActivity() { private val kTag = "SplashScreenActivity" private lateinit var userDetailViewModel: UserDetailViewModel @@ -25,7 +26,7 @@ override fun initLayoutView(): Int = R.layout.activity_splash override fun setupTopBarLayout() { - + ImmersionBar.with(this).init() } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt index c87ffd2..bffa1b7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt @@ -5,7 +5,6 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -15,11 +14,11 @@ import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.BarEntry import com.github.mikephil.charting.data.PieEntry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type -import com.pengxh.kt.lite.extensions.obtainQuarterOfYear -import com.pengxh.kt.lite.extensions.timestampToDate -import com.pengxh.kt.lite.extensions.timestampToLastMonthDate -import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_statistics.* import kotlinx.android.synthetic.main.include_base_title.* import java.util.* @@ -30,7 +29,7 @@ * @date 2022/2/17 14:34 * @email 290677893@qq.com */ -class StatisticsActivity : BaseActivity() { +class StatisticsActivity : KotlinBaseActivity() { private val context: Context = this@StatisticsActivity private lateinit var waterViewModel: WaterStatisticsViewModel @@ -40,6 +39,9 @@ override fun initLayoutView(): Int = R.layout.activity_statistics override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "汇总统计" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt index 7818f8e..7e81e6c 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt @@ -5,7 +5,6 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper @@ -13,14 +12,17 @@ import com.casic.qd.smartwell.vm.WaterStatisticsViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_water_expanded.* import java.util.* import kotlin.collections.ArrayList -class WaterExpandedActivity : BaseActivity() { +class WaterExpandedActivity : KotlinBaseActivity() { private val kTag = "WaterExpandedActivity" private val context: Context = this@WaterExpandedActivity @@ -29,7 +31,8 @@ override fun initLayoutView(): Int = R.layout.activity_water_expanded override fun setupTopBarLayout() { - + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt deleted file mode 100644 index e016832..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.qd.smartwell.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.casic.qd.smartwell.R -import com.qmuiteam.qmui.util.QMUIDisplayHelper - - -/** - * 可删减九宫格 - * */ -@SuppressLint("NotifyDataSetChanged") -class NineGridImageAdapter(private val context: Context) : - RecyclerView.Adapter() { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 3a226ca..c67e61a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.* @@ -15,7 +14,7 @@ * PublicKey校验 */ @GET("/config/baseConfig") - suspend fun obtainPublicKey(): PublicKeyModel + suspend fun authenticate(): String /** * 登录并获取Token @@ -26,7 +25,7 @@ */ @FormUrlEncoded @POST("/user/login") - suspend fun obtainLoginResult( + suspend fun login( @Field("sid") sid: String, @Field("username") account: String, @Field("password") secretKey: String diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 8a35a50..237af66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory @@ -23,15 +22,15 @@ /** * 验证PublicKey */ - suspend fun authenticate(): PublicKeyModel { - return api.obtainPublicKey() + suspend fun authenticate(): String { + return api.authenticate() } /** * 登录并获取Token */ suspend fun login(sid: String, account: String, secretKey: String): String { - return api.obtainLoginResult(sid, account, secretKey) + return api.login(sid, account, secretKey) } /** diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 976811c..85370c5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -6,13 +6,16 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -20,7 +23,7 @@ import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmManagementActivity : BaseActivity() { +class AlarmManagementActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -35,6 +38,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "当前告警" rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index f27d4d3..f9e8fbc 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -6,14 +6,17 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.SearchResultViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -21,7 +24,7 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmSearchResultActivity : BaseActivity() { +class AlarmSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchAlarmViewModel: SearchResultViewModel @@ -38,6 +41,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "查询结果" } @@ -91,12 +97,14 @@ }) searchAlarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 597e793..40240d5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.view; import android.content.Context +import android.graphics.Color import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -9,10 +10,8 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.photoview.PhotoView -import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager @@ -20,13 +19,13 @@ import java.util.* -class BigImageActivity : BaseActivity() { +class BigImageActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_big_image override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, R.color.black.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, Color.BLACK) + leftBackView.setOnClickListener { finish() } } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 6e35c09..7660a79 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -2,22 +2,24 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.timestampToLastWeekTime import com.pengxh.kt.lite.extensions.timestampToTime +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_device_data_detail.* import kotlinx.android.synthetic.main.activity_main.rightOptionView import kotlinx.android.synthetic.main.activity_main.titleView -class DeviceDataDetailActivity : BaseActivity() { +class DeviceDataDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDataDetailActivity" private lateinit var deviceCode: String @@ -26,6 +28,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_data_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } deviceCode = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! titleView.text = String.format("${deviceCode}历史数据") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index dc5e200..e681958 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -8,20 +8,21 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.LoginViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper import kotlinx.android.synthetic.main.activity_login.* -// TODO 修改登录逻辑,参考四分公司 -class LoginActivity : BaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel @@ -48,8 +49,8 @@ override fun initLayoutView(): Int = R.layout.activity_login override fun setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this) + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) } override fun initData() { @@ -102,7 +103,7 @@ val dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!) //登录并获取Token,POST请求 - loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey) + loginViewModel.enter(it.data!!.sid!!, account, dataByPublicKey) loginViewModel.resultModel.observe(this, { loginResult -> if (loginResult.code == 200) { AuthenticationHelper.saveToken(loginResult.data!!.token!!) @@ -121,20 +122,15 @@ }) loginViewModel.loadState.observe(this, { loginState -> when (loginState) { - is LoadState.Success -> { - "登录成功".show(this) - DialogHelper.dismissLoadingDialog() + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "登录中,请稍后...") } else -> { - "登录失败,用户名或密码错误".show(this) DialogHelper.dismissLoadingDialog() } } }) } }) - authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index b0f3847..704e484 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -13,7 +13,6 @@ import com.bumptech.glide.Glide import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.HomeRecycleAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.model.LineChartEntryModel @@ -26,7 +25,10 @@ import com.google.android.material.navigation.NavigationView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState @@ -49,7 +51,7 @@ import java.util.* import kotlin.collections.ArrayList -class MainActivity : BaseActivity(), DrawerLayout.DrawerListener, +class MainActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener, NavigationView.OnNavigationItemSelectedListener { private val kTag = "MainActivity" @@ -64,7 +66,23 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = resources.getString(R.string.app_name) + + leftOptionView.setOnClickListener { + if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { + leftDrawerLayout.closeDrawer(GravityCompat.START) + } else { + leftDrawerLayout.openDrawer(GravityCompat.START) + } + } + leftDrawerLayout.addDrawerListener(this) + + rightOptionView.setOnClickListener { + navigatePageTo() + } } override fun initData() { @@ -149,18 +167,13 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) + + waterViewModel.waterStatistics() } override fun initEvent() { - leftOptionView.setOnClickListener { - if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { - leftDrawerLayout.closeDrawer(GravityCompat.START) - } else { - leftDrawerLayout.openDrawer(GravityCompat.START) - } - } - leftDrawerLayout.addDrawerListener(this) navigationView.setNavigationItemSelectedListener(this) + loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -169,11 +182,6 @@ } }) - rightOptionView.setOnClickListener { - navigatePageTo() - } - - waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index d6336d6..1ee58ff 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -14,7 +14,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.MapDeviceListModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -22,9 +21,13 @@ import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -38,7 +41,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class MapActivity : BaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class MapActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "MapActivity" @@ -70,8 +73,12 @@ override fun initLayoutView(): Int = R.layout.activity_map override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index b386373..809e6c0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,22 +5,24 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_completed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderCompletedDetailActivity : BaseActivity() { +class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -28,6 +30,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index 8653564..76f8077 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -9,41 +9,41 @@ import android.view.View import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderInHandleDetailActivity : BaseActivity() { +class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private val context: Context = this@OrderInHandleDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,6 +52,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -59,16 +62,14 @@ override fun initData() { val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!!//初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) - workOrderViewModel.obtainWorkOrderDetail(jobId) } @@ -240,7 +241,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -274,7 +275,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //处理完成工单状态处理 @@ -330,7 +338,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -393,22 +400,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index fa5a469..483307d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -3,30 +3,36 @@ import androidx.fragment.app.Fragment import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.TopViewPagerAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.fragment.OrderCompletedFragment import com.casic.qd.smartwell.fragment.OrderInHandleFragment import com.casic.qd.smartwell.fragment.OrderNotConfirmedFragment import com.casic.qd.smartwell.fragment.OrderNotProcessedFragment import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_order_management.* import java.util.* -class OrderManagementActivity : BaseActivity() { +class OrderManagementActivity : KotlinBaseActivity() { - private var fragmentList: ArrayList = ArrayList() + private var fragmentPages: ArrayList = ArrayList() init { - fragmentList.add(OrderNotProcessedFragment())//待处理 - fragmentList.add(OrderNotConfirmedFragment())//待确认 - fragmentList.add(OrderInHandleFragment())//处理中 - fragmentList.add(OrderCompletedFragment())//已完成 + fragmentPages.add(OrderNotProcessedFragment())//待处理 + fragmentPages.add(OrderNotConfirmedFragment())//待确认 + fragmentPages.add(OrderInHandleFragment())//处理中 + fragmentPages.add(OrderCompletedFragment())//已完成 } override fun initLayoutView(): Int = R.layout.activity_order_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "工单管理" rightOptionView.setOnClickListener { @@ -36,9 +42,9 @@ override fun initData() { val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentList + supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) - orderViewPager.offscreenPageLimit = fragmentList.size + orderViewPager.offscreenPageLimit = fragmentPages.size orderViewPager.adapter = topViewPagerAdapter orderTabLayout.setupWithViewPager(orderViewPager) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index 0b5e1d1..dd87a66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -8,42 +8,41 @@ import android.util.Log import android.view.View import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderNotConfirmedDetailActivity : BaseActivity() { +class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,23 +51,26 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } } override fun initData() { - jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) + workOrderViewModel.obtainWorkOrderDetail(jobId) } override fun initEvent() { @@ -93,7 +95,6 @@ } }) - workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -204,7 +205,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -238,7 +239,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //确认工单状态处理 @@ -262,6 +270,7 @@ BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(arrayListOf("拍照", "相册")) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { @@ -293,7 +302,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -356,22 +364,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index 63922a1..ac18ef0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,21 +6,24 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Poi import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WellViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderNotProcessedDetailActivity : BaseActivity() { +class OrderNotProcessedDetailActivity : KotlinBaseActivity() { private val context: Context = this@OrderNotProcessedDetailActivity private lateinit var workOrderViewModel: WorkOrderViewModel @@ -30,6 +33,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -147,12 +153,6 @@ } is LoadState.Success -> { DialogHelper.dismissLoadingDialog() - //通知列表刷新数据 -// BroadcastReceiverManager.instance.sendMultiBroadcast( -// Constant.NOT_PROCESSED_ACTION, -// Constant.NOT_CONFIRMED_ACTION, -// Constant.NOT_ACCEPT_ACTION -// ) this.finish() } else -> { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index b051c34..8b95aa8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -7,15 +7,18 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.SearchResultAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.SearchResultModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -26,7 +29,7 @@ import okhttp3.RequestBody import org.json.JSONObject -class OrderSearchResultActivity : BaseActivity() { +class OrderSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var operationViewModel: OperationViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -42,6 +45,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "查询结果" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -95,12 +101,14 @@ } }) workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt index e5c9f86..f53a0d8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt @@ -1,32 +1,46 @@ package com.casic.qd.smartwell.view -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting +import com.casic.qd.smartwell.R import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : AppCompatActivity(), PermissionCallbacks { +class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - PageNavigationManager.addActivity(this) + override fun initLayoutView(): Int = R.layout.activity_permssion + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) + } + + override fun initData() { //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - EasyPermissions.requestPermissions( - this, - "需要获取相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) + enterMainButton.setOnClickListener { + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) + } } } + override fun initEvent() { + + } + private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) @@ -36,9 +50,7 @@ } override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt index 5ce9def..edad500 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt @@ -2,21 +2,23 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder import kotlinx.android.synthetic.main.activity_alarm_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchAlarmActivity : BaseActivity() { +class SearchAlarmActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var areaViewModel: AreaViewModel @@ -27,6 +29,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "告警查询" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt index f994402..a5f6a30 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt @@ -12,7 +12,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceDataListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceDataModel @@ -20,8 +19,12 @@ import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import kotlinx.android.synthetic.main.activity_data_search.* @@ -34,7 +37,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDataActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDataActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var deviceViewModel: DeviceViewModel @@ -52,6 +55,9 @@ override fun initLayoutView(): Int = R.layout.activity_data_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "数据查询" rightOptionView.setOnClickListener { @@ -68,11 +74,12 @@ weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + //默认加载所有数据 + obtainSearchResult() } override fun initEvent() { - //默认加载所有数据 - obtainSearchResult(pageIndex) deviceViewModel.deviceDataModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -100,12 +107,14 @@ }) deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -114,12 +123,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } areaViewModel.areaModel.observe(this, { @@ -152,7 +161,7 @@ }) } - private fun obtainSearchResult(pageIndex: Int) { + private fun obtainSearchResult() { deviceViewModel.obtainDeviceData(areaId, keywords, pageIndex) } @@ -173,7 +182,7 @@ searchButton.setOnClickListener { keywords = deviceCodeView.text.toString() pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -201,7 +210,8 @@ } else { if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt index cc9cdb2..643a7e1 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt @@ -11,7 +11,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceListModel @@ -25,8 +24,12 @@ import com.casic.qd.smartwell.widgets.BottomAreaSheet import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState @@ -40,7 +43,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDeviceActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDeviceActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchDeviceViewModel: SearchResultViewModel @@ -66,6 +69,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "设备查询" rightOptionView.setOnClickListener { @@ -90,10 +96,11 @@ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + obtainSearchResult() } override fun initEvent() { - obtainSearchResult(pageIndex) searchDeviceViewModel.deviceResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -121,12 +128,14 @@ }) searchDeviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -135,12 +144,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } //数据监听 @@ -195,7 +204,7 @@ searchButton.setOnClickListener { pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -296,9 +305,9 @@ }) } - private fun obtainSearchResult(page: Int) { + private fun obtainSearchResult() { searchDeviceViewModel.obtainDeviceResult( - keywords, deviceTypeValue, deptId, deviceState, areaId, page + keywords, deviceTypeValue, deptId, deviceState, areaId, pageIndex ) } @@ -309,7 +318,8 @@ } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt index 430174b..e6e6045 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt @@ -5,23 +5,25 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AlarmContentModel import com.casic.qd.smartwell.model.OrderStatusModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.zhy.view.flowlayout.FlowLayout import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchOrderActivity : BaseActivity() { +class SearchOrderActivity : KotlinBaseActivity() { private lateinit var contentTypeViewModel: AlarmViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -37,6 +39,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单查询" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt index 3d78bfa..157c5e8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt @@ -5,17 +5,18 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.utils.WebCrawler import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -class SplashScreenActivity : BaseActivity() { +class SplashScreenActivity : KotlinBaseActivity() { private val kTag = "SplashScreenActivity" private lateinit var userDetailViewModel: UserDetailViewModel @@ -25,7 +26,7 @@ override fun initLayoutView(): Int = R.layout.activity_splash override fun setupTopBarLayout() { - + ImmersionBar.with(this).init() } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt index c87ffd2..bffa1b7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt @@ -5,7 +5,6 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -15,11 +14,11 @@ import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.BarEntry import com.github.mikephil.charting.data.PieEntry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type -import com.pengxh.kt.lite.extensions.obtainQuarterOfYear -import com.pengxh.kt.lite.extensions.timestampToDate -import com.pengxh.kt.lite.extensions.timestampToLastMonthDate -import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_statistics.* import kotlinx.android.synthetic.main.include_base_title.* import java.util.* @@ -30,7 +29,7 @@ * @date 2022/2/17 14:34 * @email 290677893@qq.com */ -class StatisticsActivity : BaseActivity() { +class StatisticsActivity : KotlinBaseActivity() { private val context: Context = this@StatisticsActivity private lateinit var waterViewModel: WaterStatisticsViewModel @@ -40,6 +39,9 @@ override fun initLayoutView(): Int = R.layout.activity_statistics override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "汇总统计" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt index 7818f8e..7e81e6c 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt @@ -5,7 +5,6 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper @@ -13,14 +12,17 @@ import com.casic.qd.smartwell.vm.WaterStatisticsViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_water_expanded.* import java.util.* import kotlin.collections.ArrayList -class WaterExpandedActivity : BaseActivity() { +class WaterExpandedActivity : KotlinBaseActivity() { private val kTag = "WaterExpandedActivity" private val context: Context = this@WaterExpandedActivity @@ -29,7 +31,8 @@ override fun initLayoutView(): Int = R.layout.activity_water_expanded override fun setupTopBarLayout() { - + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt index b22a1d9..040202a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt @@ -5,14 +5,17 @@ import android.webkit.WebView import android.widget.LinearLayout import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar import com.just.agentweb.AgentWeb import com.just.agentweb.WebViewClient +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.readAssetsFile +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_web.* -class WebsiteActivity : BaseActivity() { +class WebsiteActivity : KotlinBaseActivity() { private lateinit var agentWeb: AgentWeb private lateinit var url: String @@ -20,6 +23,9 @@ override fun initLayoutView(): Int = R.layout.activity_web override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "海洋石油工程有限公司" } diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt deleted file mode 100644 index e016832..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.qd.smartwell.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.casic.qd.smartwell.R -import com.qmuiteam.qmui.util.QMUIDisplayHelper - - -/** - * 可删减九宫格 - * */ -@SuppressLint("NotifyDataSetChanged") -class NineGridImageAdapter(private val context: Context) : - RecyclerView.Adapter() { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 3a226ca..c67e61a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.* @@ -15,7 +14,7 @@ * PublicKey校验 */ @GET("/config/baseConfig") - suspend fun obtainPublicKey(): PublicKeyModel + suspend fun authenticate(): String /** * 登录并获取Token @@ -26,7 +25,7 @@ */ @FormUrlEncoded @POST("/user/login") - suspend fun obtainLoginResult( + suspend fun login( @Field("sid") sid: String, @Field("username") account: String, @Field("password") secretKey: String diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 8a35a50..237af66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory @@ -23,15 +22,15 @@ /** * 验证PublicKey */ - suspend fun authenticate(): PublicKeyModel { - return api.obtainPublicKey() + suspend fun authenticate(): String { + return api.authenticate() } /** * 登录并获取Token */ suspend fun login(sid: String, account: String, secretKey: String): String { - return api.obtainLoginResult(sid, account, secretKey) + return api.login(sid, account, secretKey) } /** diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 976811c..85370c5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -6,13 +6,16 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -20,7 +23,7 @@ import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmManagementActivity : BaseActivity() { +class AlarmManagementActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -35,6 +38,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "当前告警" rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index f27d4d3..f9e8fbc 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -6,14 +6,17 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.SearchResultViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -21,7 +24,7 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmSearchResultActivity : BaseActivity() { +class AlarmSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchAlarmViewModel: SearchResultViewModel @@ -38,6 +41,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "查询结果" } @@ -91,12 +97,14 @@ }) searchAlarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 597e793..40240d5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.view; import android.content.Context +import android.graphics.Color import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -9,10 +10,8 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.photoview.PhotoView -import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager @@ -20,13 +19,13 @@ import java.util.* -class BigImageActivity : BaseActivity() { +class BigImageActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_big_image override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, R.color.black.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, Color.BLACK) + leftBackView.setOnClickListener { finish() } } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 6e35c09..7660a79 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -2,22 +2,24 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.timestampToLastWeekTime import com.pengxh.kt.lite.extensions.timestampToTime +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_device_data_detail.* import kotlinx.android.synthetic.main.activity_main.rightOptionView import kotlinx.android.synthetic.main.activity_main.titleView -class DeviceDataDetailActivity : BaseActivity() { +class DeviceDataDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDataDetailActivity" private lateinit var deviceCode: String @@ -26,6 +28,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_data_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } deviceCode = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! titleView.text = String.format("${deviceCode}历史数据") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index dc5e200..e681958 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -8,20 +8,21 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.LoginViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper import kotlinx.android.synthetic.main.activity_login.* -// TODO 修改登录逻辑,参考四分公司 -class LoginActivity : BaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel @@ -48,8 +49,8 @@ override fun initLayoutView(): Int = R.layout.activity_login override fun setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this) + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) } override fun initData() { @@ -102,7 +103,7 @@ val dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!) //登录并获取Token,POST请求 - loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey) + loginViewModel.enter(it.data!!.sid!!, account, dataByPublicKey) loginViewModel.resultModel.observe(this, { loginResult -> if (loginResult.code == 200) { AuthenticationHelper.saveToken(loginResult.data!!.token!!) @@ -121,20 +122,15 @@ }) loginViewModel.loadState.observe(this, { loginState -> when (loginState) { - is LoadState.Success -> { - "登录成功".show(this) - DialogHelper.dismissLoadingDialog() + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "登录中,请稍后...") } else -> { - "登录失败,用户名或密码错误".show(this) DialogHelper.dismissLoadingDialog() } } }) } }) - authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index b0f3847..704e484 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -13,7 +13,6 @@ import com.bumptech.glide.Glide import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.HomeRecycleAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.model.LineChartEntryModel @@ -26,7 +25,10 @@ import com.google.android.material.navigation.NavigationView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState @@ -49,7 +51,7 @@ import java.util.* import kotlin.collections.ArrayList -class MainActivity : BaseActivity(), DrawerLayout.DrawerListener, +class MainActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener, NavigationView.OnNavigationItemSelectedListener { private val kTag = "MainActivity" @@ -64,7 +66,23 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = resources.getString(R.string.app_name) + + leftOptionView.setOnClickListener { + if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { + leftDrawerLayout.closeDrawer(GravityCompat.START) + } else { + leftDrawerLayout.openDrawer(GravityCompat.START) + } + } + leftDrawerLayout.addDrawerListener(this) + + rightOptionView.setOnClickListener { + navigatePageTo() + } } override fun initData() { @@ -149,18 +167,13 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) + + waterViewModel.waterStatistics() } override fun initEvent() { - leftOptionView.setOnClickListener { - if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { - leftDrawerLayout.closeDrawer(GravityCompat.START) - } else { - leftDrawerLayout.openDrawer(GravityCompat.START) - } - } - leftDrawerLayout.addDrawerListener(this) navigationView.setNavigationItemSelectedListener(this) + loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -169,11 +182,6 @@ } }) - rightOptionView.setOnClickListener { - navigatePageTo() - } - - waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index d6336d6..1ee58ff 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -14,7 +14,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.MapDeviceListModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -22,9 +21,13 @@ import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -38,7 +41,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class MapActivity : BaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class MapActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "MapActivity" @@ -70,8 +73,12 @@ override fun initLayoutView(): Int = R.layout.activity_map override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index b386373..809e6c0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,22 +5,24 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_completed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderCompletedDetailActivity : BaseActivity() { +class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -28,6 +30,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index 8653564..76f8077 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -9,41 +9,41 @@ import android.view.View import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderInHandleDetailActivity : BaseActivity() { +class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private val context: Context = this@OrderInHandleDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,6 +52,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -59,16 +62,14 @@ override fun initData() { val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!!//初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) - workOrderViewModel.obtainWorkOrderDetail(jobId) } @@ -240,7 +241,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -274,7 +275,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //处理完成工单状态处理 @@ -330,7 +338,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -393,22 +400,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index fa5a469..483307d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -3,30 +3,36 @@ import androidx.fragment.app.Fragment import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.TopViewPagerAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.fragment.OrderCompletedFragment import com.casic.qd.smartwell.fragment.OrderInHandleFragment import com.casic.qd.smartwell.fragment.OrderNotConfirmedFragment import com.casic.qd.smartwell.fragment.OrderNotProcessedFragment import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_order_management.* import java.util.* -class OrderManagementActivity : BaseActivity() { +class OrderManagementActivity : KotlinBaseActivity() { - private var fragmentList: ArrayList = ArrayList() + private var fragmentPages: ArrayList = ArrayList() init { - fragmentList.add(OrderNotProcessedFragment())//待处理 - fragmentList.add(OrderNotConfirmedFragment())//待确认 - fragmentList.add(OrderInHandleFragment())//处理中 - fragmentList.add(OrderCompletedFragment())//已完成 + fragmentPages.add(OrderNotProcessedFragment())//待处理 + fragmentPages.add(OrderNotConfirmedFragment())//待确认 + fragmentPages.add(OrderInHandleFragment())//处理中 + fragmentPages.add(OrderCompletedFragment())//已完成 } override fun initLayoutView(): Int = R.layout.activity_order_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "工单管理" rightOptionView.setOnClickListener { @@ -36,9 +42,9 @@ override fun initData() { val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentList + supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) - orderViewPager.offscreenPageLimit = fragmentList.size + orderViewPager.offscreenPageLimit = fragmentPages.size orderViewPager.adapter = topViewPagerAdapter orderTabLayout.setupWithViewPager(orderViewPager) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index 0b5e1d1..dd87a66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -8,42 +8,41 @@ import android.util.Log import android.view.View import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderNotConfirmedDetailActivity : BaseActivity() { +class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,23 +51,26 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } } override fun initData() { - jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) + workOrderViewModel.obtainWorkOrderDetail(jobId) } override fun initEvent() { @@ -93,7 +95,6 @@ } }) - workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -204,7 +205,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -238,7 +239,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //确认工单状态处理 @@ -262,6 +270,7 @@ BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(arrayListOf("拍照", "相册")) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { @@ -293,7 +302,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -356,22 +364,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index 63922a1..ac18ef0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,21 +6,24 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Poi import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WellViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderNotProcessedDetailActivity : BaseActivity() { +class OrderNotProcessedDetailActivity : KotlinBaseActivity() { private val context: Context = this@OrderNotProcessedDetailActivity private lateinit var workOrderViewModel: WorkOrderViewModel @@ -30,6 +33,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -147,12 +153,6 @@ } is LoadState.Success -> { DialogHelper.dismissLoadingDialog() - //通知列表刷新数据 -// BroadcastReceiverManager.instance.sendMultiBroadcast( -// Constant.NOT_PROCESSED_ACTION, -// Constant.NOT_CONFIRMED_ACTION, -// Constant.NOT_ACCEPT_ACTION -// ) this.finish() } else -> { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index b051c34..8b95aa8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -7,15 +7,18 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.SearchResultAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.SearchResultModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -26,7 +29,7 @@ import okhttp3.RequestBody import org.json.JSONObject -class OrderSearchResultActivity : BaseActivity() { +class OrderSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var operationViewModel: OperationViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -42,6 +45,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "查询结果" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -95,12 +101,14 @@ } }) workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt index e5c9f86..f53a0d8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt @@ -1,32 +1,46 @@ package com.casic.qd.smartwell.view -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting +import com.casic.qd.smartwell.R import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : AppCompatActivity(), PermissionCallbacks { +class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - PageNavigationManager.addActivity(this) + override fun initLayoutView(): Int = R.layout.activity_permssion + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) + } + + override fun initData() { //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - EasyPermissions.requestPermissions( - this, - "需要获取相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) + enterMainButton.setOnClickListener { + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) + } } } + override fun initEvent() { + + } + private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) @@ -36,9 +50,7 @@ } override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt index 5ce9def..edad500 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt @@ -2,21 +2,23 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder import kotlinx.android.synthetic.main.activity_alarm_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchAlarmActivity : BaseActivity() { +class SearchAlarmActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var areaViewModel: AreaViewModel @@ -27,6 +29,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "告警查询" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt index f994402..a5f6a30 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt @@ -12,7 +12,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceDataListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceDataModel @@ -20,8 +19,12 @@ import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import kotlinx.android.synthetic.main.activity_data_search.* @@ -34,7 +37,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDataActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDataActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var deviceViewModel: DeviceViewModel @@ -52,6 +55,9 @@ override fun initLayoutView(): Int = R.layout.activity_data_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "数据查询" rightOptionView.setOnClickListener { @@ -68,11 +74,12 @@ weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + //默认加载所有数据 + obtainSearchResult() } override fun initEvent() { - //默认加载所有数据 - obtainSearchResult(pageIndex) deviceViewModel.deviceDataModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -100,12 +107,14 @@ }) deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -114,12 +123,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } areaViewModel.areaModel.observe(this, { @@ -152,7 +161,7 @@ }) } - private fun obtainSearchResult(pageIndex: Int) { + private fun obtainSearchResult() { deviceViewModel.obtainDeviceData(areaId, keywords, pageIndex) } @@ -173,7 +182,7 @@ searchButton.setOnClickListener { keywords = deviceCodeView.text.toString() pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -201,7 +210,8 @@ } else { if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt index cc9cdb2..643a7e1 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt @@ -11,7 +11,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceListModel @@ -25,8 +24,12 @@ import com.casic.qd.smartwell.widgets.BottomAreaSheet import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState @@ -40,7 +43,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDeviceActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDeviceActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchDeviceViewModel: SearchResultViewModel @@ -66,6 +69,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "设备查询" rightOptionView.setOnClickListener { @@ -90,10 +96,11 @@ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + obtainSearchResult() } override fun initEvent() { - obtainSearchResult(pageIndex) searchDeviceViewModel.deviceResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -121,12 +128,14 @@ }) searchDeviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -135,12 +144,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } //数据监听 @@ -195,7 +204,7 @@ searchButton.setOnClickListener { pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -296,9 +305,9 @@ }) } - private fun obtainSearchResult(page: Int) { + private fun obtainSearchResult() { searchDeviceViewModel.obtainDeviceResult( - keywords, deviceTypeValue, deptId, deviceState, areaId, page + keywords, deviceTypeValue, deptId, deviceState, areaId, pageIndex ) } @@ -309,7 +318,8 @@ } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt index 430174b..e6e6045 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt @@ -5,23 +5,25 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AlarmContentModel import com.casic.qd.smartwell.model.OrderStatusModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.zhy.view.flowlayout.FlowLayout import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchOrderActivity : BaseActivity() { +class SearchOrderActivity : KotlinBaseActivity() { private lateinit var contentTypeViewModel: AlarmViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -37,6 +39,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单查询" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt index 3d78bfa..157c5e8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt @@ -5,17 +5,18 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.utils.WebCrawler import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -class SplashScreenActivity : BaseActivity() { +class SplashScreenActivity : KotlinBaseActivity() { private val kTag = "SplashScreenActivity" private lateinit var userDetailViewModel: UserDetailViewModel @@ -25,7 +26,7 @@ override fun initLayoutView(): Int = R.layout.activity_splash override fun setupTopBarLayout() { - + ImmersionBar.with(this).init() } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt index c87ffd2..bffa1b7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt @@ -5,7 +5,6 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -15,11 +14,11 @@ import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.BarEntry import com.github.mikephil.charting.data.PieEntry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type -import com.pengxh.kt.lite.extensions.obtainQuarterOfYear -import com.pengxh.kt.lite.extensions.timestampToDate -import com.pengxh.kt.lite.extensions.timestampToLastMonthDate -import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_statistics.* import kotlinx.android.synthetic.main.include_base_title.* import java.util.* @@ -30,7 +29,7 @@ * @date 2022/2/17 14:34 * @email 290677893@qq.com */ -class StatisticsActivity : BaseActivity() { +class StatisticsActivity : KotlinBaseActivity() { private val context: Context = this@StatisticsActivity private lateinit var waterViewModel: WaterStatisticsViewModel @@ -40,6 +39,9 @@ override fun initLayoutView(): Int = R.layout.activity_statistics override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "汇总统计" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt index 7818f8e..7e81e6c 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt @@ -5,7 +5,6 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper @@ -13,14 +12,17 @@ import com.casic.qd.smartwell.vm.WaterStatisticsViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_water_expanded.* import java.util.* import kotlin.collections.ArrayList -class WaterExpandedActivity : BaseActivity() { +class WaterExpandedActivity : KotlinBaseActivity() { private val kTag = "WaterExpandedActivity" private val context: Context = this@WaterExpandedActivity @@ -29,7 +31,8 @@ override fun initLayoutView(): Int = R.layout.activity_water_expanded override fun setupTopBarLayout() { - + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt index b22a1d9..040202a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt @@ -5,14 +5,17 @@ import android.webkit.WebView import android.widget.LinearLayout import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar import com.just.agentweb.AgentWeb import com.just.agentweb.WebViewClient +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.readAssetsFile +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_web.* -class WebsiteActivity : BaseActivity() { +class WebsiteActivity : KotlinBaseActivity() { private lateinit var agentWeb: AgentWeb private lateinit var url: String @@ -20,6 +23,9 @@ override fun initLayoutView(): Int = R.layout.activity_web override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "海洋石油工程有限公司" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt index 5347d10..69b8b35 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt @@ -3,35 +3,41 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WellViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_well_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class WellDetailActivity : BaseActivity() { +class WellDetailActivity : KotlinBaseActivity() { private lateinit var wellDetailViewModel: WellViewModel - private lateinit var wellId: String override fun initLayoutView(): Int = R.layout.activity_well_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "井详情" } override fun initData() { - wellId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val wellId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! wellDetailViewModel = ViewModelProvider(this).get(WellViewModel::class.java) + + wellDetailViewModel.obtainWellDetail(wellId) } override fun initEvent() { - wellDetailViewModel.obtainWellDetail(wellId) wellDetailViewModel.detailModel.observe(this, { if (it.code == 200) { val wellDetail = it.data!! diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt deleted file mode 100644 index e016832..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.qd.smartwell.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.casic.qd.smartwell.R -import com.qmuiteam.qmui.util.QMUIDisplayHelper - - -/** - * 可删减九宫格 - * */ -@SuppressLint("NotifyDataSetChanged") -class NineGridImageAdapter(private val context: Context) : - RecyclerView.Adapter() { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 3a226ca..c67e61a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.* @@ -15,7 +14,7 @@ * PublicKey校验 */ @GET("/config/baseConfig") - suspend fun obtainPublicKey(): PublicKeyModel + suspend fun authenticate(): String /** * 登录并获取Token @@ -26,7 +25,7 @@ */ @FormUrlEncoded @POST("/user/login") - suspend fun obtainLoginResult( + suspend fun login( @Field("sid") sid: String, @Field("username") account: String, @Field("password") secretKey: String diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 8a35a50..237af66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory @@ -23,15 +22,15 @@ /** * 验证PublicKey */ - suspend fun authenticate(): PublicKeyModel { - return api.obtainPublicKey() + suspend fun authenticate(): String { + return api.authenticate() } /** * 登录并获取Token */ suspend fun login(sid: String, account: String, secretKey: String): String { - return api.obtainLoginResult(sid, account, secretKey) + return api.login(sid, account, secretKey) } /** diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 976811c..85370c5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -6,13 +6,16 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -20,7 +23,7 @@ import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmManagementActivity : BaseActivity() { +class AlarmManagementActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -35,6 +38,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "当前告警" rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index f27d4d3..f9e8fbc 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -6,14 +6,17 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.SearchResultViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -21,7 +24,7 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmSearchResultActivity : BaseActivity() { +class AlarmSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchAlarmViewModel: SearchResultViewModel @@ -38,6 +41,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "查询结果" } @@ -91,12 +97,14 @@ }) searchAlarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 597e793..40240d5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.view; import android.content.Context +import android.graphics.Color import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -9,10 +10,8 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.photoview.PhotoView -import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager @@ -20,13 +19,13 @@ import java.util.* -class BigImageActivity : BaseActivity() { +class BigImageActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_big_image override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, R.color.black.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, Color.BLACK) + leftBackView.setOnClickListener { finish() } } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 6e35c09..7660a79 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -2,22 +2,24 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.timestampToLastWeekTime import com.pengxh.kt.lite.extensions.timestampToTime +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_device_data_detail.* import kotlinx.android.synthetic.main.activity_main.rightOptionView import kotlinx.android.synthetic.main.activity_main.titleView -class DeviceDataDetailActivity : BaseActivity() { +class DeviceDataDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDataDetailActivity" private lateinit var deviceCode: String @@ -26,6 +28,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_data_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } deviceCode = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! titleView.text = String.format("${deviceCode}历史数据") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index dc5e200..e681958 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -8,20 +8,21 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.LoginViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper import kotlinx.android.synthetic.main.activity_login.* -// TODO 修改登录逻辑,参考四分公司 -class LoginActivity : BaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel @@ -48,8 +49,8 @@ override fun initLayoutView(): Int = R.layout.activity_login override fun setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this) + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) } override fun initData() { @@ -102,7 +103,7 @@ val dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!) //登录并获取Token,POST请求 - loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey) + loginViewModel.enter(it.data!!.sid!!, account, dataByPublicKey) loginViewModel.resultModel.observe(this, { loginResult -> if (loginResult.code == 200) { AuthenticationHelper.saveToken(loginResult.data!!.token!!) @@ -121,20 +122,15 @@ }) loginViewModel.loadState.observe(this, { loginState -> when (loginState) { - is LoadState.Success -> { - "登录成功".show(this) - DialogHelper.dismissLoadingDialog() + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "登录中,请稍后...") } else -> { - "登录失败,用户名或密码错误".show(this) DialogHelper.dismissLoadingDialog() } } }) } }) - authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index b0f3847..704e484 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -13,7 +13,6 @@ import com.bumptech.glide.Glide import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.HomeRecycleAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.model.LineChartEntryModel @@ -26,7 +25,10 @@ import com.google.android.material.navigation.NavigationView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState @@ -49,7 +51,7 @@ import java.util.* import kotlin.collections.ArrayList -class MainActivity : BaseActivity(), DrawerLayout.DrawerListener, +class MainActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener, NavigationView.OnNavigationItemSelectedListener { private val kTag = "MainActivity" @@ -64,7 +66,23 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = resources.getString(R.string.app_name) + + leftOptionView.setOnClickListener { + if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { + leftDrawerLayout.closeDrawer(GravityCompat.START) + } else { + leftDrawerLayout.openDrawer(GravityCompat.START) + } + } + leftDrawerLayout.addDrawerListener(this) + + rightOptionView.setOnClickListener { + navigatePageTo() + } } override fun initData() { @@ -149,18 +167,13 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) + + waterViewModel.waterStatistics() } override fun initEvent() { - leftOptionView.setOnClickListener { - if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { - leftDrawerLayout.closeDrawer(GravityCompat.START) - } else { - leftDrawerLayout.openDrawer(GravityCompat.START) - } - } - leftDrawerLayout.addDrawerListener(this) navigationView.setNavigationItemSelectedListener(this) + loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -169,11 +182,6 @@ } }) - rightOptionView.setOnClickListener { - navigatePageTo() - } - - waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index d6336d6..1ee58ff 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -14,7 +14,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.MapDeviceListModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -22,9 +21,13 @@ import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -38,7 +41,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class MapActivity : BaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class MapActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "MapActivity" @@ -70,8 +73,12 @@ override fun initLayoutView(): Int = R.layout.activity_map override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index b386373..809e6c0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,22 +5,24 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_completed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderCompletedDetailActivity : BaseActivity() { +class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -28,6 +30,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index 8653564..76f8077 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -9,41 +9,41 @@ import android.view.View import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderInHandleDetailActivity : BaseActivity() { +class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private val context: Context = this@OrderInHandleDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,6 +52,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -59,16 +62,14 @@ override fun initData() { val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!!//初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) - workOrderViewModel.obtainWorkOrderDetail(jobId) } @@ -240,7 +241,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -274,7 +275,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //处理完成工单状态处理 @@ -330,7 +338,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -393,22 +400,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index fa5a469..483307d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -3,30 +3,36 @@ import androidx.fragment.app.Fragment import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.TopViewPagerAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.fragment.OrderCompletedFragment import com.casic.qd.smartwell.fragment.OrderInHandleFragment import com.casic.qd.smartwell.fragment.OrderNotConfirmedFragment import com.casic.qd.smartwell.fragment.OrderNotProcessedFragment import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_order_management.* import java.util.* -class OrderManagementActivity : BaseActivity() { +class OrderManagementActivity : KotlinBaseActivity() { - private var fragmentList: ArrayList = ArrayList() + private var fragmentPages: ArrayList = ArrayList() init { - fragmentList.add(OrderNotProcessedFragment())//待处理 - fragmentList.add(OrderNotConfirmedFragment())//待确认 - fragmentList.add(OrderInHandleFragment())//处理中 - fragmentList.add(OrderCompletedFragment())//已完成 + fragmentPages.add(OrderNotProcessedFragment())//待处理 + fragmentPages.add(OrderNotConfirmedFragment())//待确认 + fragmentPages.add(OrderInHandleFragment())//处理中 + fragmentPages.add(OrderCompletedFragment())//已完成 } override fun initLayoutView(): Int = R.layout.activity_order_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "工单管理" rightOptionView.setOnClickListener { @@ -36,9 +42,9 @@ override fun initData() { val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentList + supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) - orderViewPager.offscreenPageLimit = fragmentList.size + orderViewPager.offscreenPageLimit = fragmentPages.size orderViewPager.adapter = topViewPagerAdapter orderTabLayout.setupWithViewPager(orderViewPager) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index 0b5e1d1..dd87a66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -8,42 +8,41 @@ import android.util.Log import android.view.View import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderNotConfirmedDetailActivity : BaseActivity() { +class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,23 +51,26 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } } override fun initData() { - jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) + workOrderViewModel.obtainWorkOrderDetail(jobId) } override fun initEvent() { @@ -93,7 +95,6 @@ } }) - workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -204,7 +205,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -238,7 +239,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //确认工单状态处理 @@ -262,6 +270,7 @@ BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(arrayListOf("拍照", "相册")) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { @@ -293,7 +302,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -356,22 +364,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index 63922a1..ac18ef0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,21 +6,24 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Poi import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WellViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderNotProcessedDetailActivity : BaseActivity() { +class OrderNotProcessedDetailActivity : KotlinBaseActivity() { private val context: Context = this@OrderNotProcessedDetailActivity private lateinit var workOrderViewModel: WorkOrderViewModel @@ -30,6 +33,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -147,12 +153,6 @@ } is LoadState.Success -> { DialogHelper.dismissLoadingDialog() - //通知列表刷新数据 -// BroadcastReceiverManager.instance.sendMultiBroadcast( -// Constant.NOT_PROCESSED_ACTION, -// Constant.NOT_CONFIRMED_ACTION, -// Constant.NOT_ACCEPT_ACTION -// ) this.finish() } else -> { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index b051c34..8b95aa8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -7,15 +7,18 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.SearchResultAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.SearchResultModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -26,7 +29,7 @@ import okhttp3.RequestBody import org.json.JSONObject -class OrderSearchResultActivity : BaseActivity() { +class OrderSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var operationViewModel: OperationViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -42,6 +45,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "查询结果" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -95,12 +101,14 @@ } }) workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt index e5c9f86..f53a0d8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt @@ -1,32 +1,46 @@ package com.casic.qd.smartwell.view -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting +import com.casic.qd.smartwell.R import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : AppCompatActivity(), PermissionCallbacks { +class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - PageNavigationManager.addActivity(this) + override fun initLayoutView(): Int = R.layout.activity_permssion + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) + } + + override fun initData() { //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - EasyPermissions.requestPermissions( - this, - "需要获取相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) + enterMainButton.setOnClickListener { + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) + } } } + override fun initEvent() { + + } + private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) @@ -36,9 +50,7 @@ } override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt index 5ce9def..edad500 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt @@ -2,21 +2,23 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder import kotlinx.android.synthetic.main.activity_alarm_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchAlarmActivity : BaseActivity() { +class SearchAlarmActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var areaViewModel: AreaViewModel @@ -27,6 +29,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "告警查询" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt index f994402..a5f6a30 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt @@ -12,7 +12,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceDataListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceDataModel @@ -20,8 +19,12 @@ import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import kotlinx.android.synthetic.main.activity_data_search.* @@ -34,7 +37,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDataActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDataActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var deviceViewModel: DeviceViewModel @@ -52,6 +55,9 @@ override fun initLayoutView(): Int = R.layout.activity_data_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "数据查询" rightOptionView.setOnClickListener { @@ -68,11 +74,12 @@ weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + //默认加载所有数据 + obtainSearchResult() } override fun initEvent() { - //默认加载所有数据 - obtainSearchResult(pageIndex) deviceViewModel.deviceDataModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -100,12 +107,14 @@ }) deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -114,12 +123,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } areaViewModel.areaModel.observe(this, { @@ -152,7 +161,7 @@ }) } - private fun obtainSearchResult(pageIndex: Int) { + private fun obtainSearchResult() { deviceViewModel.obtainDeviceData(areaId, keywords, pageIndex) } @@ -173,7 +182,7 @@ searchButton.setOnClickListener { keywords = deviceCodeView.text.toString() pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -201,7 +210,8 @@ } else { if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt index cc9cdb2..643a7e1 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt @@ -11,7 +11,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceListModel @@ -25,8 +24,12 @@ import com.casic.qd.smartwell.widgets.BottomAreaSheet import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState @@ -40,7 +43,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDeviceActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDeviceActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchDeviceViewModel: SearchResultViewModel @@ -66,6 +69,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "设备查询" rightOptionView.setOnClickListener { @@ -90,10 +96,11 @@ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + obtainSearchResult() } override fun initEvent() { - obtainSearchResult(pageIndex) searchDeviceViewModel.deviceResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -121,12 +128,14 @@ }) searchDeviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -135,12 +144,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } //数据监听 @@ -195,7 +204,7 @@ searchButton.setOnClickListener { pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -296,9 +305,9 @@ }) } - private fun obtainSearchResult(page: Int) { + private fun obtainSearchResult() { searchDeviceViewModel.obtainDeviceResult( - keywords, deviceTypeValue, deptId, deviceState, areaId, page + keywords, deviceTypeValue, deptId, deviceState, areaId, pageIndex ) } @@ -309,7 +318,8 @@ } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt index 430174b..e6e6045 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt @@ -5,23 +5,25 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AlarmContentModel import com.casic.qd.smartwell.model.OrderStatusModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.zhy.view.flowlayout.FlowLayout import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchOrderActivity : BaseActivity() { +class SearchOrderActivity : KotlinBaseActivity() { private lateinit var contentTypeViewModel: AlarmViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -37,6 +39,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单查询" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt index 3d78bfa..157c5e8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt @@ -5,17 +5,18 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.utils.WebCrawler import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -class SplashScreenActivity : BaseActivity() { +class SplashScreenActivity : KotlinBaseActivity() { private val kTag = "SplashScreenActivity" private lateinit var userDetailViewModel: UserDetailViewModel @@ -25,7 +26,7 @@ override fun initLayoutView(): Int = R.layout.activity_splash override fun setupTopBarLayout() { - + ImmersionBar.with(this).init() } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt index c87ffd2..bffa1b7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt @@ -5,7 +5,6 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -15,11 +14,11 @@ import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.BarEntry import com.github.mikephil.charting.data.PieEntry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type -import com.pengxh.kt.lite.extensions.obtainQuarterOfYear -import com.pengxh.kt.lite.extensions.timestampToDate -import com.pengxh.kt.lite.extensions.timestampToLastMonthDate -import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_statistics.* import kotlinx.android.synthetic.main.include_base_title.* import java.util.* @@ -30,7 +29,7 @@ * @date 2022/2/17 14:34 * @email 290677893@qq.com */ -class StatisticsActivity : BaseActivity() { +class StatisticsActivity : KotlinBaseActivity() { private val context: Context = this@StatisticsActivity private lateinit var waterViewModel: WaterStatisticsViewModel @@ -40,6 +39,9 @@ override fun initLayoutView(): Int = R.layout.activity_statistics override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "汇总统计" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt index 7818f8e..7e81e6c 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt @@ -5,7 +5,6 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper @@ -13,14 +12,17 @@ import com.casic.qd.smartwell.vm.WaterStatisticsViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_water_expanded.* import java.util.* import kotlin.collections.ArrayList -class WaterExpandedActivity : BaseActivity() { +class WaterExpandedActivity : KotlinBaseActivity() { private val kTag = "WaterExpandedActivity" private val context: Context = this@WaterExpandedActivity @@ -29,7 +31,8 @@ override fun initLayoutView(): Int = R.layout.activity_water_expanded override fun setupTopBarLayout() { - + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt index b22a1d9..040202a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt @@ -5,14 +5,17 @@ import android.webkit.WebView import android.widget.LinearLayout import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar import com.just.agentweb.AgentWeb import com.just.agentweb.WebViewClient +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.readAssetsFile +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_web.* -class WebsiteActivity : BaseActivity() { +class WebsiteActivity : KotlinBaseActivity() { private lateinit var agentWeb: AgentWeb private lateinit var url: String @@ -20,6 +23,9 @@ override fun initLayoutView(): Int = R.layout.activity_web override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "海洋石油工程有限公司" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt index 5347d10..69b8b35 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt @@ -3,35 +3,41 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WellViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_well_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class WellDetailActivity : BaseActivity() { +class WellDetailActivity : KotlinBaseActivity() { private lateinit var wellDetailViewModel: WellViewModel - private lateinit var wellId: String override fun initLayoutView(): Int = R.layout.activity_well_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "井详情" } override fun initData() { - wellId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val wellId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! wellDetailViewModel = ViewModelProvider(this).get(WellViewModel::class.java) + + wellDetailViewModel.obtainWellDetail(wellId) } override fun initEvent() { - wellDetailViewModel.obtainWellDetail(wellId) wellDetailViewModel.detailModel.observe(this, { if (it.code == 200) { val wellDetail = it.data!! diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt index fc78392..a512774 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt @@ -53,24 +53,12 @@ }) fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int + keywords: String, alarmType: String, areaId: String, alarmContentType: String, + beginTime: String, endTime: String, status: String, page: Int ) = launch({ val response = RetrofitServiceManager.obtainAlarmListByPage( - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - page + keywords, alarmType, areaId, alarmContentType, + beginTime, endTime, status, page ) val responseCode = response.separateResponseCode() if (responseCode == 200) { diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt deleted file mode 100644 index e016832..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.qd.smartwell.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.casic.qd.smartwell.R -import com.qmuiteam.qmui.util.QMUIDisplayHelper - - -/** - * 可删减九宫格 - * */ -@SuppressLint("NotifyDataSetChanged") -class NineGridImageAdapter(private val context: Context) : - RecyclerView.Adapter() { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 3a226ca..c67e61a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.* @@ -15,7 +14,7 @@ * PublicKey校验 */ @GET("/config/baseConfig") - suspend fun obtainPublicKey(): PublicKeyModel + suspend fun authenticate(): String /** * 登录并获取Token @@ -26,7 +25,7 @@ */ @FormUrlEncoded @POST("/user/login") - suspend fun obtainLoginResult( + suspend fun login( @Field("sid") sid: String, @Field("username") account: String, @Field("password") secretKey: String diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 8a35a50..237af66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory @@ -23,15 +22,15 @@ /** * 验证PublicKey */ - suspend fun authenticate(): PublicKeyModel { - return api.obtainPublicKey() + suspend fun authenticate(): String { + return api.authenticate() } /** * 登录并获取Token */ suspend fun login(sid: String, account: String, secretKey: String): String { - return api.obtainLoginResult(sid, account, secretKey) + return api.login(sid, account, secretKey) } /** diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 976811c..85370c5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -6,13 +6,16 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -20,7 +23,7 @@ import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmManagementActivity : BaseActivity() { +class AlarmManagementActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -35,6 +38,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "当前告警" rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index f27d4d3..f9e8fbc 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -6,14 +6,17 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.SearchResultViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -21,7 +24,7 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmSearchResultActivity : BaseActivity() { +class AlarmSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchAlarmViewModel: SearchResultViewModel @@ -38,6 +41,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "查询结果" } @@ -91,12 +97,14 @@ }) searchAlarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 597e793..40240d5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.view; import android.content.Context +import android.graphics.Color import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -9,10 +10,8 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.photoview.PhotoView -import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager @@ -20,13 +19,13 @@ import java.util.* -class BigImageActivity : BaseActivity() { +class BigImageActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_big_image override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, R.color.black.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, Color.BLACK) + leftBackView.setOnClickListener { finish() } } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 6e35c09..7660a79 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -2,22 +2,24 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.timestampToLastWeekTime import com.pengxh.kt.lite.extensions.timestampToTime +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_device_data_detail.* import kotlinx.android.synthetic.main.activity_main.rightOptionView import kotlinx.android.synthetic.main.activity_main.titleView -class DeviceDataDetailActivity : BaseActivity() { +class DeviceDataDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDataDetailActivity" private lateinit var deviceCode: String @@ -26,6 +28,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_data_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } deviceCode = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! titleView.text = String.format("${deviceCode}历史数据") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index dc5e200..e681958 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -8,20 +8,21 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.LoginViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper import kotlinx.android.synthetic.main.activity_login.* -// TODO 修改登录逻辑,参考四分公司 -class LoginActivity : BaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel @@ -48,8 +49,8 @@ override fun initLayoutView(): Int = R.layout.activity_login override fun setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this) + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) } override fun initData() { @@ -102,7 +103,7 @@ val dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!) //登录并获取Token,POST请求 - loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey) + loginViewModel.enter(it.data!!.sid!!, account, dataByPublicKey) loginViewModel.resultModel.observe(this, { loginResult -> if (loginResult.code == 200) { AuthenticationHelper.saveToken(loginResult.data!!.token!!) @@ -121,20 +122,15 @@ }) loginViewModel.loadState.observe(this, { loginState -> when (loginState) { - is LoadState.Success -> { - "登录成功".show(this) - DialogHelper.dismissLoadingDialog() + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "登录中,请稍后...") } else -> { - "登录失败,用户名或密码错误".show(this) DialogHelper.dismissLoadingDialog() } } }) } }) - authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index b0f3847..704e484 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -13,7 +13,6 @@ import com.bumptech.glide.Glide import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.HomeRecycleAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.model.LineChartEntryModel @@ -26,7 +25,10 @@ import com.google.android.material.navigation.NavigationView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState @@ -49,7 +51,7 @@ import java.util.* import kotlin.collections.ArrayList -class MainActivity : BaseActivity(), DrawerLayout.DrawerListener, +class MainActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener, NavigationView.OnNavigationItemSelectedListener { private val kTag = "MainActivity" @@ -64,7 +66,23 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = resources.getString(R.string.app_name) + + leftOptionView.setOnClickListener { + if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { + leftDrawerLayout.closeDrawer(GravityCompat.START) + } else { + leftDrawerLayout.openDrawer(GravityCompat.START) + } + } + leftDrawerLayout.addDrawerListener(this) + + rightOptionView.setOnClickListener { + navigatePageTo() + } } override fun initData() { @@ -149,18 +167,13 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) + + waterViewModel.waterStatistics() } override fun initEvent() { - leftOptionView.setOnClickListener { - if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { - leftDrawerLayout.closeDrawer(GravityCompat.START) - } else { - leftDrawerLayout.openDrawer(GravityCompat.START) - } - } - leftDrawerLayout.addDrawerListener(this) navigationView.setNavigationItemSelectedListener(this) + loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -169,11 +182,6 @@ } }) - rightOptionView.setOnClickListener { - navigatePageTo() - } - - waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index d6336d6..1ee58ff 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -14,7 +14,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.MapDeviceListModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -22,9 +21,13 @@ import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -38,7 +41,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class MapActivity : BaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class MapActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "MapActivity" @@ -70,8 +73,12 @@ override fun initLayoutView(): Int = R.layout.activity_map override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index b386373..809e6c0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,22 +5,24 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_completed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderCompletedDetailActivity : BaseActivity() { +class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -28,6 +30,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index 8653564..76f8077 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -9,41 +9,41 @@ import android.view.View import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderInHandleDetailActivity : BaseActivity() { +class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private val context: Context = this@OrderInHandleDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,6 +52,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -59,16 +62,14 @@ override fun initData() { val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!!//初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) - workOrderViewModel.obtainWorkOrderDetail(jobId) } @@ -240,7 +241,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -274,7 +275,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //处理完成工单状态处理 @@ -330,7 +338,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -393,22 +400,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index fa5a469..483307d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -3,30 +3,36 @@ import androidx.fragment.app.Fragment import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.TopViewPagerAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.fragment.OrderCompletedFragment import com.casic.qd.smartwell.fragment.OrderInHandleFragment import com.casic.qd.smartwell.fragment.OrderNotConfirmedFragment import com.casic.qd.smartwell.fragment.OrderNotProcessedFragment import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_order_management.* import java.util.* -class OrderManagementActivity : BaseActivity() { +class OrderManagementActivity : KotlinBaseActivity() { - private var fragmentList: ArrayList = ArrayList() + private var fragmentPages: ArrayList = ArrayList() init { - fragmentList.add(OrderNotProcessedFragment())//待处理 - fragmentList.add(OrderNotConfirmedFragment())//待确认 - fragmentList.add(OrderInHandleFragment())//处理中 - fragmentList.add(OrderCompletedFragment())//已完成 + fragmentPages.add(OrderNotProcessedFragment())//待处理 + fragmentPages.add(OrderNotConfirmedFragment())//待确认 + fragmentPages.add(OrderInHandleFragment())//处理中 + fragmentPages.add(OrderCompletedFragment())//已完成 } override fun initLayoutView(): Int = R.layout.activity_order_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "工单管理" rightOptionView.setOnClickListener { @@ -36,9 +42,9 @@ override fun initData() { val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentList + supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) - orderViewPager.offscreenPageLimit = fragmentList.size + orderViewPager.offscreenPageLimit = fragmentPages.size orderViewPager.adapter = topViewPagerAdapter orderTabLayout.setupWithViewPager(orderViewPager) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index 0b5e1d1..dd87a66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -8,42 +8,41 @@ import android.util.Log import android.view.View import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderNotConfirmedDetailActivity : BaseActivity() { +class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,23 +51,26 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } } override fun initData() { - jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) + workOrderViewModel.obtainWorkOrderDetail(jobId) } override fun initEvent() { @@ -93,7 +95,6 @@ } }) - workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -204,7 +205,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -238,7 +239,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //确认工单状态处理 @@ -262,6 +270,7 @@ BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(arrayListOf("拍照", "相册")) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { @@ -293,7 +302,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -356,22 +364,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index 63922a1..ac18ef0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,21 +6,24 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Poi import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WellViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderNotProcessedDetailActivity : BaseActivity() { +class OrderNotProcessedDetailActivity : KotlinBaseActivity() { private val context: Context = this@OrderNotProcessedDetailActivity private lateinit var workOrderViewModel: WorkOrderViewModel @@ -30,6 +33,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -147,12 +153,6 @@ } is LoadState.Success -> { DialogHelper.dismissLoadingDialog() - //通知列表刷新数据 -// BroadcastReceiverManager.instance.sendMultiBroadcast( -// Constant.NOT_PROCESSED_ACTION, -// Constant.NOT_CONFIRMED_ACTION, -// Constant.NOT_ACCEPT_ACTION -// ) this.finish() } else -> { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index b051c34..8b95aa8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -7,15 +7,18 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.SearchResultAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.SearchResultModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -26,7 +29,7 @@ import okhttp3.RequestBody import org.json.JSONObject -class OrderSearchResultActivity : BaseActivity() { +class OrderSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var operationViewModel: OperationViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -42,6 +45,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "查询结果" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -95,12 +101,14 @@ } }) workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt index e5c9f86..f53a0d8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt @@ -1,32 +1,46 @@ package com.casic.qd.smartwell.view -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting +import com.casic.qd.smartwell.R import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : AppCompatActivity(), PermissionCallbacks { +class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - PageNavigationManager.addActivity(this) + override fun initLayoutView(): Int = R.layout.activity_permssion + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) + } + + override fun initData() { //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - EasyPermissions.requestPermissions( - this, - "需要获取相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) + enterMainButton.setOnClickListener { + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) + } } } + override fun initEvent() { + + } + private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) @@ -36,9 +50,7 @@ } override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt index 5ce9def..edad500 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt @@ -2,21 +2,23 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder import kotlinx.android.synthetic.main.activity_alarm_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchAlarmActivity : BaseActivity() { +class SearchAlarmActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var areaViewModel: AreaViewModel @@ -27,6 +29,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "告警查询" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt index f994402..a5f6a30 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt @@ -12,7 +12,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceDataListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceDataModel @@ -20,8 +19,12 @@ import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import kotlinx.android.synthetic.main.activity_data_search.* @@ -34,7 +37,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDataActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDataActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var deviceViewModel: DeviceViewModel @@ -52,6 +55,9 @@ override fun initLayoutView(): Int = R.layout.activity_data_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "数据查询" rightOptionView.setOnClickListener { @@ -68,11 +74,12 @@ weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + //默认加载所有数据 + obtainSearchResult() } override fun initEvent() { - //默认加载所有数据 - obtainSearchResult(pageIndex) deviceViewModel.deviceDataModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -100,12 +107,14 @@ }) deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -114,12 +123,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } areaViewModel.areaModel.observe(this, { @@ -152,7 +161,7 @@ }) } - private fun obtainSearchResult(pageIndex: Int) { + private fun obtainSearchResult() { deviceViewModel.obtainDeviceData(areaId, keywords, pageIndex) } @@ -173,7 +182,7 @@ searchButton.setOnClickListener { keywords = deviceCodeView.text.toString() pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -201,7 +210,8 @@ } else { if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt index cc9cdb2..643a7e1 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt @@ -11,7 +11,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceListModel @@ -25,8 +24,12 @@ import com.casic.qd.smartwell.widgets.BottomAreaSheet import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState @@ -40,7 +43,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDeviceActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDeviceActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchDeviceViewModel: SearchResultViewModel @@ -66,6 +69,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "设备查询" rightOptionView.setOnClickListener { @@ -90,10 +96,11 @@ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + obtainSearchResult() } override fun initEvent() { - obtainSearchResult(pageIndex) searchDeviceViewModel.deviceResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -121,12 +128,14 @@ }) searchDeviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -135,12 +144,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } //数据监听 @@ -195,7 +204,7 @@ searchButton.setOnClickListener { pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -296,9 +305,9 @@ }) } - private fun obtainSearchResult(page: Int) { + private fun obtainSearchResult() { searchDeviceViewModel.obtainDeviceResult( - keywords, deviceTypeValue, deptId, deviceState, areaId, page + keywords, deviceTypeValue, deptId, deviceState, areaId, pageIndex ) } @@ -309,7 +318,8 @@ } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt index 430174b..e6e6045 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt @@ -5,23 +5,25 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AlarmContentModel import com.casic.qd.smartwell.model.OrderStatusModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.zhy.view.flowlayout.FlowLayout import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchOrderActivity : BaseActivity() { +class SearchOrderActivity : KotlinBaseActivity() { private lateinit var contentTypeViewModel: AlarmViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -37,6 +39,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单查询" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt index 3d78bfa..157c5e8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt @@ -5,17 +5,18 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.utils.WebCrawler import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -class SplashScreenActivity : BaseActivity() { +class SplashScreenActivity : KotlinBaseActivity() { private val kTag = "SplashScreenActivity" private lateinit var userDetailViewModel: UserDetailViewModel @@ -25,7 +26,7 @@ override fun initLayoutView(): Int = R.layout.activity_splash override fun setupTopBarLayout() { - + ImmersionBar.with(this).init() } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt index c87ffd2..bffa1b7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt @@ -5,7 +5,6 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -15,11 +14,11 @@ import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.BarEntry import com.github.mikephil.charting.data.PieEntry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type -import com.pengxh.kt.lite.extensions.obtainQuarterOfYear -import com.pengxh.kt.lite.extensions.timestampToDate -import com.pengxh.kt.lite.extensions.timestampToLastMonthDate -import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_statistics.* import kotlinx.android.synthetic.main.include_base_title.* import java.util.* @@ -30,7 +29,7 @@ * @date 2022/2/17 14:34 * @email 290677893@qq.com */ -class StatisticsActivity : BaseActivity() { +class StatisticsActivity : KotlinBaseActivity() { private val context: Context = this@StatisticsActivity private lateinit var waterViewModel: WaterStatisticsViewModel @@ -40,6 +39,9 @@ override fun initLayoutView(): Int = R.layout.activity_statistics override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "汇总统计" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt index 7818f8e..7e81e6c 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt @@ -5,7 +5,6 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper @@ -13,14 +12,17 @@ import com.casic.qd.smartwell.vm.WaterStatisticsViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_water_expanded.* import java.util.* import kotlin.collections.ArrayList -class WaterExpandedActivity : BaseActivity() { +class WaterExpandedActivity : KotlinBaseActivity() { private val kTag = "WaterExpandedActivity" private val context: Context = this@WaterExpandedActivity @@ -29,7 +31,8 @@ override fun initLayoutView(): Int = R.layout.activity_water_expanded override fun setupTopBarLayout() { - + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt index b22a1d9..040202a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt @@ -5,14 +5,17 @@ import android.webkit.WebView import android.widget.LinearLayout import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar import com.just.agentweb.AgentWeb import com.just.agentweb.WebViewClient +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.readAssetsFile +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_web.* -class WebsiteActivity : BaseActivity() { +class WebsiteActivity : KotlinBaseActivity() { private lateinit var agentWeb: AgentWeb private lateinit var url: String @@ -20,6 +23,9 @@ override fun initLayoutView(): Int = R.layout.activity_web override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "海洋石油工程有限公司" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt index 5347d10..69b8b35 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt @@ -3,35 +3,41 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WellViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_well_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class WellDetailActivity : BaseActivity() { +class WellDetailActivity : KotlinBaseActivity() { private lateinit var wellDetailViewModel: WellViewModel - private lateinit var wellId: String override fun initLayoutView(): Int = R.layout.activity_well_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "井详情" } override fun initData() { - wellId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val wellId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! wellDetailViewModel = ViewModelProvider(this).get(WellViewModel::class.java) + + wellDetailViewModel.obtainWellDetail(wellId) } override fun initEvent() { - wellDetailViewModel.obtainWellDetail(wellId) wellDetailViewModel.detailModel.observe(this, { if (it.code == 200) { val wellDetail = it.data!! diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt index fc78392..a512774 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt @@ -53,24 +53,12 @@ }) fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int + keywords: String, alarmType: String, areaId: String, alarmContentType: String, + beginTime: String, endTime: String, status: String, page: Int ) = launch({ val response = RetrofitServiceManager.obtainAlarmListByPage( - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - page + keywords, alarmType, areaId, alarmContentType, + beginTime, endTime, status, page ) val responseCode = response.separateResponseCode() if (responseCode == 200) { diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt index 8c13aec..3a3f38e 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt @@ -15,7 +15,6 @@ import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.BaseViewModel -import com.pengxh.kt.lite.vm.LoadState import org.json.JSONObject class AuthenticateViewModel : BaseViewModel() { @@ -25,8 +24,15 @@ val resultModel = MutableLiveData() fun obtainPublicKey() = launch({ - loadState.value = LoadState.Loading - keyModel.value = RetrofitServiceManager.authenticate() + val response = RetrofitServiceManager.authenticate() + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + keyModel.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.toErrorMessage().show(BaseApplication.obtainInstance()) + } }, { it.printStackTrace() }) diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt deleted file mode 100644 index e016832..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.qd.smartwell.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.casic.qd.smartwell.R -import com.qmuiteam.qmui.util.QMUIDisplayHelper - - -/** - * 可删减九宫格 - * */ -@SuppressLint("NotifyDataSetChanged") -class NineGridImageAdapter(private val context: Context) : - RecyclerView.Adapter() { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 3a226ca..c67e61a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.* @@ -15,7 +14,7 @@ * PublicKey校验 */ @GET("/config/baseConfig") - suspend fun obtainPublicKey(): PublicKeyModel + suspend fun authenticate(): String /** * 登录并获取Token @@ -26,7 +25,7 @@ */ @FormUrlEncoded @POST("/user/login") - suspend fun obtainLoginResult( + suspend fun login( @Field("sid") sid: String, @Field("username") account: String, @Field("password") secretKey: String diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 8a35a50..237af66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory @@ -23,15 +22,15 @@ /** * 验证PublicKey */ - suspend fun authenticate(): PublicKeyModel { - return api.obtainPublicKey() + suspend fun authenticate(): String { + return api.authenticate() } /** * 登录并获取Token */ suspend fun login(sid: String, account: String, secretKey: String): String { - return api.obtainLoginResult(sid, account, secretKey) + return api.login(sid, account, secretKey) } /** diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 976811c..85370c5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -6,13 +6,16 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -20,7 +23,7 @@ import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmManagementActivity : BaseActivity() { +class AlarmManagementActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -35,6 +38,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "当前告警" rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index f27d4d3..f9e8fbc 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -6,14 +6,17 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.SearchResultViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -21,7 +24,7 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmSearchResultActivity : BaseActivity() { +class AlarmSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchAlarmViewModel: SearchResultViewModel @@ -38,6 +41,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "查询结果" } @@ -91,12 +97,14 @@ }) searchAlarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 597e793..40240d5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.view; import android.content.Context +import android.graphics.Color import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -9,10 +10,8 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.photoview.PhotoView -import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager @@ -20,13 +19,13 @@ import java.util.* -class BigImageActivity : BaseActivity() { +class BigImageActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_big_image override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, R.color.black.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, Color.BLACK) + leftBackView.setOnClickListener { finish() } } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 6e35c09..7660a79 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -2,22 +2,24 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.timestampToLastWeekTime import com.pengxh.kt.lite.extensions.timestampToTime +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_device_data_detail.* import kotlinx.android.synthetic.main.activity_main.rightOptionView import kotlinx.android.synthetic.main.activity_main.titleView -class DeviceDataDetailActivity : BaseActivity() { +class DeviceDataDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDataDetailActivity" private lateinit var deviceCode: String @@ -26,6 +28,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_data_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } deviceCode = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! titleView.text = String.format("${deviceCode}历史数据") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index dc5e200..e681958 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -8,20 +8,21 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.LoginViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper import kotlinx.android.synthetic.main.activity_login.* -// TODO 修改登录逻辑,参考四分公司 -class LoginActivity : BaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel @@ -48,8 +49,8 @@ override fun initLayoutView(): Int = R.layout.activity_login override fun setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this) + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) } override fun initData() { @@ -102,7 +103,7 @@ val dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!) //登录并获取Token,POST请求 - loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey) + loginViewModel.enter(it.data!!.sid!!, account, dataByPublicKey) loginViewModel.resultModel.observe(this, { loginResult -> if (loginResult.code == 200) { AuthenticationHelper.saveToken(loginResult.data!!.token!!) @@ -121,20 +122,15 @@ }) loginViewModel.loadState.observe(this, { loginState -> when (loginState) { - is LoadState.Success -> { - "登录成功".show(this) - DialogHelper.dismissLoadingDialog() + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "登录中,请稍后...") } else -> { - "登录失败,用户名或密码错误".show(this) DialogHelper.dismissLoadingDialog() } } }) } }) - authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index b0f3847..704e484 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -13,7 +13,6 @@ import com.bumptech.glide.Glide import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.HomeRecycleAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.model.LineChartEntryModel @@ -26,7 +25,10 @@ import com.google.android.material.navigation.NavigationView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState @@ -49,7 +51,7 @@ import java.util.* import kotlin.collections.ArrayList -class MainActivity : BaseActivity(), DrawerLayout.DrawerListener, +class MainActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener, NavigationView.OnNavigationItemSelectedListener { private val kTag = "MainActivity" @@ -64,7 +66,23 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = resources.getString(R.string.app_name) + + leftOptionView.setOnClickListener { + if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { + leftDrawerLayout.closeDrawer(GravityCompat.START) + } else { + leftDrawerLayout.openDrawer(GravityCompat.START) + } + } + leftDrawerLayout.addDrawerListener(this) + + rightOptionView.setOnClickListener { + navigatePageTo() + } } override fun initData() { @@ -149,18 +167,13 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) + + waterViewModel.waterStatistics() } override fun initEvent() { - leftOptionView.setOnClickListener { - if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { - leftDrawerLayout.closeDrawer(GravityCompat.START) - } else { - leftDrawerLayout.openDrawer(GravityCompat.START) - } - } - leftDrawerLayout.addDrawerListener(this) navigationView.setNavigationItemSelectedListener(this) + loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -169,11 +182,6 @@ } }) - rightOptionView.setOnClickListener { - navigatePageTo() - } - - waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index d6336d6..1ee58ff 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -14,7 +14,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.MapDeviceListModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -22,9 +21,13 @@ import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -38,7 +41,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class MapActivity : BaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class MapActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "MapActivity" @@ -70,8 +73,12 @@ override fun initLayoutView(): Int = R.layout.activity_map override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index b386373..809e6c0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,22 +5,24 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_completed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderCompletedDetailActivity : BaseActivity() { +class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -28,6 +30,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index 8653564..76f8077 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -9,41 +9,41 @@ import android.view.View import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderInHandleDetailActivity : BaseActivity() { +class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private val context: Context = this@OrderInHandleDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,6 +52,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -59,16 +62,14 @@ override fun initData() { val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!!//初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) - workOrderViewModel.obtainWorkOrderDetail(jobId) } @@ -240,7 +241,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -274,7 +275,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //处理完成工单状态处理 @@ -330,7 +338,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -393,22 +400,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index fa5a469..483307d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -3,30 +3,36 @@ import androidx.fragment.app.Fragment import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.TopViewPagerAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.fragment.OrderCompletedFragment import com.casic.qd.smartwell.fragment.OrderInHandleFragment import com.casic.qd.smartwell.fragment.OrderNotConfirmedFragment import com.casic.qd.smartwell.fragment.OrderNotProcessedFragment import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_order_management.* import java.util.* -class OrderManagementActivity : BaseActivity() { +class OrderManagementActivity : KotlinBaseActivity() { - private var fragmentList: ArrayList = ArrayList() + private var fragmentPages: ArrayList = ArrayList() init { - fragmentList.add(OrderNotProcessedFragment())//待处理 - fragmentList.add(OrderNotConfirmedFragment())//待确认 - fragmentList.add(OrderInHandleFragment())//处理中 - fragmentList.add(OrderCompletedFragment())//已完成 + fragmentPages.add(OrderNotProcessedFragment())//待处理 + fragmentPages.add(OrderNotConfirmedFragment())//待确认 + fragmentPages.add(OrderInHandleFragment())//处理中 + fragmentPages.add(OrderCompletedFragment())//已完成 } override fun initLayoutView(): Int = R.layout.activity_order_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "工单管理" rightOptionView.setOnClickListener { @@ -36,9 +42,9 @@ override fun initData() { val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentList + supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) - orderViewPager.offscreenPageLimit = fragmentList.size + orderViewPager.offscreenPageLimit = fragmentPages.size orderViewPager.adapter = topViewPagerAdapter orderTabLayout.setupWithViewPager(orderViewPager) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index 0b5e1d1..dd87a66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -8,42 +8,41 @@ import android.util.Log import android.view.View import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderNotConfirmedDetailActivity : BaseActivity() { +class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,23 +51,26 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } } override fun initData() { - jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) + workOrderViewModel.obtainWorkOrderDetail(jobId) } override fun initEvent() { @@ -93,7 +95,6 @@ } }) - workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -204,7 +205,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -238,7 +239,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //确认工单状态处理 @@ -262,6 +270,7 @@ BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(arrayListOf("拍照", "相册")) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { @@ -293,7 +302,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -356,22 +364,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index 63922a1..ac18ef0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,21 +6,24 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Poi import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WellViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderNotProcessedDetailActivity : BaseActivity() { +class OrderNotProcessedDetailActivity : KotlinBaseActivity() { private val context: Context = this@OrderNotProcessedDetailActivity private lateinit var workOrderViewModel: WorkOrderViewModel @@ -30,6 +33,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -147,12 +153,6 @@ } is LoadState.Success -> { DialogHelper.dismissLoadingDialog() - //通知列表刷新数据 -// BroadcastReceiverManager.instance.sendMultiBroadcast( -// Constant.NOT_PROCESSED_ACTION, -// Constant.NOT_CONFIRMED_ACTION, -// Constant.NOT_ACCEPT_ACTION -// ) this.finish() } else -> { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index b051c34..8b95aa8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -7,15 +7,18 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.SearchResultAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.SearchResultModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -26,7 +29,7 @@ import okhttp3.RequestBody import org.json.JSONObject -class OrderSearchResultActivity : BaseActivity() { +class OrderSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var operationViewModel: OperationViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -42,6 +45,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "查询结果" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -95,12 +101,14 @@ } }) workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt index e5c9f86..f53a0d8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt @@ -1,32 +1,46 @@ package com.casic.qd.smartwell.view -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting +import com.casic.qd.smartwell.R import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : AppCompatActivity(), PermissionCallbacks { +class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - PageNavigationManager.addActivity(this) + override fun initLayoutView(): Int = R.layout.activity_permssion + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) + } + + override fun initData() { //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - EasyPermissions.requestPermissions( - this, - "需要获取相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) + enterMainButton.setOnClickListener { + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) + } } } + override fun initEvent() { + + } + private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) @@ -36,9 +50,7 @@ } override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt index 5ce9def..edad500 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt @@ -2,21 +2,23 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder import kotlinx.android.synthetic.main.activity_alarm_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchAlarmActivity : BaseActivity() { +class SearchAlarmActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var areaViewModel: AreaViewModel @@ -27,6 +29,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "告警查询" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt index f994402..a5f6a30 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt @@ -12,7 +12,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceDataListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceDataModel @@ -20,8 +19,12 @@ import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import kotlinx.android.synthetic.main.activity_data_search.* @@ -34,7 +37,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDataActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDataActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var deviceViewModel: DeviceViewModel @@ -52,6 +55,9 @@ override fun initLayoutView(): Int = R.layout.activity_data_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "数据查询" rightOptionView.setOnClickListener { @@ -68,11 +74,12 @@ weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + //默认加载所有数据 + obtainSearchResult() } override fun initEvent() { - //默认加载所有数据 - obtainSearchResult(pageIndex) deviceViewModel.deviceDataModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -100,12 +107,14 @@ }) deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -114,12 +123,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } areaViewModel.areaModel.observe(this, { @@ -152,7 +161,7 @@ }) } - private fun obtainSearchResult(pageIndex: Int) { + private fun obtainSearchResult() { deviceViewModel.obtainDeviceData(areaId, keywords, pageIndex) } @@ -173,7 +182,7 @@ searchButton.setOnClickListener { keywords = deviceCodeView.text.toString() pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -201,7 +210,8 @@ } else { if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt index cc9cdb2..643a7e1 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt @@ -11,7 +11,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceListModel @@ -25,8 +24,12 @@ import com.casic.qd.smartwell.widgets.BottomAreaSheet import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState @@ -40,7 +43,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDeviceActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDeviceActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchDeviceViewModel: SearchResultViewModel @@ -66,6 +69,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "设备查询" rightOptionView.setOnClickListener { @@ -90,10 +96,11 @@ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + obtainSearchResult() } override fun initEvent() { - obtainSearchResult(pageIndex) searchDeviceViewModel.deviceResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -121,12 +128,14 @@ }) searchDeviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -135,12 +144,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } //数据监听 @@ -195,7 +204,7 @@ searchButton.setOnClickListener { pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -296,9 +305,9 @@ }) } - private fun obtainSearchResult(page: Int) { + private fun obtainSearchResult() { searchDeviceViewModel.obtainDeviceResult( - keywords, deviceTypeValue, deptId, deviceState, areaId, page + keywords, deviceTypeValue, deptId, deviceState, areaId, pageIndex ) } @@ -309,7 +318,8 @@ } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt index 430174b..e6e6045 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt @@ -5,23 +5,25 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AlarmContentModel import com.casic.qd.smartwell.model.OrderStatusModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.zhy.view.flowlayout.FlowLayout import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchOrderActivity : BaseActivity() { +class SearchOrderActivity : KotlinBaseActivity() { private lateinit var contentTypeViewModel: AlarmViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -37,6 +39,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单查询" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt index 3d78bfa..157c5e8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt @@ -5,17 +5,18 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.utils.WebCrawler import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -class SplashScreenActivity : BaseActivity() { +class SplashScreenActivity : KotlinBaseActivity() { private val kTag = "SplashScreenActivity" private lateinit var userDetailViewModel: UserDetailViewModel @@ -25,7 +26,7 @@ override fun initLayoutView(): Int = R.layout.activity_splash override fun setupTopBarLayout() { - + ImmersionBar.with(this).init() } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt index c87ffd2..bffa1b7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt @@ -5,7 +5,6 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -15,11 +14,11 @@ import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.BarEntry import com.github.mikephil.charting.data.PieEntry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type -import com.pengxh.kt.lite.extensions.obtainQuarterOfYear -import com.pengxh.kt.lite.extensions.timestampToDate -import com.pengxh.kt.lite.extensions.timestampToLastMonthDate -import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_statistics.* import kotlinx.android.synthetic.main.include_base_title.* import java.util.* @@ -30,7 +29,7 @@ * @date 2022/2/17 14:34 * @email 290677893@qq.com */ -class StatisticsActivity : BaseActivity() { +class StatisticsActivity : KotlinBaseActivity() { private val context: Context = this@StatisticsActivity private lateinit var waterViewModel: WaterStatisticsViewModel @@ -40,6 +39,9 @@ override fun initLayoutView(): Int = R.layout.activity_statistics override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "汇总统计" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt index 7818f8e..7e81e6c 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt @@ -5,7 +5,6 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper @@ -13,14 +12,17 @@ import com.casic.qd.smartwell.vm.WaterStatisticsViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_water_expanded.* import java.util.* import kotlin.collections.ArrayList -class WaterExpandedActivity : BaseActivity() { +class WaterExpandedActivity : KotlinBaseActivity() { private val kTag = "WaterExpandedActivity" private val context: Context = this@WaterExpandedActivity @@ -29,7 +31,8 @@ override fun initLayoutView(): Int = R.layout.activity_water_expanded override fun setupTopBarLayout() { - + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt index b22a1d9..040202a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt @@ -5,14 +5,17 @@ import android.webkit.WebView import android.widget.LinearLayout import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar import com.just.agentweb.AgentWeb import com.just.agentweb.WebViewClient +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.readAssetsFile +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_web.* -class WebsiteActivity : BaseActivity() { +class WebsiteActivity : KotlinBaseActivity() { private lateinit var agentWeb: AgentWeb private lateinit var url: String @@ -20,6 +23,9 @@ override fun initLayoutView(): Int = R.layout.activity_web override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "海洋石油工程有限公司" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt index 5347d10..69b8b35 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt @@ -3,35 +3,41 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WellViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_well_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class WellDetailActivity : BaseActivity() { +class WellDetailActivity : KotlinBaseActivity() { private lateinit var wellDetailViewModel: WellViewModel - private lateinit var wellId: String override fun initLayoutView(): Int = R.layout.activity_well_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "井详情" } override fun initData() { - wellId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val wellId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! wellDetailViewModel = ViewModelProvider(this).get(WellViewModel::class.java) + + wellDetailViewModel.obtainWellDetail(wellId) } override fun initEvent() { - wellDetailViewModel.obtainWellDetail(wellId) wellDetailViewModel.detailModel.observe(this, { if (it.code == 200) { val wellDetail = it.data!! diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt index fc78392..a512774 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt @@ -53,24 +53,12 @@ }) fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int + keywords: String, alarmType: String, areaId: String, alarmContentType: String, + beginTime: String, endTime: String, status: String, page: Int ) = launch({ val response = RetrofitServiceManager.obtainAlarmListByPage( - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - page + keywords, alarmType, areaId, alarmContentType, + beginTime, endTime, status, page ) val responseCode = response.separateResponseCode() if (responseCode == 200) { diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt index 8c13aec..3a3f38e 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt @@ -15,7 +15,6 @@ import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.BaseViewModel -import com.pengxh.kt.lite.vm.LoadState import org.json.JSONObject class AuthenticateViewModel : BaseViewModel() { @@ -25,8 +24,15 @@ val resultModel = MutableLiveData() fun obtainPublicKey() = launch({ - loadState.value = LoadState.Loading - keyModel.value = RetrofitServiceManager.authenticate() + val response = RetrofitServiceManager.authenticate() + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + keyModel.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.toErrorMessage().show(BaseApplication.obtainInstance()) + } }, { it.printStackTrace() }) diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt index 23e777e..c7f95b4 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt @@ -18,14 +18,16 @@ private val gson = Gson() val resultModel = MutableLiveData() - fun inn(sid: String, account: String, secretKey: String) = launch({ + fun enter(sid: String, account: String, secretKey: String) = launch({ + loadState.value = LoadState.Loading val response = RetrofitServiceManager.login(sid, account, secretKey) val responseCode = response.separateResponseCode() if (responseCode == 200) { - loadState.value = LoadState.Success resultModel.value = gson.fromJson( response, object : TypeToken() {}.type ) + loadState.value = LoadState.Success + "登录成功".show(BaseApplication.obtainInstance()) } else { loadState.value = LoadState.Fail response.toErrorMessage().show(BaseApplication.obtainInstance()) diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt deleted file mode 100644 index e016832..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.qd.smartwell.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.casic.qd.smartwell.R -import com.qmuiteam.qmui.util.QMUIDisplayHelper - - -/** - * 可删减九宫格 - * */ -@SuppressLint("NotifyDataSetChanged") -class NineGridImageAdapter(private val context: Context) : - RecyclerView.Adapter() { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 3a226ca..c67e61a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.* @@ -15,7 +14,7 @@ * PublicKey校验 */ @GET("/config/baseConfig") - suspend fun obtainPublicKey(): PublicKeyModel + suspend fun authenticate(): String /** * 登录并获取Token @@ -26,7 +25,7 @@ */ @FormUrlEncoded @POST("/user/login") - suspend fun obtainLoginResult( + suspend fun login( @Field("sid") sid: String, @Field("username") account: String, @Field("password") secretKey: String diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 8a35a50..237af66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory @@ -23,15 +22,15 @@ /** * 验证PublicKey */ - suspend fun authenticate(): PublicKeyModel { - return api.obtainPublicKey() + suspend fun authenticate(): String { + return api.authenticate() } /** * 登录并获取Token */ suspend fun login(sid: String, account: String, secretKey: String): String { - return api.obtainLoginResult(sid, account, secretKey) + return api.login(sid, account, secretKey) } /** diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 976811c..85370c5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -6,13 +6,16 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -20,7 +23,7 @@ import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmManagementActivity : BaseActivity() { +class AlarmManagementActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -35,6 +38,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "当前告警" rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index f27d4d3..f9e8fbc 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -6,14 +6,17 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.SearchResultViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -21,7 +24,7 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmSearchResultActivity : BaseActivity() { +class AlarmSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchAlarmViewModel: SearchResultViewModel @@ -38,6 +41,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "查询结果" } @@ -91,12 +97,14 @@ }) searchAlarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 597e793..40240d5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.view; import android.content.Context +import android.graphics.Color import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -9,10 +10,8 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.photoview.PhotoView -import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager @@ -20,13 +19,13 @@ import java.util.* -class BigImageActivity : BaseActivity() { +class BigImageActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_big_image override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, R.color.black.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, Color.BLACK) + leftBackView.setOnClickListener { finish() } } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 6e35c09..7660a79 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -2,22 +2,24 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.timestampToLastWeekTime import com.pengxh.kt.lite.extensions.timestampToTime +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_device_data_detail.* import kotlinx.android.synthetic.main.activity_main.rightOptionView import kotlinx.android.synthetic.main.activity_main.titleView -class DeviceDataDetailActivity : BaseActivity() { +class DeviceDataDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDataDetailActivity" private lateinit var deviceCode: String @@ -26,6 +28,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_data_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } deviceCode = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! titleView.text = String.format("${deviceCode}历史数据") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index dc5e200..e681958 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -8,20 +8,21 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.LoginViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper import kotlinx.android.synthetic.main.activity_login.* -// TODO 修改登录逻辑,参考四分公司 -class LoginActivity : BaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel @@ -48,8 +49,8 @@ override fun initLayoutView(): Int = R.layout.activity_login override fun setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this) + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) } override fun initData() { @@ -102,7 +103,7 @@ val dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!) //登录并获取Token,POST请求 - loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey) + loginViewModel.enter(it.data!!.sid!!, account, dataByPublicKey) loginViewModel.resultModel.observe(this, { loginResult -> if (loginResult.code == 200) { AuthenticationHelper.saveToken(loginResult.data!!.token!!) @@ -121,20 +122,15 @@ }) loginViewModel.loadState.observe(this, { loginState -> when (loginState) { - is LoadState.Success -> { - "登录成功".show(this) - DialogHelper.dismissLoadingDialog() + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "登录中,请稍后...") } else -> { - "登录失败,用户名或密码错误".show(this) DialogHelper.dismissLoadingDialog() } } }) } }) - authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index b0f3847..704e484 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -13,7 +13,6 @@ import com.bumptech.glide.Glide import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.HomeRecycleAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.model.LineChartEntryModel @@ -26,7 +25,10 @@ import com.google.android.material.navigation.NavigationView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState @@ -49,7 +51,7 @@ import java.util.* import kotlin.collections.ArrayList -class MainActivity : BaseActivity(), DrawerLayout.DrawerListener, +class MainActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener, NavigationView.OnNavigationItemSelectedListener { private val kTag = "MainActivity" @@ -64,7 +66,23 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = resources.getString(R.string.app_name) + + leftOptionView.setOnClickListener { + if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { + leftDrawerLayout.closeDrawer(GravityCompat.START) + } else { + leftDrawerLayout.openDrawer(GravityCompat.START) + } + } + leftDrawerLayout.addDrawerListener(this) + + rightOptionView.setOnClickListener { + navigatePageTo() + } } override fun initData() { @@ -149,18 +167,13 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) + + waterViewModel.waterStatistics() } override fun initEvent() { - leftOptionView.setOnClickListener { - if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { - leftDrawerLayout.closeDrawer(GravityCompat.START) - } else { - leftDrawerLayout.openDrawer(GravityCompat.START) - } - } - leftDrawerLayout.addDrawerListener(this) navigationView.setNavigationItemSelectedListener(this) + loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -169,11 +182,6 @@ } }) - rightOptionView.setOnClickListener { - navigatePageTo() - } - - waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index d6336d6..1ee58ff 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -14,7 +14,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.MapDeviceListModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -22,9 +21,13 @@ import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -38,7 +41,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class MapActivity : BaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class MapActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "MapActivity" @@ -70,8 +73,12 @@ override fun initLayoutView(): Int = R.layout.activity_map override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index b386373..809e6c0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,22 +5,24 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_completed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderCompletedDetailActivity : BaseActivity() { +class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -28,6 +30,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index 8653564..76f8077 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -9,41 +9,41 @@ import android.view.View import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderInHandleDetailActivity : BaseActivity() { +class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private val context: Context = this@OrderInHandleDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,6 +52,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -59,16 +62,14 @@ override fun initData() { val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!!//初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) - workOrderViewModel.obtainWorkOrderDetail(jobId) } @@ -240,7 +241,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -274,7 +275,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //处理完成工单状态处理 @@ -330,7 +338,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -393,22 +400,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index fa5a469..483307d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -3,30 +3,36 @@ import androidx.fragment.app.Fragment import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.TopViewPagerAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.fragment.OrderCompletedFragment import com.casic.qd.smartwell.fragment.OrderInHandleFragment import com.casic.qd.smartwell.fragment.OrderNotConfirmedFragment import com.casic.qd.smartwell.fragment.OrderNotProcessedFragment import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_order_management.* import java.util.* -class OrderManagementActivity : BaseActivity() { +class OrderManagementActivity : KotlinBaseActivity() { - private var fragmentList: ArrayList = ArrayList() + private var fragmentPages: ArrayList = ArrayList() init { - fragmentList.add(OrderNotProcessedFragment())//待处理 - fragmentList.add(OrderNotConfirmedFragment())//待确认 - fragmentList.add(OrderInHandleFragment())//处理中 - fragmentList.add(OrderCompletedFragment())//已完成 + fragmentPages.add(OrderNotProcessedFragment())//待处理 + fragmentPages.add(OrderNotConfirmedFragment())//待确认 + fragmentPages.add(OrderInHandleFragment())//处理中 + fragmentPages.add(OrderCompletedFragment())//已完成 } override fun initLayoutView(): Int = R.layout.activity_order_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "工单管理" rightOptionView.setOnClickListener { @@ -36,9 +42,9 @@ override fun initData() { val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentList + supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) - orderViewPager.offscreenPageLimit = fragmentList.size + orderViewPager.offscreenPageLimit = fragmentPages.size orderViewPager.adapter = topViewPagerAdapter orderTabLayout.setupWithViewPager(orderViewPager) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index 0b5e1d1..dd87a66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -8,42 +8,41 @@ import android.util.Log import android.view.View import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderNotConfirmedDetailActivity : BaseActivity() { +class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,23 +51,26 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } } override fun initData() { - jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) + workOrderViewModel.obtainWorkOrderDetail(jobId) } override fun initEvent() { @@ -93,7 +95,6 @@ } }) - workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -204,7 +205,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -238,7 +239,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //确认工单状态处理 @@ -262,6 +270,7 @@ BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(arrayListOf("拍照", "相册")) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { @@ -293,7 +302,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -356,22 +364,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index 63922a1..ac18ef0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,21 +6,24 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Poi import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WellViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderNotProcessedDetailActivity : BaseActivity() { +class OrderNotProcessedDetailActivity : KotlinBaseActivity() { private val context: Context = this@OrderNotProcessedDetailActivity private lateinit var workOrderViewModel: WorkOrderViewModel @@ -30,6 +33,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -147,12 +153,6 @@ } is LoadState.Success -> { DialogHelper.dismissLoadingDialog() - //通知列表刷新数据 -// BroadcastReceiverManager.instance.sendMultiBroadcast( -// Constant.NOT_PROCESSED_ACTION, -// Constant.NOT_CONFIRMED_ACTION, -// Constant.NOT_ACCEPT_ACTION -// ) this.finish() } else -> { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index b051c34..8b95aa8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -7,15 +7,18 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.SearchResultAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.SearchResultModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -26,7 +29,7 @@ import okhttp3.RequestBody import org.json.JSONObject -class OrderSearchResultActivity : BaseActivity() { +class OrderSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var operationViewModel: OperationViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -42,6 +45,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "查询结果" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -95,12 +101,14 @@ } }) workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt index e5c9f86..f53a0d8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt @@ -1,32 +1,46 @@ package com.casic.qd.smartwell.view -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting +import com.casic.qd.smartwell.R import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : AppCompatActivity(), PermissionCallbacks { +class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - PageNavigationManager.addActivity(this) + override fun initLayoutView(): Int = R.layout.activity_permssion + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) + } + + override fun initData() { //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - EasyPermissions.requestPermissions( - this, - "需要获取相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) + enterMainButton.setOnClickListener { + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) + } } } + override fun initEvent() { + + } + private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) @@ -36,9 +50,7 @@ } override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt index 5ce9def..edad500 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt @@ -2,21 +2,23 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder import kotlinx.android.synthetic.main.activity_alarm_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchAlarmActivity : BaseActivity() { +class SearchAlarmActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var areaViewModel: AreaViewModel @@ -27,6 +29,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "告警查询" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt index f994402..a5f6a30 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt @@ -12,7 +12,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceDataListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceDataModel @@ -20,8 +19,12 @@ import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import kotlinx.android.synthetic.main.activity_data_search.* @@ -34,7 +37,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDataActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDataActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var deviceViewModel: DeviceViewModel @@ -52,6 +55,9 @@ override fun initLayoutView(): Int = R.layout.activity_data_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "数据查询" rightOptionView.setOnClickListener { @@ -68,11 +74,12 @@ weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + //默认加载所有数据 + obtainSearchResult() } override fun initEvent() { - //默认加载所有数据 - obtainSearchResult(pageIndex) deviceViewModel.deviceDataModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -100,12 +107,14 @@ }) deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -114,12 +123,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } areaViewModel.areaModel.observe(this, { @@ -152,7 +161,7 @@ }) } - private fun obtainSearchResult(pageIndex: Int) { + private fun obtainSearchResult() { deviceViewModel.obtainDeviceData(areaId, keywords, pageIndex) } @@ -173,7 +182,7 @@ searchButton.setOnClickListener { keywords = deviceCodeView.text.toString() pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -201,7 +210,8 @@ } else { if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt index cc9cdb2..643a7e1 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt @@ -11,7 +11,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceListModel @@ -25,8 +24,12 @@ import com.casic.qd.smartwell.widgets.BottomAreaSheet import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState @@ -40,7 +43,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDeviceActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDeviceActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchDeviceViewModel: SearchResultViewModel @@ -66,6 +69,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "设备查询" rightOptionView.setOnClickListener { @@ -90,10 +96,11 @@ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + obtainSearchResult() } override fun initEvent() { - obtainSearchResult(pageIndex) searchDeviceViewModel.deviceResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -121,12 +128,14 @@ }) searchDeviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -135,12 +144,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } //数据监听 @@ -195,7 +204,7 @@ searchButton.setOnClickListener { pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -296,9 +305,9 @@ }) } - private fun obtainSearchResult(page: Int) { + private fun obtainSearchResult() { searchDeviceViewModel.obtainDeviceResult( - keywords, deviceTypeValue, deptId, deviceState, areaId, page + keywords, deviceTypeValue, deptId, deviceState, areaId, pageIndex ) } @@ -309,7 +318,8 @@ } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt index 430174b..e6e6045 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt @@ -5,23 +5,25 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AlarmContentModel import com.casic.qd.smartwell.model.OrderStatusModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.zhy.view.flowlayout.FlowLayout import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchOrderActivity : BaseActivity() { +class SearchOrderActivity : KotlinBaseActivity() { private lateinit var contentTypeViewModel: AlarmViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -37,6 +39,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单查询" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt index 3d78bfa..157c5e8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt @@ -5,17 +5,18 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.utils.WebCrawler import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -class SplashScreenActivity : BaseActivity() { +class SplashScreenActivity : KotlinBaseActivity() { private val kTag = "SplashScreenActivity" private lateinit var userDetailViewModel: UserDetailViewModel @@ -25,7 +26,7 @@ override fun initLayoutView(): Int = R.layout.activity_splash override fun setupTopBarLayout() { - + ImmersionBar.with(this).init() } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt index c87ffd2..bffa1b7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt @@ -5,7 +5,6 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -15,11 +14,11 @@ import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.BarEntry import com.github.mikephil.charting.data.PieEntry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type -import com.pengxh.kt.lite.extensions.obtainQuarterOfYear -import com.pengxh.kt.lite.extensions.timestampToDate -import com.pengxh.kt.lite.extensions.timestampToLastMonthDate -import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_statistics.* import kotlinx.android.synthetic.main.include_base_title.* import java.util.* @@ -30,7 +29,7 @@ * @date 2022/2/17 14:34 * @email 290677893@qq.com */ -class StatisticsActivity : BaseActivity() { +class StatisticsActivity : KotlinBaseActivity() { private val context: Context = this@StatisticsActivity private lateinit var waterViewModel: WaterStatisticsViewModel @@ -40,6 +39,9 @@ override fun initLayoutView(): Int = R.layout.activity_statistics override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "汇总统计" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt index 7818f8e..7e81e6c 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt @@ -5,7 +5,6 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper @@ -13,14 +12,17 @@ import com.casic.qd.smartwell.vm.WaterStatisticsViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_water_expanded.* import java.util.* import kotlin.collections.ArrayList -class WaterExpandedActivity : BaseActivity() { +class WaterExpandedActivity : KotlinBaseActivity() { private val kTag = "WaterExpandedActivity" private val context: Context = this@WaterExpandedActivity @@ -29,7 +31,8 @@ override fun initLayoutView(): Int = R.layout.activity_water_expanded override fun setupTopBarLayout() { - + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt index b22a1d9..040202a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt @@ -5,14 +5,17 @@ import android.webkit.WebView import android.widget.LinearLayout import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar import com.just.agentweb.AgentWeb import com.just.agentweb.WebViewClient +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.readAssetsFile +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_web.* -class WebsiteActivity : BaseActivity() { +class WebsiteActivity : KotlinBaseActivity() { private lateinit var agentWeb: AgentWeb private lateinit var url: String @@ -20,6 +23,9 @@ override fun initLayoutView(): Int = R.layout.activity_web override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "海洋石油工程有限公司" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt index 5347d10..69b8b35 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt @@ -3,35 +3,41 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WellViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_well_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class WellDetailActivity : BaseActivity() { +class WellDetailActivity : KotlinBaseActivity() { private lateinit var wellDetailViewModel: WellViewModel - private lateinit var wellId: String override fun initLayoutView(): Int = R.layout.activity_well_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "井详情" } override fun initData() { - wellId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val wellId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! wellDetailViewModel = ViewModelProvider(this).get(WellViewModel::class.java) + + wellDetailViewModel.obtainWellDetail(wellId) } override fun initEvent() { - wellDetailViewModel.obtainWellDetail(wellId) wellDetailViewModel.detailModel.observe(this, { if (it.code == 200) { val wellDetail = it.data!! diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt index fc78392..a512774 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt @@ -53,24 +53,12 @@ }) fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int + keywords: String, alarmType: String, areaId: String, alarmContentType: String, + beginTime: String, endTime: String, status: String, page: Int ) = launch({ val response = RetrofitServiceManager.obtainAlarmListByPage( - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - page + keywords, alarmType, areaId, alarmContentType, + beginTime, endTime, status, page ) val responseCode = response.separateResponseCode() if (responseCode == 200) { diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt index 8c13aec..3a3f38e 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt @@ -15,7 +15,6 @@ import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.BaseViewModel -import com.pengxh.kt.lite.vm.LoadState import org.json.JSONObject class AuthenticateViewModel : BaseViewModel() { @@ -25,8 +24,15 @@ val resultModel = MutableLiveData() fun obtainPublicKey() = launch({ - loadState.value = LoadState.Loading - keyModel.value = RetrofitServiceManager.authenticate() + val response = RetrofitServiceManager.authenticate() + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + keyModel.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.toErrorMessage().show(BaseApplication.obtainInstance()) + } }, { it.printStackTrace() }) diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt index 23e777e..c7f95b4 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt @@ -18,14 +18,16 @@ private val gson = Gson() val resultModel = MutableLiveData() - fun inn(sid: String, account: String, secretKey: String) = launch({ + fun enter(sid: String, account: String, secretKey: String) = launch({ + loadState.value = LoadState.Loading val response = RetrofitServiceManager.login(sid, account, secretKey) val responseCode = response.separateResponseCode() if (responseCode == 200) { - loadState.value = LoadState.Success resultModel.value = gson.fromJson( response, object : TypeToken() {}.type ) + loadState.value = LoadState.Success + "登录成功".show(BaseApplication.obtainInstance()) } else { loadState.value = LoadState.Fail response.toErrorMessage().show(BaseApplication.obtainInstance()) diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt index d50fa93..ebc951b 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt @@ -21,14 +21,8 @@ val deviceResultModel = MutableLiveData() fun obtainAlarmResult( - keywords: String?, - alarmType: String?, - areaId: String?, - alarmContentType: String?, - beginTime: String?, - endTime: String?, - status: String?, - page: Int + keywords: String?, alarmType: String?, areaId: String?, alarmContentType: String?, + beginTime: String?, endTime: String?, status: String?, page: Int ) = launch({ loadState.value = LoadState.Loading val response = RetrofitServiceManager.obtainAlarmResult( diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt deleted file mode 100644 index e016832..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.qd.smartwell.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.casic.qd.smartwell.R -import com.qmuiteam.qmui.util.QMUIDisplayHelper - - -/** - * 可删减九宫格 - * */ -@SuppressLint("NotifyDataSetChanged") -class NineGridImageAdapter(private val context: Context) : - RecyclerView.Adapter() { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 3a226ca..c67e61a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.* @@ -15,7 +14,7 @@ * PublicKey校验 */ @GET("/config/baseConfig") - suspend fun obtainPublicKey(): PublicKeyModel + suspend fun authenticate(): String /** * 登录并获取Token @@ -26,7 +25,7 @@ */ @FormUrlEncoded @POST("/user/login") - suspend fun obtainLoginResult( + suspend fun login( @Field("sid") sid: String, @Field("username") account: String, @Field("password") secretKey: String diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 8a35a50..237af66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory @@ -23,15 +22,15 @@ /** * 验证PublicKey */ - suspend fun authenticate(): PublicKeyModel { - return api.obtainPublicKey() + suspend fun authenticate(): String { + return api.authenticate() } /** * 登录并获取Token */ suspend fun login(sid: String, account: String, secretKey: String): String { - return api.obtainLoginResult(sid, account, secretKey) + return api.login(sid, account, secretKey) } /** diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 976811c..85370c5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -6,13 +6,16 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -20,7 +23,7 @@ import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmManagementActivity : BaseActivity() { +class AlarmManagementActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -35,6 +38,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "当前告警" rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index f27d4d3..f9e8fbc 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -6,14 +6,17 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.SearchResultViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -21,7 +24,7 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmSearchResultActivity : BaseActivity() { +class AlarmSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchAlarmViewModel: SearchResultViewModel @@ -38,6 +41,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "查询结果" } @@ -91,12 +97,14 @@ }) searchAlarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 597e793..40240d5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.view; import android.content.Context +import android.graphics.Color import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -9,10 +10,8 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.photoview.PhotoView -import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager @@ -20,13 +19,13 @@ import java.util.* -class BigImageActivity : BaseActivity() { +class BigImageActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_big_image override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, R.color.black.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, Color.BLACK) + leftBackView.setOnClickListener { finish() } } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 6e35c09..7660a79 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -2,22 +2,24 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.timestampToLastWeekTime import com.pengxh.kt.lite.extensions.timestampToTime +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_device_data_detail.* import kotlinx.android.synthetic.main.activity_main.rightOptionView import kotlinx.android.synthetic.main.activity_main.titleView -class DeviceDataDetailActivity : BaseActivity() { +class DeviceDataDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDataDetailActivity" private lateinit var deviceCode: String @@ -26,6 +28,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_data_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } deviceCode = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! titleView.text = String.format("${deviceCode}历史数据") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index dc5e200..e681958 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -8,20 +8,21 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.LoginViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper import kotlinx.android.synthetic.main.activity_login.* -// TODO 修改登录逻辑,参考四分公司 -class LoginActivity : BaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel @@ -48,8 +49,8 @@ override fun initLayoutView(): Int = R.layout.activity_login override fun setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this) + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) } override fun initData() { @@ -102,7 +103,7 @@ val dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!) //登录并获取Token,POST请求 - loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey) + loginViewModel.enter(it.data!!.sid!!, account, dataByPublicKey) loginViewModel.resultModel.observe(this, { loginResult -> if (loginResult.code == 200) { AuthenticationHelper.saveToken(loginResult.data!!.token!!) @@ -121,20 +122,15 @@ }) loginViewModel.loadState.observe(this, { loginState -> when (loginState) { - is LoadState.Success -> { - "登录成功".show(this) - DialogHelper.dismissLoadingDialog() + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "登录中,请稍后...") } else -> { - "登录失败,用户名或密码错误".show(this) DialogHelper.dismissLoadingDialog() } } }) } }) - authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index b0f3847..704e484 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -13,7 +13,6 @@ import com.bumptech.glide.Glide import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.HomeRecycleAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.model.LineChartEntryModel @@ -26,7 +25,10 @@ import com.google.android.material.navigation.NavigationView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState @@ -49,7 +51,7 @@ import java.util.* import kotlin.collections.ArrayList -class MainActivity : BaseActivity(), DrawerLayout.DrawerListener, +class MainActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener, NavigationView.OnNavigationItemSelectedListener { private val kTag = "MainActivity" @@ -64,7 +66,23 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = resources.getString(R.string.app_name) + + leftOptionView.setOnClickListener { + if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { + leftDrawerLayout.closeDrawer(GravityCompat.START) + } else { + leftDrawerLayout.openDrawer(GravityCompat.START) + } + } + leftDrawerLayout.addDrawerListener(this) + + rightOptionView.setOnClickListener { + navigatePageTo() + } } override fun initData() { @@ -149,18 +167,13 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) + + waterViewModel.waterStatistics() } override fun initEvent() { - leftOptionView.setOnClickListener { - if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { - leftDrawerLayout.closeDrawer(GravityCompat.START) - } else { - leftDrawerLayout.openDrawer(GravityCompat.START) - } - } - leftDrawerLayout.addDrawerListener(this) navigationView.setNavigationItemSelectedListener(this) + loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -169,11 +182,6 @@ } }) - rightOptionView.setOnClickListener { - navigatePageTo() - } - - waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index d6336d6..1ee58ff 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -14,7 +14,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.MapDeviceListModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -22,9 +21,13 @@ import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -38,7 +41,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class MapActivity : BaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class MapActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "MapActivity" @@ -70,8 +73,12 @@ override fun initLayoutView(): Int = R.layout.activity_map override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index b386373..809e6c0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,22 +5,24 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_completed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderCompletedDetailActivity : BaseActivity() { +class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -28,6 +30,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index 8653564..76f8077 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -9,41 +9,41 @@ import android.view.View import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderInHandleDetailActivity : BaseActivity() { +class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private val context: Context = this@OrderInHandleDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,6 +52,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -59,16 +62,14 @@ override fun initData() { val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!!//初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) - workOrderViewModel.obtainWorkOrderDetail(jobId) } @@ -240,7 +241,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -274,7 +275,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //处理完成工单状态处理 @@ -330,7 +338,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -393,22 +400,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index fa5a469..483307d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -3,30 +3,36 @@ import androidx.fragment.app.Fragment import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.TopViewPagerAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.fragment.OrderCompletedFragment import com.casic.qd.smartwell.fragment.OrderInHandleFragment import com.casic.qd.smartwell.fragment.OrderNotConfirmedFragment import com.casic.qd.smartwell.fragment.OrderNotProcessedFragment import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_order_management.* import java.util.* -class OrderManagementActivity : BaseActivity() { +class OrderManagementActivity : KotlinBaseActivity() { - private var fragmentList: ArrayList = ArrayList() + private var fragmentPages: ArrayList = ArrayList() init { - fragmentList.add(OrderNotProcessedFragment())//待处理 - fragmentList.add(OrderNotConfirmedFragment())//待确认 - fragmentList.add(OrderInHandleFragment())//处理中 - fragmentList.add(OrderCompletedFragment())//已完成 + fragmentPages.add(OrderNotProcessedFragment())//待处理 + fragmentPages.add(OrderNotConfirmedFragment())//待确认 + fragmentPages.add(OrderInHandleFragment())//处理中 + fragmentPages.add(OrderCompletedFragment())//已完成 } override fun initLayoutView(): Int = R.layout.activity_order_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "工单管理" rightOptionView.setOnClickListener { @@ -36,9 +42,9 @@ override fun initData() { val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentList + supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) - orderViewPager.offscreenPageLimit = fragmentList.size + orderViewPager.offscreenPageLimit = fragmentPages.size orderViewPager.adapter = topViewPagerAdapter orderTabLayout.setupWithViewPager(orderViewPager) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index 0b5e1d1..dd87a66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -8,42 +8,41 @@ import android.util.Log import android.view.View import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderNotConfirmedDetailActivity : BaseActivity() { +class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,23 +51,26 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } } override fun initData() { - jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) + workOrderViewModel.obtainWorkOrderDetail(jobId) } override fun initEvent() { @@ -93,7 +95,6 @@ } }) - workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -204,7 +205,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -238,7 +239,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //确认工单状态处理 @@ -262,6 +270,7 @@ BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(arrayListOf("拍照", "相册")) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { @@ -293,7 +302,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -356,22 +364,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index 63922a1..ac18ef0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,21 +6,24 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Poi import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WellViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderNotProcessedDetailActivity : BaseActivity() { +class OrderNotProcessedDetailActivity : KotlinBaseActivity() { private val context: Context = this@OrderNotProcessedDetailActivity private lateinit var workOrderViewModel: WorkOrderViewModel @@ -30,6 +33,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -147,12 +153,6 @@ } is LoadState.Success -> { DialogHelper.dismissLoadingDialog() - //通知列表刷新数据 -// BroadcastReceiverManager.instance.sendMultiBroadcast( -// Constant.NOT_PROCESSED_ACTION, -// Constant.NOT_CONFIRMED_ACTION, -// Constant.NOT_ACCEPT_ACTION -// ) this.finish() } else -> { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index b051c34..8b95aa8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -7,15 +7,18 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.SearchResultAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.SearchResultModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -26,7 +29,7 @@ import okhttp3.RequestBody import org.json.JSONObject -class OrderSearchResultActivity : BaseActivity() { +class OrderSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var operationViewModel: OperationViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -42,6 +45,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "查询结果" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -95,12 +101,14 @@ } }) workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt index e5c9f86..f53a0d8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt @@ -1,32 +1,46 @@ package com.casic.qd.smartwell.view -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting +import com.casic.qd.smartwell.R import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : AppCompatActivity(), PermissionCallbacks { +class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - PageNavigationManager.addActivity(this) + override fun initLayoutView(): Int = R.layout.activity_permssion + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) + } + + override fun initData() { //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - EasyPermissions.requestPermissions( - this, - "需要获取相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) + enterMainButton.setOnClickListener { + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) + } } } + override fun initEvent() { + + } + private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) @@ -36,9 +50,7 @@ } override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt index 5ce9def..edad500 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt @@ -2,21 +2,23 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder import kotlinx.android.synthetic.main.activity_alarm_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchAlarmActivity : BaseActivity() { +class SearchAlarmActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var areaViewModel: AreaViewModel @@ -27,6 +29,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "告警查询" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt index f994402..a5f6a30 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt @@ -12,7 +12,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceDataListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceDataModel @@ -20,8 +19,12 @@ import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import kotlinx.android.synthetic.main.activity_data_search.* @@ -34,7 +37,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDataActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDataActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var deviceViewModel: DeviceViewModel @@ -52,6 +55,9 @@ override fun initLayoutView(): Int = R.layout.activity_data_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "数据查询" rightOptionView.setOnClickListener { @@ -68,11 +74,12 @@ weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + //默认加载所有数据 + obtainSearchResult() } override fun initEvent() { - //默认加载所有数据 - obtainSearchResult(pageIndex) deviceViewModel.deviceDataModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -100,12 +107,14 @@ }) deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -114,12 +123,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } areaViewModel.areaModel.observe(this, { @@ -152,7 +161,7 @@ }) } - private fun obtainSearchResult(pageIndex: Int) { + private fun obtainSearchResult() { deviceViewModel.obtainDeviceData(areaId, keywords, pageIndex) } @@ -173,7 +182,7 @@ searchButton.setOnClickListener { keywords = deviceCodeView.text.toString() pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -201,7 +210,8 @@ } else { if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt index cc9cdb2..643a7e1 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt @@ -11,7 +11,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceListModel @@ -25,8 +24,12 @@ import com.casic.qd.smartwell.widgets.BottomAreaSheet import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState @@ -40,7 +43,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDeviceActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDeviceActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchDeviceViewModel: SearchResultViewModel @@ -66,6 +69,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "设备查询" rightOptionView.setOnClickListener { @@ -90,10 +96,11 @@ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + obtainSearchResult() } override fun initEvent() { - obtainSearchResult(pageIndex) searchDeviceViewModel.deviceResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -121,12 +128,14 @@ }) searchDeviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -135,12 +144,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } //数据监听 @@ -195,7 +204,7 @@ searchButton.setOnClickListener { pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -296,9 +305,9 @@ }) } - private fun obtainSearchResult(page: Int) { + private fun obtainSearchResult() { searchDeviceViewModel.obtainDeviceResult( - keywords, deviceTypeValue, deptId, deviceState, areaId, page + keywords, deviceTypeValue, deptId, deviceState, areaId, pageIndex ) } @@ -309,7 +318,8 @@ } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt index 430174b..e6e6045 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt @@ -5,23 +5,25 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AlarmContentModel import com.casic.qd.smartwell.model.OrderStatusModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.zhy.view.flowlayout.FlowLayout import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchOrderActivity : BaseActivity() { +class SearchOrderActivity : KotlinBaseActivity() { private lateinit var contentTypeViewModel: AlarmViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -37,6 +39,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单查询" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt index 3d78bfa..157c5e8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt @@ -5,17 +5,18 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.utils.WebCrawler import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -class SplashScreenActivity : BaseActivity() { +class SplashScreenActivity : KotlinBaseActivity() { private val kTag = "SplashScreenActivity" private lateinit var userDetailViewModel: UserDetailViewModel @@ -25,7 +26,7 @@ override fun initLayoutView(): Int = R.layout.activity_splash override fun setupTopBarLayout() { - + ImmersionBar.with(this).init() } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt index c87ffd2..bffa1b7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt @@ -5,7 +5,6 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -15,11 +14,11 @@ import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.BarEntry import com.github.mikephil.charting.data.PieEntry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type -import com.pengxh.kt.lite.extensions.obtainQuarterOfYear -import com.pengxh.kt.lite.extensions.timestampToDate -import com.pengxh.kt.lite.extensions.timestampToLastMonthDate -import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_statistics.* import kotlinx.android.synthetic.main.include_base_title.* import java.util.* @@ -30,7 +29,7 @@ * @date 2022/2/17 14:34 * @email 290677893@qq.com */ -class StatisticsActivity : BaseActivity() { +class StatisticsActivity : KotlinBaseActivity() { private val context: Context = this@StatisticsActivity private lateinit var waterViewModel: WaterStatisticsViewModel @@ -40,6 +39,9 @@ override fun initLayoutView(): Int = R.layout.activity_statistics override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "汇总统计" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt index 7818f8e..7e81e6c 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt @@ -5,7 +5,6 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper @@ -13,14 +12,17 @@ import com.casic.qd.smartwell.vm.WaterStatisticsViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_water_expanded.* import java.util.* import kotlin.collections.ArrayList -class WaterExpandedActivity : BaseActivity() { +class WaterExpandedActivity : KotlinBaseActivity() { private val kTag = "WaterExpandedActivity" private val context: Context = this@WaterExpandedActivity @@ -29,7 +31,8 @@ override fun initLayoutView(): Int = R.layout.activity_water_expanded override fun setupTopBarLayout() { - + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt index b22a1d9..040202a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt @@ -5,14 +5,17 @@ import android.webkit.WebView import android.widget.LinearLayout import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar import com.just.agentweb.AgentWeb import com.just.agentweb.WebViewClient +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.readAssetsFile +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_web.* -class WebsiteActivity : BaseActivity() { +class WebsiteActivity : KotlinBaseActivity() { private lateinit var agentWeb: AgentWeb private lateinit var url: String @@ -20,6 +23,9 @@ override fun initLayoutView(): Int = R.layout.activity_web override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "海洋石油工程有限公司" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt index 5347d10..69b8b35 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt @@ -3,35 +3,41 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WellViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_well_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class WellDetailActivity : BaseActivity() { +class WellDetailActivity : KotlinBaseActivity() { private lateinit var wellDetailViewModel: WellViewModel - private lateinit var wellId: String override fun initLayoutView(): Int = R.layout.activity_well_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "井详情" } override fun initData() { - wellId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val wellId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! wellDetailViewModel = ViewModelProvider(this).get(WellViewModel::class.java) + + wellDetailViewModel.obtainWellDetail(wellId) } override fun initEvent() { - wellDetailViewModel.obtainWellDetail(wellId) wellDetailViewModel.detailModel.observe(this, { if (it.code == 200) { val wellDetail = it.data!! diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt index fc78392..a512774 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt @@ -53,24 +53,12 @@ }) fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int + keywords: String, alarmType: String, areaId: String, alarmContentType: String, + beginTime: String, endTime: String, status: String, page: Int ) = launch({ val response = RetrofitServiceManager.obtainAlarmListByPage( - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - page + keywords, alarmType, areaId, alarmContentType, + beginTime, endTime, status, page ) val responseCode = response.separateResponseCode() if (responseCode == 200) { diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt index 8c13aec..3a3f38e 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt @@ -15,7 +15,6 @@ import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.BaseViewModel -import com.pengxh.kt.lite.vm.LoadState import org.json.JSONObject class AuthenticateViewModel : BaseViewModel() { @@ -25,8 +24,15 @@ val resultModel = MutableLiveData() fun obtainPublicKey() = launch({ - loadState.value = LoadState.Loading - keyModel.value = RetrofitServiceManager.authenticate() + val response = RetrofitServiceManager.authenticate() + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + keyModel.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.toErrorMessage().show(BaseApplication.obtainInstance()) + } }, { it.printStackTrace() }) diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt index 23e777e..c7f95b4 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt @@ -18,14 +18,16 @@ private val gson = Gson() val resultModel = MutableLiveData() - fun inn(sid: String, account: String, secretKey: String) = launch({ + fun enter(sid: String, account: String, secretKey: String) = launch({ + loadState.value = LoadState.Loading val response = RetrofitServiceManager.login(sid, account, secretKey) val responseCode = response.separateResponseCode() if (responseCode == 200) { - loadState.value = LoadState.Success resultModel.value = gson.fromJson( response, object : TypeToken() {}.type ) + loadState.value = LoadState.Success + "登录成功".show(BaseApplication.obtainInstance()) } else { loadState.value = LoadState.Fail response.toErrorMessage().show(BaseApplication.obtainInstance()) diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt index d50fa93..ebc951b 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt @@ -21,14 +21,8 @@ val deviceResultModel = MutableLiveData() fun obtainAlarmResult( - keywords: String?, - alarmType: String?, - areaId: String?, - alarmContentType: String?, - beginTime: String?, - endTime: String?, - status: String?, - page: Int + keywords: String?, alarmType: String?, areaId: String?, alarmContentType: String?, + beginTime: String?, endTime: String?, status: String?, page: Int ) = launch({ loadState.value = LoadState.Loading val response = RetrofitServiceManager.obtainAlarmResult( diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt index d47b96e..1a9194d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt @@ -20,6 +20,7 @@ val resultModel = MutableLiveData() fun uploadImage(image: File) = launch({ + loadState.value = LoadState.Loading val response = RetrofitServiceManager.uploadImage(image) val responseCode = response.separateResponseCode() if (responseCode == 200) { diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt deleted file mode 100644 index e016832..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.qd.smartwell.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.casic.qd.smartwell.R -import com.qmuiteam.qmui.util.QMUIDisplayHelper - - -/** - * 可删减九宫格 - * */ -@SuppressLint("NotifyDataSetChanged") -class NineGridImageAdapter(private val context: Context) : - RecyclerView.Adapter() { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 3a226ca..c67e61a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.* @@ -15,7 +14,7 @@ * PublicKey校验 */ @GET("/config/baseConfig") - suspend fun obtainPublicKey(): PublicKeyModel + suspend fun authenticate(): String /** * 登录并获取Token @@ -26,7 +25,7 @@ */ @FormUrlEncoded @POST("/user/login") - suspend fun obtainLoginResult( + suspend fun login( @Field("sid") sid: String, @Field("username") account: String, @Field("password") secretKey: String diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 8a35a50..237af66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory @@ -23,15 +22,15 @@ /** * 验证PublicKey */ - suspend fun authenticate(): PublicKeyModel { - return api.obtainPublicKey() + suspend fun authenticate(): String { + return api.authenticate() } /** * 登录并获取Token */ suspend fun login(sid: String, account: String, secretKey: String): String { - return api.obtainLoginResult(sid, account, secretKey) + return api.login(sid, account, secretKey) } /** diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 976811c..85370c5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -6,13 +6,16 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -20,7 +23,7 @@ import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmManagementActivity : BaseActivity() { +class AlarmManagementActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -35,6 +38,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "当前告警" rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index f27d4d3..f9e8fbc 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -6,14 +6,17 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.SearchResultViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -21,7 +24,7 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmSearchResultActivity : BaseActivity() { +class AlarmSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchAlarmViewModel: SearchResultViewModel @@ -38,6 +41,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "查询结果" } @@ -91,12 +97,14 @@ }) searchAlarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 597e793..40240d5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.view; import android.content.Context +import android.graphics.Color import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -9,10 +10,8 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.photoview.PhotoView -import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager @@ -20,13 +19,13 @@ import java.util.* -class BigImageActivity : BaseActivity() { +class BigImageActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_big_image override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, R.color.black.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, Color.BLACK) + leftBackView.setOnClickListener { finish() } } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 6e35c09..7660a79 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -2,22 +2,24 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.timestampToLastWeekTime import com.pengxh.kt.lite.extensions.timestampToTime +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_device_data_detail.* import kotlinx.android.synthetic.main.activity_main.rightOptionView import kotlinx.android.synthetic.main.activity_main.titleView -class DeviceDataDetailActivity : BaseActivity() { +class DeviceDataDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDataDetailActivity" private lateinit var deviceCode: String @@ -26,6 +28,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_data_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } deviceCode = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! titleView.text = String.format("${deviceCode}历史数据") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index dc5e200..e681958 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -8,20 +8,21 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.LoginViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper import kotlinx.android.synthetic.main.activity_login.* -// TODO 修改登录逻辑,参考四分公司 -class LoginActivity : BaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel @@ -48,8 +49,8 @@ override fun initLayoutView(): Int = R.layout.activity_login override fun setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this) + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) } override fun initData() { @@ -102,7 +103,7 @@ val dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!) //登录并获取Token,POST请求 - loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey) + loginViewModel.enter(it.data!!.sid!!, account, dataByPublicKey) loginViewModel.resultModel.observe(this, { loginResult -> if (loginResult.code == 200) { AuthenticationHelper.saveToken(loginResult.data!!.token!!) @@ -121,20 +122,15 @@ }) loginViewModel.loadState.observe(this, { loginState -> when (loginState) { - is LoadState.Success -> { - "登录成功".show(this) - DialogHelper.dismissLoadingDialog() + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "登录中,请稍后...") } else -> { - "登录失败,用户名或密码错误".show(this) DialogHelper.dismissLoadingDialog() } } }) } }) - authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index b0f3847..704e484 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -13,7 +13,6 @@ import com.bumptech.glide.Glide import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.HomeRecycleAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.model.LineChartEntryModel @@ -26,7 +25,10 @@ import com.google.android.material.navigation.NavigationView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState @@ -49,7 +51,7 @@ import java.util.* import kotlin.collections.ArrayList -class MainActivity : BaseActivity(), DrawerLayout.DrawerListener, +class MainActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener, NavigationView.OnNavigationItemSelectedListener { private val kTag = "MainActivity" @@ -64,7 +66,23 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = resources.getString(R.string.app_name) + + leftOptionView.setOnClickListener { + if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { + leftDrawerLayout.closeDrawer(GravityCompat.START) + } else { + leftDrawerLayout.openDrawer(GravityCompat.START) + } + } + leftDrawerLayout.addDrawerListener(this) + + rightOptionView.setOnClickListener { + navigatePageTo() + } } override fun initData() { @@ -149,18 +167,13 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) + + waterViewModel.waterStatistics() } override fun initEvent() { - leftOptionView.setOnClickListener { - if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { - leftDrawerLayout.closeDrawer(GravityCompat.START) - } else { - leftDrawerLayout.openDrawer(GravityCompat.START) - } - } - leftDrawerLayout.addDrawerListener(this) navigationView.setNavigationItemSelectedListener(this) + loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -169,11 +182,6 @@ } }) - rightOptionView.setOnClickListener { - navigatePageTo() - } - - waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index d6336d6..1ee58ff 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -14,7 +14,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.MapDeviceListModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -22,9 +21,13 @@ import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -38,7 +41,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class MapActivity : BaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class MapActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "MapActivity" @@ -70,8 +73,12 @@ override fun initLayoutView(): Int = R.layout.activity_map override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index b386373..809e6c0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,22 +5,24 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_completed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderCompletedDetailActivity : BaseActivity() { +class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -28,6 +30,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index 8653564..76f8077 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -9,41 +9,41 @@ import android.view.View import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderInHandleDetailActivity : BaseActivity() { +class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private val context: Context = this@OrderInHandleDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,6 +52,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -59,16 +62,14 @@ override fun initData() { val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!!//初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) - workOrderViewModel.obtainWorkOrderDetail(jobId) } @@ -240,7 +241,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -274,7 +275,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //处理完成工单状态处理 @@ -330,7 +338,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -393,22 +400,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index fa5a469..483307d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -3,30 +3,36 @@ import androidx.fragment.app.Fragment import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.TopViewPagerAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.fragment.OrderCompletedFragment import com.casic.qd.smartwell.fragment.OrderInHandleFragment import com.casic.qd.smartwell.fragment.OrderNotConfirmedFragment import com.casic.qd.smartwell.fragment.OrderNotProcessedFragment import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_order_management.* import java.util.* -class OrderManagementActivity : BaseActivity() { +class OrderManagementActivity : KotlinBaseActivity() { - private var fragmentList: ArrayList = ArrayList() + private var fragmentPages: ArrayList = ArrayList() init { - fragmentList.add(OrderNotProcessedFragment())//待处理 - fragmentList.add(OrderNotConfirmedFragment())//待确认 - fragmentList.add(OrderInHandleFragment())//处理中 - fragmentList.add(OrderCompletedFragment())//已完成 + fragmentPages.add(OrderNotProcessedFragment())//待处理 + fragmentPages.add(OrderNotConfirmedFragment())//待确认 + fragmentPages.add(OrderInHandleFragment())//处理中 + fragmentPages.add(OrderCompletedFragment())//已完成 } override fun initLayoutView(): Int = R.layout.activity_order_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "工单管理" rightOptionView.setOnClickListener { @@ -36,9 +42,9 @@ override fun initData() { val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentList + supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) - orderViewPager.offscreenPageLimit = fragmentList.size + orderViewPager.offscreenPageLimit = fragmentPages.size orderViewPager.adapter = topViewPagerAdapter orderTabLayout.setupWithViewPager(orderViewPager) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index 0b5e1d1..dd87a66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -8,42 +8,41 @@ import android.util.Log import android.view.View import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderNotConfirmedDetailActivity : BaseActivity() { +class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,23 +51,26 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } } override fun initData() { - jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) + workOrderViewModel.obtainWorkOrderDetail(jobId) } override fun initEvent() { @@ -93,7 +95,6 @@ } }) - workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -204,7 +205,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -238,7 +239,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //确认工单状态处理 @@ -262,6 +270,7 @@ BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(arrayListOf("拍照", "相册")) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { @@ -293,7 +302,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -356,22 +364,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index 63922a1..ac18ef0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,21 +6,24 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Poi import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WellViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderNotProcessedDetailActivity : BaseActivity() { +class OrderNotProcessedDetailActivity : KotlinBaseActivity() { private val context: Context = this@OrderNotProcessedDetailActivity private lateinit var workOrderViewModel: WorkOrderViewModel @@ -30,6 +33,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -147,12 +153,6 @@ } is LoadState.Success -> { DialogHelper.dismissLoadingDialog() - //通知列表刷新数据 -// BroadcastReceiverManager.instance.sendMultiBroadcast( -// Constant.NOT_PROCESSED_ACTION, -// Constant.NOT_CONFIRMED_ACTION, -// Constant.NOT_ACCEPT_ACTION -// ) this.finish() } else -> { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index b051c34..8b95aa8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -7,15 +7,18 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.SearchResultAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.SearchResultModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -26,7 +29,7 @@ import okhttp3.RequestBody import org.json.JSONObject -class OrderSearchResultActivity : BaseActivity() { +class OrderSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var operationViewModel: OperationViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -42,6 +45,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "查询结果" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -95,12 +101,14 @@ } }) workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt index e5c9f86..f53a0d8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt @@ -1,32 +1,46 @@ package com.casic.qd.smartwell.view -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting +import com.casic.qd.smartwell.R import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : AppCompatActivity(), PermissionCallbacks { +class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - PageNavigationManager.addActivity(this) + override fun initLayoutView(): Int = R.layout.activity_permssion + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) + } + + override fun initData() { //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - EasyPermissions.requestPermissions( - this, - "需要获取相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) + enterMainButton.setOnClickListener { + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) + } } } + override fun initEvent() { + + } + private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) @@ -36,9 +50,7 @@ } override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt index 5ce9def..edad500 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt @@ -2,21 +2,23 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder import kotlinx.android.synthetic.main.activity_alarm_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchAlarmActivity : BaseActivity() { +class SearchAlarmActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var areaViewModel: AreaViewModel @@ -27,6 +29,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "告警查询" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt index f994402..a5f6a30 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt @@ -12,7 +12,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceDataListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceDataModel @@ -20,8 +19,12 @@ import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import kotlinx.android.synthetic.main.activity_data_search.* @@ -34,7 +37,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDataActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDataActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var deviceViewModel: DeviceViewModel @@ -52,6 +55,9 @@ override fun initLayoutView(): Int = R.layout.activity_data_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "数据查询" rightOptionView.setOnClickListener { @@ -68,11 +74,12 @@ weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + //默认加载所有数据 + obtainSearchResult() } override fun initEvent() { - //默认加载所有数据 - obtainSearchResult(pageIndex) deviceViewModel.deviceDataModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -100,12 +107,14 @@ }) deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -114,12 +123,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } areaViewModel.areaModel.observe(this, { @@ -152,7 +161,7 @@ }) } - private fun obtainSearchResult(pageIndex: Int) { + private fun obtainSearchResult() { deviceViewModel.obtainDeviceData(areaId, keywords, pageIndex) } @@ -173,7 +182,7 @@ searchButton.setOnClickListener { keywords = deviceCodeView.text.toString() pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -201,7 +210,8 @@ } else { if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt index cc9cdb2..643a7e1 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt @@ -11,7 +11,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceListModel @@ -25,8 +24,12 @@ import com.casic.qd.smartwell.widgets.BottomAreaSheet import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState @@ -40,7 +43,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDeviceActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDeviceActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchDeviceViewModel: SearchResultViewModel @@ -66,6 +69,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "设备查询" rightOptionView.setOnClickListener { @@ -90,10 +96,11 @@ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + obtainSearchResult() } override fun initEvent() { - obtainSearchResult(pageIndex) searchDeviceViewModel.deviceResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -121,12 +128,14 @@ }) searchDeviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -135,12 +144,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } //数据监听 @@ -195,7 +204,7 @@ searchButton.setOnClickListener { pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -296,9 +305,9 @@ }) } - private fun obtainSearchResult(page: Int) { + private fun obtainSearchResult() { searchDeviceViewModel.obtainDeviceResult( - keywords, deviceTypeValue, deptId, deviceState, areaId, page + keywords, deviceTypeValue, deptId, deviceState, areaId, pageIndex ) } @@ -309,7 +318,8 @@ } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt index 430174b..e6e6045 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt @@ -5,23 +5,25 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AlarmContentModel import com.casic.qd.smartwell.model.OrderStatusModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.zhy.view.flowlayout.FlowLayout import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchOrderActivity : BaseActivity() { +class SearchOrderActivity : KotlinBaseActivity() { private lateinit var contentTypeViewModel: AlarmViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -37,6 +39,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单查询" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt index 3d78bfa..157c5e8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt @@ -5,17 +5,18 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.utils.WebCrawler import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -class SplashScreenActivity : BaseActivity() { +class SplashScreenActivity : KotlinBaseActivity() { private val kTag = "SplashScreenActivity" private lateinit var userDetailViewModel: UserDetailViewModel @@ -25,7 +26,7 @@ override fun initLayoutView(): Int = R.layout.activity_splash override fun setupTopBarLayout() { - + ImmersionBar.with(this).init() } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt index c87ffd2..bffa1b7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt @@ -5,7 +5,6 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -15,11 +14,11 @@ import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.BarEntry import com.github.mikephil.charting.data.PieEntry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type -import com.pengxh.kt.lite.extensions.obtainQuarterOfYear -import com.pengxh.kt.lite.extensions.timestampToDate -import com.pengxh.kt.lite.extensions.timestampToLastMonthDate -import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_statistics.* import kotlinx.android.synthetic.main.include_base_title.* import java.util.* @@ -30,7 +29,7 @@ * @date 2022/2/17 14:34 * @email 290677893@qq.com */ -class StatisticsActivity : BaseActivity() { +class StatisticsActivity : KotlinBaseActivity() { private val context: Context = this@StatisticsActivity private lateinit var waterViewModel: WaterStatisticsViewModel @@ -40,6 +39,9 @@ override fun initLayoutView(): Int = R.layout.activity_statistics override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "汇总统计" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt index 7818f8e..7e81e6c 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt @@ -5,7 +5,6 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper @@ -13,14 +12,17 @@ import com.casic.qd.smartwell.vm.WaterStatisticsViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_water_expanded.* import java.util.* import kotlin.collections.ArrayList -class WaterExpandedActivity : BaseActivity() { +class WaterExpandedActivity : KotlinBaseActivity() { private val kTag = "WaterExpandedActivity" private val context: Context = this@WaterExpandedActivity @@ -29,7 +31,8 @@ override fun initLayoutView(): Int = R.layout.activity_water_expanded override fun setupTopBarLayout() { - + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt index b22a1d9..040202a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt @@ -5,14 +5,17 @@ import android.webkit.WebView import android.widget.LinearLayout import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar import com.just.agentweb.AgentWeb import com.just.agentweb.WebViewClient +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.readAssetsFile +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_web.* -class WebsiteActivity : BaseActivity() { +class WebsiteActivity : KotlinBaseActivity() { private lateinit var agentWeb: AgentWeb private lateinit var url: String @@ -20,6 +23,9 @@ override fun initLayoutView(): Int = R.layout.activity_web override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "海洋石油工程有限公司" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt index 5347d10..69b8b35 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt @@ -3,35 +3,41 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WellViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_well_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class WellDetailActivity : BaseActivity() { +class WellDetailActivity : KotlinBaseActivity() { private lateinit var wellDetailViewModel: WellViewModel - private lateinit var wellId: String override fun initLayoutView(): Int = R.layout.activity_well_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "井详情" } override fun initData() { - wellId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val wellId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! wellDetailViewModel = ViewModelProvider(this).get(WellViewModel::class.java) + + wellDetailViewModel.obtainWellDetail(wellId) } override fun initEvent() { - wellDetailViewModel.obtainWellDetail(wellId) wellDetailViewModel.detailModel.observe(this, { if (it.code == 200) { val wellDetail = it.data!! diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt index fc78392..a512774 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt @@ -53,24 +53,12 @@ }) fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int + keywords: String, alarmType: String, areaId: String, alarmContentType: String, + beginTime: String, endTime: String, status: String, page: Int ) = launch({ val response = RetrofitServiceManager.obtainAlarmListByPage( - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - page + keywords, alarmType, areaId, alarmContentType, + beginTime, endTime, status, page ) val responseCode = response.separateResponseCode() if (responseCode == 200) { diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt index 8c13aec..3a3f38e 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt @@ -15,7 +15,6 @@ import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.BaseViewModel -import com.pengxh.kt.lite.vm.LoadState import org.json.JSONObject class AuthenticateViewModel : BaseViewModel() { @@ -25,8 +24,15 @@ val resultModel = MutableLiveData() fun obtainPublicKey() = launch({ - loadState.value = LoadState.Loading - keyModel.value = RetrofitServiceManager.authenticate() + val response = RetrofitServiceManager.authenticate() + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + keyModel.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.toErrorMessage().show(BaseApplication.obtainInstance()) + } }, { it.printStackTrace() }) diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt index 23e777e..c7f95b4 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt @@ -18,14 +18,16 @@ private val gson = Gson() val resultModel = MutableLiveData() - fun inn(sid: String, account: String, secretKey: String) = launch({ + fun enter(sid: String, account: String, secretKey: String) = launch({ + loadState.value = LoadState.Loading val response = RetrofitServiceManager.login(sid, account, secretKey) val responseCode = response.separateResponseCode() if (responseCode == 200) { - loadState.value = LoadState.Success resultModel.value = gson.fromJson( response, object : TypeToken() {}.type ) + loadState.value = LoadState.Success + "登录成功".show(BaseApplication.obtainInstance()) } else { loadState.value = LoadState.Fail response.toErrorMessage().show(BaseApplication.obtainInstance()) diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt index d50fa93..ebc951b 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt @@ -21,14 +21,8 @@ val deviceResultModel = MutableLiveData() fun obtainAlarmResult( - keywords: String?, - alarmType: String?, - areaId: String?, - alarmContentType: String?, - beginTime: String?, - endTime: String?, - status: String?, - page: Int + keywords: String?, alarmType: String?, areaId: String?, alarmContentType: String?, + beginTime: String?, endTime: String?, status: String?, page: Int ) = launch({ loadState.value = LoadState.Loading val response = RetrofitServiceManager.obtainAlarmResult( diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt index d47b96e..1a9194d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt @@ -20,6 +20,7 @@ val resultModel = MutableLiveData() fun uploadImage(image: File) = launch({ + loadState.value = LoadState.Loading val response = RetrofitServiceManager.uploadImage(image) val responseCode = response.separateResponseCode() if (responseCode == 200) { diff --git a/app/src/main/java/com/casic/qd/smartwell/widgets/DateSelectDialog.kt b/app/src/main/java/com/casic/qd/smartwell/widgets/DateSelectDialog.kt index 7e4b8e5..a7bdc5e 100644 --- a/app/src/main/java/com/casic/qd/smartwell/widgets/DateSelectDialog.kt +++ b/app/src/main/java/com/casic/qd/smartwell/widgets/DateSelectDialog.kt @@ -100,7 +100,7 @@ .setType(type) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> val textValue = if (type == Type.ALL) { - millSeconds.timestampToTime() + millSeconds.timestampToCompleteDate() } else { millSeconds.timestampToDate() } @@ -119,7 +119,7 @@ .setType(type) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> val textValue = if (type == Type.ALL) { - millSeconds.timestampToTime() + millSeconds.timestampToCompleteDate() } else { millSeconds.timestampToDate() } diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt deleted file mode 100644 index e016832..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.qd.smartwell.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.casic.qd.smartwell.R -import com.qmuiteam.qmui.util.QMUIDisplayHelper - - -/** - * 可删减九宫格 - * */ -@SuppressLint("NotifyDataSetChanged") -class NineGridImageAdapter(private val context: Context) : - RecyclerView.Adapter() { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 3a226ca..c67e61a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.* @@ -15,7 +14,7 @@ * PublicKey校验 */ @GET("/config/baseConfig") - suspend fun obtainPublicKey(): PublicKeyModel + suspend fun authenticate(): String /** * 登录并获取Token @@ -26,7 +25,7 @@ */ @FormUrlEncoded @POST("/user/login") - suspend fun obtainLoginResult( + suspend fun login( @Field("sid") sid: String, @Field("username") account: String, @Field("password") secretKey: String diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 8a35a50..237af66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory @@ -23,15 +22,15 @@ /** * 验证PublicKey */ - suspend fun authenticate(): PublicKeyModel { - return api.obtainPublicKey() + suspend fun authenticate(): String { + return api.authenticate() } /** * 登录并获取Token */ suspend fun login(sid: String, account: String, secretKey: String): String { - return api.obtainLoginResult(sid, account, secretKey) + return api.login(sid, account, secretKey) } /** diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 976811c..85370c5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -6,13 +6,16 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -20,7 +23,7 @@ import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmManagementActivity : BaseActivity() { +class AlarmManagementActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -35,6 +38,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "当前告警" rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index f27d4d3..f9e8fbc 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -6,14 +6,17 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.SearchResultViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -21,7 +24,7 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmSearchResultActivity : BaseActivity() { +class AlarmSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchAlarmViewModel: SearchResultViewModel @@ -38,6 +41,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "查询结果" } @@ -91,12 +97,14 @@ }) searchAlarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 597e793..40240d5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.view; import android.content.Context +import android.graphics.Color import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -9,10 +10,8 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.photoview.PhotoView -import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager @@ -20,13 +19,13 @@ import java.util.* -class BigImageActivity : BaseActivity() { +class BigImageActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_big_image override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, R.color.black.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, Color.BLACK) + leftBackView.setOnClickListener { finish() } } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 6e35c09..7660a79 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -2,22 +2,24 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.timestampToLastWeekTime import com.pengxh.kt.lite.extensions.timestampToTime +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_device_data_detail.* import kotlinx.android.synthetic.main.activity_main.rightOptionView import kotlinx.android.synthetic.main.activity_main.titleView -class DeviceDataDetailActivity : BaseActivity() { +class DeviceDataDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDataDetailActivity" private lateinit var deviceCode: String @@ -26,6 +28,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_data_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } deviceCode = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! titleView.text = String.format("${deviceCode}历史数据") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index dc5e200..e681958 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -8,20 +8,21 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.LoginViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper import kotlinx.android.synthetic.main.activity_login.* -// TODO 修改登录逻辑,参考四分公司 -class LoginActivity : BaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel @@ -48,8 +49,8 @@ override fun initLayoutView(): Int = R.layout.activity_login override fun setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this) + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) } override fun initData() { @@ -102,7 +103,7 @@ val dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!) //登录并获取Token,POST请求 - loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey) + loginViewModel.enter(it.data!!.sid!!, account, dataByPublicKey) loginViewModel.resultModel.observe(this, { loginResult -> if (loginResult.code == 200) { AuthenticationHelper.saveToken(loginResult.data!!.token!!) @@ -121,20 +122,15 @@ }) loginViewModel.loadState.observe(this, { loginState -> when (loginState) { - is LoadState.Success -> { - "登录成功".show(this) - DialogHelper.dismissLoadingDialog() + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "登录中,请稍后...") } else -> { - "登录失败,用户名或密码错误".show(this) DialogHelper.dismissLoadingDialog() } } }) } }) - authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index b0f3847..704e484 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -13,7 +13,6 @@ import com.bumptech.glide.Glide import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.HomeRecycleAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.model.LineChartEntryModel @@ -26,7 +25,10 @@ import com.google.android.material.navigation.NavigationView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState @@ -49,7 +51,7 @@ import java.util.* import kotlin.collections.ArrayList -class MainActivity : BaseActivity(), DrawerLayout.DrawerListener, +class MainActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener, NavigationView.OnNavigationItemSelectedListener { private val kTag = "MainActivity" @@ -64,7 +66,23 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = resources.getString(R.string.app_name) + + leftOptionView.setOnClickListener { + if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { + leftDrawerLayout.closeDrawer(GravityCompat.START) + } else { + leftDrawerLayout.openDrawer(GravityCompat.START) + } + } + leftDrawerLayout.addDrawerListener(this) + + rightOptionView.setOnClickListener { + navigatePageTo() + } } override fun initData() { @@ -149,18 +167,13 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) + + waterViewModel.waterStatistics() } override fun initEvent() { - leftOptionView.setOnClickListener { - if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { - leftDrawerLayout.closeDrawer(GravityCompat.START) - } else { - leftDrawerLayout.openDrawer(GravityCompat.START) - } - } - leftDrawerLayout.addDrawerListener(this) navigationView.setNavigationItemSelectedListener(this) + loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -169,11 +182,6 @@ } }) - rightOptionView.setOnClickListener { - navigatePageTo() - } - - waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index d6336d6..1ee58ff 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -14,7 +14,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.MapDeviceListModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -22,9 +21,13 @@ import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -38,7 +41,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class MapActivity : BaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class MapActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "MapActivity" @@ -70,8 +73,12 @@ override fun initLayoutView(): Int = R.layout.activity_map override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index b386373..809e6c0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,22 +5,24 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_completed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderCompletedDetailActivity : BaseActivity() { +class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -28,6 +30,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index 8653564..76f8077 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -9,41 +9,41 @@ import android.view.View import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderInHandleDetailActivity : BaseActivity() { +class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private val context: Context = this@OrderInHandleDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,6 +52,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -59,16 +62,14 @@ override fun initData() { val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!!//初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) - workOrderViewModel.obtainWorkOrderDetail(jobId) } @@ -240,7 +241,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -274,7 +275,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //处理完成工单状态处理 @@ -330,7 +338,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -393,22 +400,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index fa5a469..483307d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -3,30 +3,36 @@ import androidx.fragment.app.Fragment import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.TopViewPagerAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.fragment.OrderCompletedFragment import com.casic.qd.smartwell.fragment.OrderInHandleFragment import com.casic.qd.smartwell.fragment.OrderNotConfirmedFragment import com.casic.qd.smartwell.fragment.OrderNotProcessedFragment import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_order_management.* import java.util.* -class OrderManagementActivity : BaseActivity() { +class OrderManagementActivity : KotlinBaseActivity() { - private var fragmentList: ArrayList = ArrayList() + private var fragmentPages: ArrayList = ArrayList() init { - fragmentList.add(OrderNotProcessedFragment())//待处理 - fragmentList.add(OrderNotConfirmedFragment())//待确认 - fragmentList.add(OrderInHandleFragment())//处理中 - fragmentList.add(OrderCompletedFragment())//已完成 + fragmentPages.add(OrderNotProcessedFragment())//待处理 + fragmentPages.add(OrderNotConfirmedFragment())//待确认 + fragmentPages.add(OrderInHandleFragment())//处理中 + fragmentPages.add(OrderCompletedFragment())//已完成 } override fun initLayoutView(): Int = R.layout.activity_order_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "工单管理" rightOptionView.setOnClickListener { @@ -36,9 +42,9 @@ override fun initData() { val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentList + supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) - orderViewPager.offscreenPageLimit = fragmentList.size + orderViewPager.offscreenPageLimit = fragmentPages.size orderViewPager.adapter = topViewPagerAdapter orderTabLayout.setupWithViewPager(orderViewPager) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index 0b5e1d1..dd87a66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -8,42 +8,41 @@ import android.util.Log import android.view.View import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderNotConfirmedDetailActivity : BaseActivity() { +class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,23 +51,26 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } } override fun initData() { - jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) + workOrderViewModel.obtainWorkOrderDetail(jobId) } override fun initEvent() { @@ -93,7 +95,6 @@ } }) - workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -204,7 +205,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -238,7 +239,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //确认工单状态处理 @@ -262,6 +270,7 @@ BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(arrayListOf("拍照", "相册")) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { @@ -293,7 +302,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -356,22 +364,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index 63922a1..ac18ef0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,21 +6,24 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Poi import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WellViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderNotProcessedDetailActivity : BaseActivity() { +class OrderNotProcessedDetailActivity : KotlinBaseActivity() { private val context: Context = this@OrderNotProcessedDetailActivity private lateinit var workOrderViewModel: WorkOrderViewModel @@ -30,6 +33,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -147,12 +153,6 @@ } is LoadState.Success -> { DialogHelper.dismissLoadingDialog() - //通知列表刷新数据 -// BroadcastReceiverManager.instance.sendMultiBroadcast( -// Constant.NOT_PROCESSED_ACTION, -// Constant.NOT_CONFIRMED_ACTION, -// Constant.NOT_ACCEPT_ACTION -// ) this.finish() } else -> { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index b051c34..8b95aa8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -7,15 +7,18 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.SearchResultAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.SearchResultModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -26,7 +29,7 @@ import okhttp3.RequestBody import org.json.JSONObject -class OrderSearchResultActivity : BaseActivity() { +class OrderSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var operationViewModel: OperationViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -42,6 +45,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "查询结果" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -95,12 +101,14 @@ } }) workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt index e5c9f86..f53a0d8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt @@ -1,32 +1,46 @@ package com.casic.qd.smartwell.view -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting +import com.casic.qd.smartwell.R import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : AppCompatActivity(), PermissionCallbacks { +class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - PageNavigationManager.addActivity(this) + override fun initLayoutView(): Int = R.layout.activity_permssion + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) + } + + override fun initData() { //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - EasyPermissions.requestPermissions( - this, - "需要获取相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) + enterMainButton.setOnClickListener { + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) + } } } + override fun initEvent() { + + } + private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) @@ -36,9 +50,7 @@ } override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt index 5ce9def..edad500 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt @@ -2,21 +2,23 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder import kotlinx.android.synthetic.main.activity_alarm_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchAlarmActivity : BaseActivity() { +class SearchAlarmActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var areaViewModel: AreaViewModel @@ -27,6 +29,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "告警查询" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt index f994402..a5f6a30 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt @@ -12,7 +12,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceDataListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceDataModel @@ -20,8 +19,12 @@ import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import kotlinx.android.synthetic.main.activity_data_search.* @@ -34,7 +37,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDataActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDataActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var deviceViewModel: DeviceViewModel @@ -52,6 +55,9 @@ override fun initLayoutView(): Int = R.layout.activity_data_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "数据查询" rightOptionView.setOnClickListener { @@ -68,11 +74,12 @@ weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + //默认加载所有数据 + obtainSearchResult() } override fun initEvent() { - //默认加载所有数据 - obtainSearchResult(pageIndex) deviceViewModel.deviceDataModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -100,12 +107,14 @@ }) deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -114,12 +123,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } areaViewModel.areaModel.observe(this, { @@ -152,7 +161,7 @@ }) } - private fun obtainSearchResult(pageIndex: Int) { + private fun obtainSearchResult() { deviceViewModel.obtainDeviceData(areaId, keywords, pageIndex) } @@ -173,7 +182,7 @@ searchButton.setOnClickListener { keywords = deviceCodeView.text.toString() pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -201,7 +210,8 @@ } else { if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt index cc9cdb2..643a7e1 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt @@ -11,7 +11,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceListModel @@ -25,8 +24,12 @@ import com.casic.qd.smartwell.widgets.BottomAreaSheet import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState @@ -40,7 +43,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDeviceActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDeviceActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchDeviceViewModel: SearchResultViewModel @@ -66,6 +69,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "设备查询" rightOptionView.setOnClickListener { @@ -90,10 +96,11 @@ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + obtainSearchResult() } override fun initEvent() { - obtainSearchResult(pageIndex) searchDeviceViewModel.deviceResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -121,12 +128,14 @@ }) searchDeviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -135,12 +144,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } //数据监听 @@ -195,7 +204,7 @@ searchButton.setOnClickListener { pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -296,9 +305,9 @@ }) } - private fun obtainSearchResult(page: Int) { + private fun obtainSearchResult() { searchDeviceViewModel.obtainDeviceResult( - keywords, deviceTypeValue, deptId, deviceState, areaId, page + keywords, deviceTypeValue, deptId, deviceState, areaId, pageIndex ) } @@ -309,7 +318,8 @@ } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt index 430174b..e6e6045 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt @@ -5,23 +5,25 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AlarmContentModel import com.casic.qd.smartwell.model.OrderStatusModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.zhy.view.flowlayout.FlowLayout import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchOrderActivity : BaseActivity() { +class SearchOrderActivity : KotlinBaseActivity() { private lateinit var contentTypeViewModel: AlarmViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -37,6 +39,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单查询" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt index 3d78bfa..157c5e8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt @@ -5,17 +5,18 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.utils.WebCrawler import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -class SplashScreenActivity : BaseActivity() { +class SplashScreenActivity : KotlinBaseActivity() { private val kTag = "SplashScreenActivity" private lateinit var userDetailViewModel: UserDetailViewModel @@ -25,7 +26,7 @@ override fun initLayoutView(): Int = R.layout.activity_splash override fun setupTopBarLayout() { - + ImmersionBar.with(this).init() } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt index c87ffd2..bffa1b7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt @@ -5,7 +5,6 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -15,11 +14,11 @@ import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.BarEntry import com.github.mikephil.charting.data.PieEntry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type -import com.pengxh.kt.lite.extensions.obtainQuarterOfYear -import com.pengxh.kt.lite.extensions.timestampToDate -import com.pengxh.kt.lite.extensions.timestampToLastMonthDate -import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_statistics.* import kotlinx.android.synthetic.main.include_base_title.* import java.util.* @@ -30,7 +29,7 @@ * @date 2022/2/17 14:34 * @email 290677893@qq.com */ -class StatisticsActivity : BaseActivity() { +class StatisticsActivity : KotlinBaseActivity() { private val context: Context = this@StatisticsActivity private lateinit var waterViewModel: WaterStatisticsViewModel @@ -40,6 +39,9 @@ override fun initLayoutView(): Int = R.layout.activity_statistics override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "汇总统计" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt index 7818f8e..7e81e6c 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt @@ -5,7 +5,6 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper @@ -13,14 +12,17 @@ import com.casic.qd.smartwell.vm.WaterStatisticsViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_water_expanded.* import java.util.* import kotlin.collections.ArrayList -class WaterExpandedActivity : BaseActivity() { +class WaterExpandedActivity : KotlinBaseActivity() { private val kTag = "WaterExpandedActivity" private val context: Context = this@WaterExpandedActivity @@ -29,7 +31,8 @@ override fun initLayoutView(): Int = R.layout.activity_water_expanded override fun setupTopBarLayout() { - + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt index b22a1d9..040202a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt @@ -5,14 +5,17 @@ import android.webkit.WebView import android.widget.LinearLayout import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar import com.just.agentweb.AgentWeb import com.just.agentweb.WebViewClient +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.readAssetsFile +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_web.* -class WebsiteActivity : BaseActivity() { +class WebsiteActivity : KotlinBaseActivity() { private lateinit var agentWeb: AgentWeb private lateinit var url: String @@ -20,6 +23,9 @@ override fun initLayoutView(): Int = R.layout.activity_web override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "海洋石油工程有限公司" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt index 5347d10..69b8b35 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt @@ -3,35 +3,41 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WellViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_well_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class WellDetailActivity : BaseActivity() { +class WellDetailActivity : KotlinBaseActivity() { private lateinit var wellDetailViewModel: WellViewModel - private lateinit var wellId: String override fun initLayoutView(): Int = R.layout.activity_well_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "井详情" } override fun initData() { - wellId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val wellId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! wellDetailViewModel = ViewModelProvider(this).get(WellViewModel::class.java) + + wellDetailViewModel.obtainWellDetail(wellId) } override fun initEvent() { - wellDetailViewModel.obtainWellDetail(wellId) wellDetailViewModel.detailModel.observe(this, { if (it.code == 200) { val wellDetail = it.data!! diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt index fc78392..a512774 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt @@ -53,24 +53,12 @@ }) fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int + keywords: String, alarmType: String, areaId: String, alarmContentType: String, + beginTime: String, endTime: String, status: String, page: Int ) = launch({ val response = RetrofitServiceManager.obtainAlarmListByPage( - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - page + keywords, alarmType, areaId, alarmContentType, + beginTime, endTime, status, page ) val responseCode = response.separateResponseCode() if (responseCode == 200) { diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt index 8c13aec..3a3f38e 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt @@ -15,7 +15,6 @@ import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.BaseViewModel -import com.pengxh.kt.lite.vm.LoadState import org.json.JSONObject class AuthenticateViewModel : BaseViewModel() { @@ -25,8 +24,15 @@ val resultModel = MutableLiveData() fun obtainPublicKey() = launch({ - loadState.value = LoadState.Loading - keyModel.value = RetrofitServiceManager.authenticate() + val response = RetrofitServiceManager.authenticate() + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + keyModel.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.toErrorMessage().show(BaseApplication.obtainInstance()) + } }, { it.printStackTrace() }) diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt index 23e777e..c7f95b4 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt @@ -18,14 +18,16 @@ private val gson = Gson() val resultModel = MutableLiveData() - fun inn(sid: String, account: String, secretKey: String) = launch({ + fun enter(sid: String, account: String, secretKey: String) = launch({ + loadState.value = LoadState.Loading val response = RetrofitServiceManager.login(sid, account, secretKey) val responseCode = response.separateResponseCode() if (responseCode == 200) { - loadState.value = LoadState.Success resultModel.value = gson.fromJson( response, object : TypeToken() {}.type ) + loadState.value = LoadState.Success + "登录成功".show(BaseApplication.obtainInstance()) } else { loadState.value = LoadState.Fail response.toErrorMessage().show(BaseApplication.obtainInstance()) diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt index d50fa93..ebc951b 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt @@ -21,14 +21,8 @@ val deviceResultModel = MutableLiveData() fun obtainAlarmResult( - keywords: String?, - alarmType: String?, - areaId: String?, - alarmContentType: String?, - beginTime: String?, - endTime: String?, - status: String?, - page: Int + keywords: String?, alarmType: String?, areaId: String?, alarmContentType: String?, + beginTime: String?, endTime: String?, status: String?, page: Int ) = launch({ loadState.value = LoadState.Loading val response = RetrofitServiceManager.obtainAlarmResult( diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt index d47b96e..1a9194d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt @@ -20,6 +20,7 @@ val resultModel = MutableLiveData() fun uploadImage(image: File) = launch({ + loadState.value = LoadState.Loading val response = RetrofitServiceManager.uploadImage(image) val responseCode = response.separateResponseCode() if (responseCode == 200) { diff --git a/app/src/main/java/com/casic/qd/smartwell/widgets/DateSelectDialog.kt b/app/src/main/java/com/casic/qd/smartwell/widgets/DateSelectDialog.kt index 7e4b8e5..a7bdc5e 100644 --- a/app/src/main/java/com/casic/qd/smartwell/widgets/DateSelectDialog.kt +++ b/app/src/main/java/com/casic/qd/smartwell/widgets/DateSelectDialog.kt @@ -100,7 +100,7 @@ .setType(type) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> val textValue = if (type == Type.ALL) { - millSeconds.timestampToTime() + millSeconds.timestampToCompleteDate() } else { millSeconds.timestampToDate() } @@ -119,7 +119,7 @@ .setType(type) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> val textValue = if (type == Type.ALL) { - millSeconds.timestampToTime() + millSeconds.timestampToCompleteDate() } else { millSeconds.timestampToDate() } diff --git a/app/src/main/res/drawable/ic_add_pic.xml b/app/src/main/res/drawable/ic_add_pic.xml deleted file mode 100644 index 9d1e830..0000000 --- a/app/src/main/res/drawable/ic_add_pic.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt deleted file mode 100644 index e016832..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.qd.smartwell.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.casic.qd.smartwell.R -import com.qmuiteam.qmui.util.QMUIDisplayHelper - - -/** - * 可删减九宫格 - * */ -@SuppressLint("NotifyDataSetChanged") -class NineGridImageAdapter(private val context: Context) : - RecyclerView.Adapter() { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 3a226ca..c67e61a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.* @@ -15,7 +14,7 @@ * PublicKey校验 */ @GET("/config/baseConfig") - suspend fun obtainPublicKey(): PublicKeyModel + suspend fun authenticate(): String /** * 登录并获取Token @@ -26,7 +25,7 @@ */ @FormUrlEncoded @POST("/user/login") - suspend fun obtainLoginResult( + suspend fun login( @Field("sid") sid: String, @Field("username") account: String, @Field("password") secretKey: String diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 8a35a50..237af66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory @@ -23,15 +22,15 @@ /** * 验证PublicKey */ - suspend fun authenticate(): PublicKeyModel { - return api.obtainPublicKey() + suspend fun authenticate(): String { + return api.authenticate() } /** * 登录并获取Token */ suspend fun login(sid: String, account: String, secretKey: String): String { - return api.obtainLoginResult(sid, account, secretKey) + return api.login(sid, account, secretKey) } /** diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 976811c..85370c5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -6,13 +6,16 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -20,7 +23,7 @@ import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmManagementActivity : BaseActivity() { +class AlarmManagementActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -35,6 +38,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "当前告警" rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index f27d4d3..f9e8fbc 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -6,14 +6,17 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.SearchResultViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -21,7 +24,7 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmSearchResultActivity : BaseActivity() { +class AlarmSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchAlarmViewModel: SearchResultViewModel @@ -38,6 +41,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "查询结果" } @@ -91,12 +97,14 @@ }) searchAlarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 597e793..40240d5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.view; import android.content.Context +import android.graphics.Color import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -9,10 +10,8 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.photoview.PhotoView -import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager @@ -20,13 +19,13 @@ import java.util.* -class BigImageActivity : BaseActivity() { +class BigImageActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_big_image override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, R.color.black.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, Color.BLACK) + leftBackView.setOnClickListener { finish() } } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 6e35c09..7660a79 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -2,22 +2,24 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.timestampToLastWeekTime import com.pengxh.kt.lite.extensions.timestampToTime +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_device_data_detail.* import kotlinx.android.synthetic.main.activity_main.rightOptionView import kotlinx.android.synthetic.main.activity_main.titleView -class DeviceDataDetailActivity : BaseActivity() { +class DeviceDataDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDataDetailActivity" private lateinit var deviceCode: String @@ -26,6 +28,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_data_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } deviceCode = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! titleView.text = String.format("${deviceCode}历史数据") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index dc5e200..e681958 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -8,20 +8,21 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.LoginViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper import kotlinx.android.synthetic.main.activity_login.* -// TODO 修改登录逻辑,参考四分公司 -class LoginActivity : BaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel @@ -48,8 +49,8 @@ override fun initLayoutView(): Int = R.layout.activity_login override fun setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this) + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) } override fun initData() { @@ -102,7 +103,7 @@ val dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!) //登录并获取Token,POST请求 - loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey) + loginViewModel.enter(it.data!!.sid!!, account, dataByPublicKey) loginViewModel.resultModel.observe(this, { loginResult -> if (loginResult.code == 200) { AuthenticationHelper.saveToken(loginResult.data!!.token!!) @@ -121,20 +122,15 @@ }) loginViewModel.loadState.observe(this, { loginState -> when (loginState) { - is LoadState.Success -> { - "登录成功".show(this) - DialogHelper.dismissLoadingDialog() + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "登录中,请稍后...") } else -> { - "登录失败,用户名或密码错误".show(this) DialogHelper.dismissLoadingDialog() } } }) } }) - authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index b0f3847..704e484 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -13,7 +13,6 @@ import com.bumptech.glide.Glide import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.HomeRecycleAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.model.LineChartEntryModel @@ -26,7 +25,10 @@ import com.google.android.material.navigation.NavigationView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState @@ -49,7 +51,7 @@ import java.util.* import kotlin.collections.ArrayList -class MainActivity : BaseActivity(), DrawerLayout.DrawerListener, +class MainActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener, NavigationView.OnNavigationItemSelectedListener { private val kTag = "MainActivity" @@ -64,7 +66,23 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = resources.getString(R.string.app_name) + + leftOptionView.setOnClickListener { + if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { + leftDrawerLayout.closeDrawer(GravityCompat.START) + } else { + leftDrawerLayout.openDrawer(GravityCompat.START) + } + } + leftDrawerLayout.addDrawerListener(this) + + rightOptionView.setOnClickListener { + navigatePageTo() + } } override fun initData() { @@ -149,18 +167,13 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) + + waterViewModel.waterStatistics() } override fun initEvent() { - leftOptionView.setOnClickListener { - if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { - leftDrawerLayout.closeDrawer(GravityCompat.START) - } else { - leftDrawerLayout.openDrawer(GravityCompat.START) - } - } - leftDrawerLayout.addDrawerListener(this) navigationView.setNavigationItemSelectedListener(this) + loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -169,11 +182,6 @@ } }) - rightOptionView.setOnClickListener { - navigatePageTo() - } - - waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index d6336d6..1ee58ff 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -14,7 +14,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.MapDeviceListModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -22,9 +21,13 @@ import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -38,7 +41,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class MapActivity : BaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class MapActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "MapActivity" @@ -70,8 +73,12 @@ override fun initLayoutView(): Int = R.layout.activity_map override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index b386373..809e6c0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,22 +5,24 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_completed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderCompletedDetailActivity : BaseActivity() { +class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -28,6 +30,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index 8653564..76f8077 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -9,41 +9,41 @@ import android.view.View import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderInHandleDetailActivity : BaseActivity() { +class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private val context: Context = this@OrderInHandleDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,6 +52,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -59,16 +62,14 @@ override fun initData() { val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!!//初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) - workOrderViewModel.obtainWorkOrderDetail(jobId) } @@ -240,7 +241,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -274,7 +275,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //处理完成工单状态处理 @@ -330,7 +338,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -393,22 +400,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index fa5a469..483307d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -3,30 +3,36 @@ import androidx.fragment.app.Fragment import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.TopViewPagerAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.fragment.OrderCompletedFragment import com.casic.qd.smartwell.fragment.OrderInHandleFragment import com.casic.qd.smartwell.fragment.OrderNotConfirmedFragment import com.casic.qd.smartwell.fragment.OrderNotProcessedFragment import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_order_management.* import java.util.* -class OrderManagementActivity : BaseActivity() { +class OrderManagementActivity : KotlinBaseActivity() { - private var fragmentList: ArrayList = ArrayList() + private var fragmentPages: ArrayList = ArrayList() init { - fragmentList.add(OrderNotProcessedFragment())//待处理 - fragmentList.add(OrderNotConfirmedFragment())//待确认 - fragmentList.add(OrderInHandleFragment())//处理中 - fragmentList.add(OrderCompletedFragment())//已完成 + fragmentPages.add(OrderNotProcessedFragment())//待处理 + fragmentPages.add(OrderNotConfirmedFragment())//待确认 + fragmentPages.add(OrderInHandleFragment())//处理中 + fragmentPages.add(OrderCompletedFragment())//已完成 } override fun initLayoutView(): Int = R.layout.activity_order_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "工单管理" rightOptionView.setOnClickListener { @@ -36,9 +42,9 @@ override fun initData() { val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentList + supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) - orderViewPager.offscreenPageLimit = fragmentList.size + orderViewPager.offscreenPageLimit = fragmentPages.size orderViewPager.adapter = topViewPagerAdapter orderTabLayout.setupWithViewPager(orderViewPager) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index 0b5e1d1..dd87a66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -8,42 +8,41 @@ import android.util.Log import android.view.View import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderNotConfirmedDetailActivity : BaseActivity() { +class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,23 +51,26 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } } override fun initData() { - jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) + workOrderViewModel.obtainWorkOrderDetail(jobId) } override fun initEvent() { @@ -93,7 +95,6 @@ } }) - workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -204,7 +205,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -238,7 +239,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //确认工单状态处理 @@ -262,6 +270,7 @@ BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(arrayListOf("拍照", "相册")) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { @@ -293,7 +302,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -356,22 +364,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index 63922a1..ac18ef0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,21 +6,24 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Poi import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WellViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderNotProcessedDetailActivity : BaseActivity() { +class OrderNotProcessedDetailActivity : KotlinBaseActivity() { private val context: Context = this@OrderNotProcessedDetailActivity private lateinit var workOrderViewModel: WorkOrderViewModel @@ -30,6 +33,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -147,12 +153,6 @@ } is LoadState.Success -> { DialogHelper.dismissLoadingDialog() - //通知列表刷新数据 -// BroadcastReceiverManager.instance.sendMultiBroadcast( -// Constant.NOT_PROCESSED_ACTION, -// Constant.NOT_CONFIRMED_ACTION, -// Constant.NOT_ACCEPT_ACTION -// ) this.finish() } else -> { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index b051c34..8b95aa8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -7,15 +7,18 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.SearchResultAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.SearchResultModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -26,7 +29,7 @@ import okhttp3.RequestBody import org.json.JSONObject -class OrderSearchResultActivity : BaseActivity() { +class OrderSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var operationViewModel: OperationViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -42,6 +45,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "查询结果" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -95,12 +101,14 @@ } }) workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt index e5c9f86..f53a0d8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt @@ -1,32 +1,46 @@ package com.casic.qd.smartwell.view -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting +import com.casic.qd.smartwell.R import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : AppCompatActivity(), PermissionCallbacks { +class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - PageNavigationManager.addActivity(this) + override fun initLayoutView(): Int = R.layout.activity_permssion + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) + } + + override fun initData() { //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - EasyPermissions.requestPermissions( - this, - "需要获取相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) + enterMainButton.setOnClickListener { + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) + } } } + override fun initEvent() { + + } + private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) @@ -36,9 +50,7 @@ } override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt index 5ce9def..edad500 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt @@ -2,21 +2,23 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder import kotlinx.android.synthetic.main.activity_alarm_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchAlarmActivity : BaseActivity() { +class SearchAlarmActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var areaViewModel: AreaViewModel @@ -27,6 +29,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "告警查询" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt index f994402..a5f6a30 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt @@ -12,7 +12,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceDataListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceDataModel @@ -20,8 +19,12 @@ import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import kotlinx.android.synthetic.main.activity_data_search.* @@ -34,7 +37,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDataActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDataActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var deviceViewModel: DeviceViewModel @@ -52,6 +55,9 @@ override fun initLayoutView(): Int = R.layout.activity_data_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "数据查询" rightOptionView.setOnClickListener { @@ -68,11 +74,12 @@ weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + //默认加载所有数据 + obtainSearchResult() } override fun initEvent() { - //默认加载所有数据 - obtainSearchResult(pageIndex) deviceViewModel.deviceDataModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -100,12 +107,14 @@ }) deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -114,12 +123,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } areaViewModel.areaModel.observe(this, { @@ -152,7 +161,7 @@ }) } - private fun obtainSearchResult(pageIndex: Int) { + private fun obtainSearchResult() { deviceViewModel.obtainDeviceData(areaId, keywords, pageIndex) } @@ -173,7 +182,7 @@ searchButton.setOnClickListener { keywords = deviceCodeView.text.toString() pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -201,7 +210,8 @@ } else { if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt index cc9cdb2..643a7e1 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt @@ -11,7 +11,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceListModel @@ -25,8 +24,12 @@ import com.casic.qd.smartwell.widgets.BottomAreaSheet import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState @@ -40,7 +43,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDeviceActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDeviceActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchDeviceViewModel: SearchResultViewModel @@ -66,6 +69,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "设备查询" rightOptionView.setOnClickListener { @@ -90,10 +96,11 @@ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + obtainSearchResult() } override fun initEvent() { - obtainSearchResult(pageIndex) searchDeviceViewModel.deviceResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -121,12 +128,14 @@ }) searchDeviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -135,12 +144,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } //数据监听 @@ -195,7 +204,7 @@ searchButton.setOnClickListener { pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -296,9 +305,9 @@ }) } - private fun obtainSearchResult(page: Int) { + private fun obtainSearchResult() { searchDeviceViewModel.obtainDeviceResult( - keywords, deviceTypeValue, deptId, deviceState, areaId, page + keywords, deviceTypeValue, deptId, deviceState, areaId, pageIndex ) } @@ -309,7 +318,8 @@ } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt index 430174b..e6e6045 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt @@ -5,23 +5,25 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AlarmContentModel import com.casic.qd.smartwell.model.OrderStatusModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.zhy.view.flowlayout.FlowLayout import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchOrderActivity : BaseActivity() { +class SearchOrderActivity : KotlinBaseActivity() { private lateinit var contentTypeViewModel: AlarmViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -37,6 +39,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单查询" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt index 3d78bfa..157c5e8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt @@ -5,17 +5,18 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.utils.WebCrawler import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -class SplashScreenActivity : BaseActivity() { +class SplashScreenActivity : KotlinBaseActivity() { private val kTag = "SplashScreenActivity" private lateinit var userDetailViewModel: UserDetailViewModel @@ -25,7 +26,7 @@ override fun initLayoutView(): Int = R.layout.activity_splash override fun setupTopBarLayout() { - + ImmersionBar.with(this).init() } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt index c87ffd2..bffa1b7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt @@ -5,7 +5,6 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -15,11 +14,11 @@ import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.BarEntry import com.github.mikephil.charting.data.PieEntry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type -import com.pengxh.kt.lite.extensions.obtainQuarterOfYear -import com.pengxh.kt.lite.extensions.timestampToDate -import com.pengxh.kt.lite.extensions.timestampToLastMonthDate -import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_statistics.* import kotlinx.android.synthetic.main.include_base_title.* import java.util.* @@ -30,7 +29,7 @@ * @date 2022/2/17 14:34 * @email 290677893@qq.com */ -class StatisticsActivity : BaseActivity() { +class StatisticsActivity : KotlinBaseActivity() { private val context: Context = this@StatisticsActivity private lateinit var waterViewModel: WaterStatisticsViewModel @@ -40,6 +39,9 @@ override fun initLayoutView(): Int = R.layout.activity_statistics override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "汇总统计" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt index 7818f8e..7e81e6c 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt @@ -5,7 +5,6 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper @@ -13,14 +12,17 @@ import com.casic.qd.smartwell.vm.WaterStatisticsViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_water_expanded.* import java.util.* import kotlin.collections.ArrayList -class WaterExpandedActivity : BaseActivity() { +class WaterExpandedActivity : KotlinBaseActivity() { private val kTag = "WaterExpandedActivity" private val context: Context = this@WaterExpandedActivity @@ -29,7 +31,8 @@ override fun initLayoutView(): Int = R.layout.activity_water_expanded override fun setupTopBarLayout() { - + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt index b22a1d9..040202a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt @@ -5,14 +5,17 @@ import android.webkit.WebView import android.widget.LinearLayout import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar import com.just.agentweb.AgentWeb import com.just.agentweb.WebViewClient +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.readAssetsFile +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_web.* -class WebsiteActivity : BaseActivity() { +class WebsiteActivity : KotlinBaseActivity() { private lateinit var agentWeb: AgentWeb private lateinit var url: String @@ -20,6 +23,9 @@ override fun initLayoutView(): Int = R.layout.activity_web override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "海洋石油工程有限公司" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt index 5347d10..69b8b35 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt @@ -3,35 +3,41 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WellViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_well_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class WellDetailActivity : BaseActivity() { +class WellDetailActivity : KotlinBaseActivity() { private lateinit var wellDetailViewModel: WellViewModel - private lateinit var wellId: String override fun initLayoutView(): Int = R.layout.activity_well_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "井详情" } override fun initData() { - wellId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val wellId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! wellDetailViewModel = ViewModelProvider(this).get(WellViewModel::class.java) + + wellDetailViewModel.obtainWellDetail(wellId) } override fun initEvent() { - wellDetailViewModel.obtainWellDetail(wellId) wellDetailViewModel.detailModel.observe(this, { if (it.code == 200) { val wellDetail = it.data!! diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt index fc78392..a512774 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt @@ -53,24 +53,12 @@ }) fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int + keywords: String, alarmType: String, areaId: String, alarmContentType: String, + beginTime: String, endTime: String, status: String, page: Int ) = launch({ val response = RetrofitServiceManager.obtainAlarmListByPage( - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - page + keywords, alarmType, areaId, alarmContentType, + beginTime, endTime, status, page ) val responseCode = response.separateResponseCode() if (responseCode == 200) { diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt index 8c13aec..3a3f38e 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt @@ -15,7 +15,6 @@ import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.BaseViewModel -import com.pengxh.kt.lite.vm.LoadState import org.json.JSONObject class AuthenticateViewModel : BaseViewModel() { @@ -25,8 +24,15 @@ val resultModel = MutableLiveData() fun obtainPublicKey() = launch({ - loadState.value = LoadState.Loading - keyModel.value = RetrofitServiceManager.authenticate() + val response = RetrofitServiceManager.authenticate() + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + keyModel.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.toErrorMessage().show(BaseApplication.obtainInstance()) + } }, { it.printStackTrace() }) diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt index 23e777e..c7f95b4 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt @@ -18,14 +18,16 @@ private val gson = Gson() val resultModel = MutableLiveData() - fun inn(sid: String, account: String, secretKey: String) = launch({ + fun enter(sid: String, account: String, secretKey: String) = launch({ + loadState.value = LoadState.Loading val response = RetrofitServiceManager.login(sid, account, secretKey) val responseCode = response.separateResponseCode() if (responseCode == 200) { - loadState.value = LoadState.Success resultModel.value = gson.fromJson( response, object : TypeToken() {}.type ) + loadState.value = LoadState.Success + "登录成功".show(BaseApplication.obtainInstance()) } else { loadState.value = LoadState.Fail response.toErrorMessage().show(BaseApplication.obtainInstance()) diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt index d50fa93..ebc951b 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt @@ -21,14 +21,8 @@ val deviceResultModel = MutableLiveData() fun obtainAlarmResult( - keywords: String?, - alarmType: String?, - areaId: String?, - alarmContentType: String?, - beginTime: String?, - endTime: String?, - status: String?, - page: Int + keywords: String?, alarmType: String?, areaId: String?, alarmContentType: String?, + beginTime: String?, endTime: String?, status: String?, page: Int ) = launch({ loadState.value = LoadState.Loading val response = RetrofitServiceManager.obtainAlarmResult( diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt index d47b96e..1a9194d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt @@ -20,6 +20,7 @@ val resultModel = MutableLiveData() fun uploadImage(image: File) = launch({ + loadState.value = LoadState.Loading val response = RetrofitServiceManager.uploadImage(image) val responseCode = response.separateResponseCode() if (responseCode == 200) { diff --git a/app/src/main/java/com/casic/qd/smartwell/widgets/DateSelectDialog.kt b/app/src/main/java/com/casic/qd/smartwell/widgets/DateSelectDialog.kt index 7e4b8e5..a7bdc5e 100644 --- a/app/src/main/java/com/casic/qd/smartwell/widgets/DateSelectDialog.kt +++ b/app/src/main/java/com/casic/qd/smartwell/widgets/DateSelectDialog.kt @@ -100,7 +100,7 @@ .setType(type) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> val textValue = if (type == Type.ALL) { - millSeconds.timestampToTime() + millSeconds.timestampToCompleteDate() } else { millSeconds.timestampToDate() } @@ -119,7 +119,7 @@ .setType(type) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> val textValue = if (type == Type.ALL) { - millSeconds.timestampToTime() + millSeconds.timestampToCompleteDate() } else { millSeconds.timestampToDate() } diff --git a/app/src/main/res/drawable/ic_add_pic.xml b/app/src/main/res/drawable/ic_add_pic.xml deleted file mode 100644 index 9d1e830..0000000 --- a/app/src/main/res/drawable/ic_add_pic.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/app/src/main/res/drawable/ic_camera.xml b/app/src/main/res/drawable/ic_camera.xml new file mode 100644 index 0000000..b612ce9 --- /dev/null +++ b/app/src/main/res/drawable/ic_camera.xml @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt deleted file mode 100644 index e016832..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.qd.smartwell.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.casic.qd.smartwell.R -import com.qmuiteam.qmui.util.QMUIDisplayHelper - - -/** - * 可删减九宫格 - * */ -@SuppressLint("NotifyDataSetChanged") -class NineGridImageAdapter(private val context: Context) : - RecyclerView.Adapter() { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 3a226ca..c67e61a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.* @@ -15,7 +14,7 @@ * PublicKey校验 */ @GET("/config/baseConfig") - suspend fun obtainPublicKey(): PublicKeyModel + suspend fun authenticate(): String /** * 登录并获取Token @@ -26,7 +25,7 @@ */ @FormUrlEncoded @POST("/user/login") - suspend fun obtainLoginResult( + suspend fun login( @Field("sid") sid: String, @Field("username") account: String, @Field("password") secretKey: String diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 8a35a50..237af66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory @@ -23,15 +22,15 @@ /** * 验证PublicKey */ - suspend fun authenticate(): PublicKeyModel { - return api.obtainPublicKey() + suspend fun authenticate(): String { + return api.authenticate() } /** * 登录并获取Token */ suspend fun login(sid: String, account: String, secretKey: String): String { - return api.obtainLoginResult(sid, account, secretKey) + return api.login(sid, account, secretKey) } /** diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 976811c..85370c5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -6,13 +6,16 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -20,7 +23,7 @@ import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmManagementActivity : BaseActivity() { +class AlarmManagementActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -35,6 +38,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "当前告警" rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index f27d4d3..f9e8fbc 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -6,14 +6,17 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.SearchResultViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -21,7 +24,7 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmSearchResultActivity : BaseActivity() { +class AlarmSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchAlarmViewModel: SearchResultViewModel @@ -38,6 +41,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "查询结果" } @@ -91,12 +97,14 @@ }) searchAlarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 597e793..40240d5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.view; import android.content.Context +import android.graphics.Color import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -9,10 +10,8 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.photoview.PhotoView -import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager @@ -20,13 +19,13 @@ import java.util.* -class BigImageActivity : BaseActivity() { +class BigImageActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_big_image override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, R.color.black.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, Color.BLACK) + leftBackView.setOnClickListener { finish() } } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 6e35c09..7660a79 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -2,22 +2,24 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.timestampToLastWeekTime import com.pengxh.kt.lite.extensions.timestampToTime +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_device_data_detail.* import kotlinx.android.synthetic.main.activity_main.rightOptionView import kotlinx.android.synthetic.main.activity_main.titleView -class DeviceDataDetailActivity : BaseActivity() { +class DeviceDataDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDataDetailActivity" private lateinit var deviceCode: String @@ -26,6 +28,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_data_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } deviceCode = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! titleView.text = String.format("${deviceCode}历史数据") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index dc5e200..e681958 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -8,20 +8,21 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.LoginViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper import kotlinx.android.synthetic.main.activity_login.* -// TODO 修改登录逻辑,参考四分公司 -class LoginActivity : BaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel @@ -48,8 +49,8 @@ override fun initLayoutView(): Int = R.layout.activity_login override fun setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this) + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) } override fun initData() { @@ -102,7 +103,7 @@ val dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!) //登录并获取Token,POST请求 - loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey) + loginViewModel.enter(it.data!!.sid!!, account, dataByPublicKey) loginViewModel.resultModel.observe(this, { loginResult -> if (loginResult.code == 200) { AuthenticationHelper.saveToken(loginResult.data!!.token!!) @@ -121,20 +122,15 @@ }) loginViewModel.loadState.observe(this, { loginState -> when (loginState) { - is LoadState.Success -> { - "登录成功".show(this) - DialogHelper.dismissLoadingDialog() + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "登录中,请稍后...") } else -> { - "登录失败,用户名或密码错误".show(this) DialogHelper.dismissLoadingDialog() } } }) } }) - authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index b0f3847..704e484 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -13,7 +13,6 @@ import com.bumptech.glide.Glide import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.HomeRecycleAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.model.LineChartEntryModel @@ -26,7 +25,10 @@ import com.google.android.material.navigation.NavigationView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState @@ -49,7 +51,7 @@ import java.util.* import kotlin.collections.ArrayList -class MainActivity : BaseActivity(), DrawerLayout.DrawerListener, +class MainActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener, NavigationView.OnNavigationItemSelectedListener { private val kTag = "MainActivity" @@ -64,7 +66,23 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = resources.getString(R.string.app_name) + + leftOptionView.setOnClickListener { + if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { + leftDrawerLayout.closeDrawer(GravityCompat.START) + } else { + leftDrawerLayout.openDrawer(GravityCompat.START) + } + } + leftDrawerLayout.addDrawerListener(this) + + rightOptionView.setOnClickListener { + navigatePageTo() + } } override fun initData() { @@ -149,18 +167,13 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) + + waterViewModel.waterStatistics() } override fun initEvent() { - leftOptionView.setOnClickListener { - if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { - leftDrawerLayout.closeDrawer(GravityCompat.START) - } else { - leftDrawerLayout.openDrawer(GravityCompat.START) - } - } - leftDrawerLayout.addDrawerListener(this) navigationView.setNavigationItemSelectedListener(this) + loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -169,11 +182,6 @@ } }) - rightOptionView.setOnClickListener { - navigatePageTo() - } - - waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index d6336d6..1ee58ff 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -14,7 +14,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.MapDeviceListModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -22,9 +21,13 @@ import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -38,7 +41,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class MapActivity : BaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class MapActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "MapActivity" @@ -70,8 +73,12 @@ override fun initLayoutView(): Int = R.layout.activity_map override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index b386373..809e6c0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,22 +5,24 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_completed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderCompletedDetailActivity : BaseActivity() { +class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -28,6 +30,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index 8653564..76f8077 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -9,41 +9,41 @@ import android.view.View import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderInHandleDetailActivity : BaseActivity() { +class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private val context: Context = this@OrderInHandleDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,6 +52,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -59,16 +62,14 @@ override fun initData() { val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!!//初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) - workOrderViewModel.obtainWorkOrderDetail(jobId) } @@ -240,7 +241,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -274,7 +275,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //处理完成工单状态处理 @@ -330,7 +338,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -393,22 +400,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index fa5a469..483307d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -3,30 +3,36 @@ import androidx.fragment.app.Fragment import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.TopViewPagerAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.fragment.OrderCompletedFragment import com.casic.qd.smartwell.fragment.OrderInHandleFragment import com.casic.qd.smartwell.fragment.OrderNotConfirmedFragment import com.casic.qd.smartwell.fragment.OrderNotProcessedFragment import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_order_management.* import java.util.* -class OrderManagementActivity : BaseActivity() { +class OrderManagementActivity : KotlinBaseActivity() { - private var fragmentList: ArrayList = ArrayList() + private var fragmentPages: ArrayList = ArrayList() init { - fragmentList.add(OrderNotProcessedFragment())//待处理 - fragmentList.add(OrderNotConfirmedFragment())//待确认 - fragmentList.add(OrderInHandleFragment())//处理中 - fragmentList.add(OrderCompletedFragment())//已完成 + fragmentPages.add(OrderNotProcessedFragment())//待处理 + fragmentPages.add(OrderNotConfirmedFragment())//待确认 + fragmentPages.add(OrderInHandleFragment())//处理中 + fragmentPages.add(OrderCompletedFragment())//已完成 } override fun initLayoutView(): Int = R.layout.activity_order_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "工单管理" rightOptionView.setOnClickListener { @@ -36,9 +42,9 @@ override fun initData() { val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentList + supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) - orderViewPager.offscreenPageLimit = fragmentList.size + orderViewPager.offscreenPageLimit = fragmentPages.size orderViewPager.adapter = topViewPagerAdapter orderTabLayout.setupWithViewPager(orderViewPager) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index 0b5e1d1..dd87a66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -8,42 +8,41 @@ import android.util.Log import android.view.View import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderNotConfirmedDetailActivity : BaseActivity() { +class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,23 +51,26 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } } override fun initData() { - jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) + workOrderViewModel.obtainWorkOrderDetail(jobId) } override fun initEvent() { @@ -93,7 +95,6 @@ } }) - workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -204,7 +205,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -238,7 +239,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //确认工单状态处理 @@ -262,6 +270,7 @@ BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(arrayListOf("拍照", "相册")) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { @@ -293,7 +302,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -356,22 +364,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index 63922a1..ac18ef0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,21 +6,24 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Poi import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WellViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderNotProcessedDetailActivity : BaseActivity() { +class OrderNotProcessedDetailActivity : KotlinBaseActivity() { private val context: Context = this@OrderNotProcessedDetailActivity private lateinit var workOrderViewModel: WorkOrderViewModel @@ -30,6 +33,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -147,12 +153,6 @@ } is LoadState.Success -> { DialogHelper.dismissLoadingDialog() - //通知列表刷新数据 -// BroadcastReceiverManager.instance.sendMultiBroadcast( -// Constant.NOT_PROCESSED_ACTION, -// Constant.NOT_CONFIRMED_ACTION, -// Constant.NOT_ACCEPT_ACTION -// ) this.finish() } else -> { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index b051c34..8b95aa8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -7,15 +7,18 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.SearchResultAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.SearchResultModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -26,7 +29,7 @@ import okhttp3.RequestBody import org.json.JSONObject -class OrderSearchResultActivity : BaseActivity() { +class OrderSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var operationViewModel: OperationViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -42,6 +45,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "查询结果" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -95,12 +101,14 @@ } }) workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt index e5c9f86..f53a0d8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt @@ -1,32 +1,46 @@ package com.casic.qd.smartwell.view -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting +import com.casic.qd.smartwell.R import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : AppCompatActivity(), PermissionCallbacks { +class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - PageNavigationManager.addActivity(this) + override fun initLayoutView(): Int = R.layout.activity_permssion + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) + } + + override fun initData() { //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - EasyPermissions.requestPermissions( - this, - "需要获取相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) + enterMainButton.setOnClickListener { + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) + } } } + override fun initEvent() { + + } + private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) @@ -36,9 +50,7 @@ } override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt index 5ce9def..edad500 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt @@ -2,21 +2,23 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder import kotlinx.android.synthetic.main.activity_alarm_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchAlarmActivity : BaseActivity() { +class SearchAlarmActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var areaViewModel: AreaViewModel @@ -27,6 +29,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "告警查询" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt index f994402..a5f6a30 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt @@ -12,7 +12,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceDataListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceDataModel @@ -20,8 +19,12 @@ import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import kotlinx.android.synthetic.main.activity_data_search.* @@ -34,7 +37,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDataActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDataActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var deviceViewModel: DeviceViewModel @@ -52,6 +55,9 @@ override fun initLayoutView(): Int = R.layout.activity_data_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "数据查询" rightOptionView.setOnClickListener { @@ -68,11 +74,12 @@ weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + //默认加载所有数据 + obtainSearchResult() } override fun initEvent() { - //默认加载所有数据 - obtainSearchResult(pageIndex) deviceViewModel.deviceDataModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -100,12 +107,14 @@ }) deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -114,12 +123,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } areaViewModel.areaModel.observe(this, { @@ -152,7 +161,7 @@ }) } - private fun obtainSearchResult(pageIndex: Int) { + private fun obtainSearchResult() { deviceViewModel.obtainDeviceData(areaId, keywords, pageIndex) } @@ -173,7 +182,7 @@ searchButton.setOnClickListener { keywords = deviceCodeView.text.toString() pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -201,7 +210,8 @@ } else { if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt index cc9cdb2..643a7e1 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt @@ -11,7 +11,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceListModel @@ -25,8 +24,12 @@ import com.casic.qd.smartwell.widgets.BottomAreaSheet import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState @@ -40,7 +43,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDeviceActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDeviceActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchDeviceViewModel: SearchResultViewModel @@ -66,6 +69,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "设备查询" rightOptionView.setOnClickListener { @@ -90,10 +96,11 @@ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + obtainSearchResult() } override fun initEvent() { - obtainSearchResult(pageIndex) searchDeviceViewModel.deviceResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -121,12 +128,14 @@ }) searchDeviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -135,12 +144,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } //数据监听 @@ -195,7 +204,7 @@ searchButton.setOnClickListener { pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -296,9 +305,9 @@ }) } - private fun obtainSearchResult(page: Int) { + private fun obtainSearchResult() { searchDeviceViewModel.obtainDeviceResult( - keywords, deviceTypeValue, deptId, deviceState, areaId, page + keywords, deviceTypeValue, deptId, deviceState, areaId, pageIndex ) } @@ -309,7 +318,8 @@ } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt index 430174b..e6e6045 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt @@ -5,23 +5,25 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AlarmContentModel import com.casic.qd.smartwell.model.OrderStatusModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.zhy.view.flowlayout.FlowLayout import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchOrderActivity : BaseActivity() { +class SearchOrderActivity : KotlinBaseActivity() { private lateinit var contentTypeViewModel: AlarmViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -37,6 +39,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单查询" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt index 3d78bfa..157c5e8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt @@ -5,17 +5,18 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.utils.WebCrawler import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -class SplashScreenActivity : BaseActivity() { +class SplashScreenActivity : KotlinBaseActivity() { private val kTag = "SplashScreenActivity" private lateinit var userDetailViewModel: UserDetailViewModel @@ -25,7 +26,7 @@ override fun initLayoutView(): Int = R.layout.activity_splash override fun setupTopBarLayout() { - + ImmersionBar.with(this).init() } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt index c87ffd2..bffa1b7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt @@ -5,7 +5,6 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -15,11 +14,11 @@ import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.BarEntry import com.github.mikephil.charting.data.PieEntry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type -import com.pengxh.kt.lite.extensions.obtainQuarterOfYear -import com.pengxh.kt.lite.extensions.timestampToDate -import com.pengxh.kt.lite.extensions.timestampToLastMonthDate -import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_statistics.* import kotlinx.android.synthetic.main.include_base_title.* import java.util.* @@ -30,7 +29,7 @@ * @date 2022/2/17 14:34 * @email 290677893@qq.com */ -class StatisticsActivity : BaseActivity() { +class StatisticsActivity : KotlinBaseActivity() { private val context: Context = this@StatisticsActivity private lateinit var waterViewModel: WaterStatisticsViewModel @@ -40,6 +39,9 @@ override fun initLayoutView(): Int = R.layout.activity_statistics override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "汇总统计" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt index 7818f8e..7e81e6c 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt @@ -5,7 +5,6 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper @@ -13,14 +12,17 @@ import com.casic.qd.smartwell.vm.WaterStatisticsViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_water_expanded.* import java.util.* import kotlin.collections.ArrayList -class WaterExpandedActivity : BaseActivity() { +class WaterExpandedActivity : KotlinBaseActivity() { private val kTag = "WaterExpandedActivity" private val context: Context = this@WaterExpandedActivity @@ -29,7 +31,8 @@ override fun initLayoutView(): Int = R.layout.activity_water_expanded override fun setupTopBarLayout() { - + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt index b22a1d9..040202a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt @@ -5,14 +5,17 @@ import android.webkit.WebView import android.widget.LinearLayout import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar import com.just.agentweb.AgentWeb import com.just.agentweb.WebViewClient +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.readAssetsFile +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_web.* -class WebsiteActivity : BaseActivity() { +class WebsiteActivity : KotlinBaseActivity() { private lateinit var agentWeb: AgentWeb private lateinit var url: String @@ -20,6 +23,9 @@ override fun initLayoutView(): Int = R.layout.activity_web override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "海洋石油工程有限公司" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt index 5347d10..69b8b35 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt @@ -3,35 +3,41 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WellViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_well_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class WellDetailActivity : BaseActivity() { +class WellDetailActivity : KotlinBaseActivity() { private lateinit var wellDetailViewModel: WellViewModel - private lateinit var wellId: String override fun initLayoutView(): Int = R.layout.activity_well_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "井详情" } override fun initData() { - wellId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val wellId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! wellDetailViewModel = ViewModelProvider(this).get(WellViewModel::class.java) + + wellDetailViewModel.obtainWellDetail(wellId) } override fun initEvent() { - wellDetailViewModel.obtainWellDetail(wellId) wellDetailViewModel.detailModel.observe(this, { if (it.code == 200) { val wellDetail = it.data!! diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt index fc78392..a512774 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt @@ -53,24 +53,12 @@ }) fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int + keywords: String, alarmType: String, areaId: String, alarmContentType: String, + beginTime: String, endTime: String, status: String, page: Int ) = launch({ val response = RetrofitServiceManager.obtainAlarmListByPage( - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - page + keywords, alarmType, areaId, alarmContentType, + beginTime, endTime, status, page ) val responseCode = response.separateResponseCode() if (responseCode == 200) { diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt index 8c13aec..3a3f38e 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt @@ -15,7 +15,6 @@ import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.BaseViewModel -import com.pengxh.kt.lite.vm.LoadState import org.json.JSONObject class AuthenticateViewModel : BaseViewModel() { @@ -25,8 +24,15 @@ val resultModel = MutableLiveData() fun obtainPublicKey() = launch({ - loadState.value = LoadState.Loading - keyModel.value = RetrofitServiceManager.authenticate() + val response = RetrofitServiceManager.authenticate() + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + keyModel.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.toErrorMessage().show(BaseApplication.obtainInstance()) + } }, { it.printStackTrace() }) diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt index 23e777e..c7f95b4 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt @@ -18,14 +18,16 @@ private val gson = Gson() val resultModel = MutableLiveData() - fun inn(sid: String, account: String, secretKey: String) = launch({ + fun enter(sid: String, account: String, secretKey: String) = launch({ + loadState.value = LoadState.Loading val response = RetrofitServiceManager.login(sid, account, secretKey) val responseCode = response.separateResponseCode() if (responseCode == 200) { - loadState.value = LoadState.Success resultModel.value = gson.fromJson( response, object : TypeToken() {}.type ) + loadState.value = LoadState.Success + "登录成功".show(BaseApplication.obtainInstance()) } else { loadState.value = LoadState.Fail response.toErrorMessage().show(BaseApplication.obtainInstance()) diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt index d50fa93..ebc951b 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt @@ -21,14 +21,8 @@ val deviceResultModel = MutableLiveData() fun obtainAlarmResult( - keywords: String?, - alarmType: String?, - areaId: String?, - alarmContentType: String?, - beginTime: String?, - endTime: String?, - status: String?, - page: Int + keywords: String?, alarmType: String?, areaId: String?, alarmContentType: String?, + beginTime: String?, endTime: String?, status: String?, page: Int ) = launch({ loadState.value = LoadState.Loading val response = RetrofitServiceManager.obtainAlarmResult( diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt index d47b96e..1a9194d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt @@ -20,6 +20,7 @@ val resultModel = MutableLiveData() fun uploadImage(image: File) = launch({ + loadState.value = LoadState.Loading val response = RetrofitServiceManager.uploadImage(image) val responseCode = response.separateResponseCode() if (responseCode == 200) { diff --git a/app/src/main/java/com/casic/qd/smartwell/widgets/DateSelectDialog.kt b/app/src/main/java/com/casic/qd/smartwell/widgets/DateSelectDialog.kt index 7e4b8e5..a7bdc5e 100644 --- a/app/src/main/java/com/casic/qd/smartwell/widgets/DateSelectDialog.kt +++ b/app/src/main/java/com/casic/qd/smartwell/widgets/DateSelectDialog.kt @@ -100,7 +100,7 @@ .setType(type) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> val textValue = if (type == Type.ALL) { - millSeconds.timestampToTime() + millSeconds.timestampToCompleteDate() } else { millSeconds.timestampToDate() } @@ -119,7 +119,7 @@ .setType(type) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> val textValue = if (type == Type.ALL) { - millSeconds.timestampToTime() + millSeconds.timestampToCompleteDate() } else { millSeconds.timestampToDate() } diff --git a/app/src/main/res/drawable/ic_add_pic.xml b/app/src/main/res/drawable/ic_add_pic.xml deleted file mode 100644 index 9d1e830..0000000 --- a/app/src/main/res/drawable/ic_add_pic.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/app/src/main/res/drawable/ic_camera.xml b/app/src/main/res/drawable/ic_camera.xml new file mode 100644 index 0000000..b612ce9 --- /dev/null +++ b/app/src/main/res/drawable/ic_camera.xml @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_device.xml b/app/src/main/res/drawable/ic_device.xml new file mode 100644 index 0000000..831c4c4 --- /dev/null +++ b/app/src/main/res/drawable/ic_device.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt deleted file mode 100644 index e016832..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.qd.smartwell.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.casic.qd.smartwell.R -import com.qmuiteam.qmui.util.QMUIDisplayHelper - - -/** - * 可删减九宫格 - * */ -@SuppressLint("NotifyDataSetChanged") -class NineGridImageAdapter(private val context: Context) : - RecyclerView.Adapter() { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 3a226ca..c67e61a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.* @@ -15,7 +14,7 @@ * PublicKey校验 */ @GET("/config/baseConfig") - suspend fun obtainPublicKey(): PublicKeyModel + suspend fun authenticate(): String /** * 登录并获取Token @@ -26,7 +25,7 @@ */ @FormUrlEncoded @POST("/user/login") - suspend fun obtainLoginResult( + suspend fun login( @Field("sid") sid: String, @Field("username") account: String, @Field("password") secretKey: String diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 8a35a50..237af66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory @@ -23,15 +22,15 @@ /** * 验证PublicKey */ - suspend fun authenticate(): PublicKeyModel { - return api.obtainPublicKey() + suspend fun authenticate(): String { + return api.authenticate() } /** * 登录并获取Token */ suspend fun login(sid: String, account: String, secretKey: String): String { - return api.obtainLoginResult(sid, account, secretKey) + return api.login(sid, account, secretKey) } /** diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 976811c..85370c5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -6,13 +6,16 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -20,7 +23,7 @@ import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmManagementActivity : BaseActivity() { +class AlarmManagementActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -35,6 +38,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "当前告警" rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index f27d4d3..f9e8fbc 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -6,14 +6,17 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.SearchResultViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -21,7 +24,7 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmSearchResultActivity : BaseActivity() { +class AlarmSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchAlarmViewModel: SearchResultViewModel @@ -38,6 +41,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "查询结果" } @@ -91,12 +97,14 @@ }) searchAlarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 597e793..40240d5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.view; import android.content.Context +import android.graphics.Color import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -9,10 +10,8 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.photoview.PhotoView -import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager @@ -20,13 +19,13 @@ import java.util.* -class BigImageActivity : BaseActivity() { +class BigImageActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_big_image override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, R.color.black.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, Color.BLACK) + leftBackView.setOnClickListener { finish() } } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 6e35c09..7660a79 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -2,22 +2,24 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.timestampToLastWeekTime import com.pengxh.kt.lite.extensions.timestampToTime +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_device_data_detail.* import kotlinx.android.synthetic.main.activity_main.rightOptionView import kotlinx.android.synthetic.main.activity_main.titleView -class DeviceDataDetailActivity : BaseActivity() { +class DeviceDataDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDataDetailActivity" private lateinit var deviceCode: String @@ -26,6 +28,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_data_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } deviceCode = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! titleView.text = String.format("${deviceCode}历史数据") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index dc5e200..e681958 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -8,20 +8,21 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.LoginViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper import kotlinx.android.synthetic.main.activity_login.* -// TODO 修改登录逻辑,参考四分公司 -class LoginActivity : BaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel @@ -48,8 +49,8 @@ override fun initLayoutView(): Int = R.layout.activity_login override fun setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this) + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) } override fun initData() { @@ -102,7 +103,7 @@ val dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!) //登录并获取Token,POST请求 - loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey) + loginViewModel.enter(it.data!!.sid!!, account, dataByPublicKey) loginViewModel.resultModel.observe(this, { loginResult -> if (loginResult.code == 200) { AuthenticationHelper.saveToken(loginResult.data!!.token!!) @@ -121,20 +122,15 @@ }) loginViewModel.loadState.observe(this, { loginState -> when (loginState) { - is LoadState.Success -> { - "登录成功".show(this) - DialogHelper.dismissLoadingDialog() + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "登录中,请稍后...") } else -> { - "登录失败,用户名或密码错误".show(this) DialogHelper.dismissLoadingDialog() } } }) } }) - authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index b0f3847..704e484 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -13,7 +13,6 @@ import com.bumptech.glide.Glide import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.HomeRecycleAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.model.LineChartEntryModel @@ -26,7 +25,10 @@ import com.google.android.material.navigation.NavigationView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState @@ -49,7 +51,7 @@ import java.util.* import kotlin.collections.ArrayList -class MainActivity : BaseActivity(), DrawerLayout.DrawerListener, +class MainActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener, NavigationView.OnNavigationItemSelectedListener { private val kTag = "MainActivity" @@ -64,7 +66,23 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = resources.getString(R.string.app_name) + + leftOptionView.setOnClickListener { + if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { + leftDrawerLayout.closeDrawer(GravityCompat.START) + } else { + leftDrawerLayout.openDrawer(GravityCompat.START) + } + } + leftDrawerLayout.addDrawerListener(this) + + rightOptionView.setOnClickListener { + navigatePageTo() + } } override fun initData() { @@ -149,18 +167,13 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) + + waterViewModel.waterStatistics() } override fun initEvent() { - leftOptionView.setOnClickListener { - if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { - leftDrawerLayout.closeDrawer(GravityCompat.START) - } else { - leftDrawerLayout.openDrawer(GravityCompat.START) - } - } - leftDrawerLayout.addDrawerListener(this) navigationView.setNavigationItemSelectedListener(this) + loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -169,11 +182,6 @@ } }) - rightOptionView.setOnClickListener { - navigatePageTo() - } - - waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index d6336d6..1ee58ff 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -14,7 +14,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.MapDeviceListModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -22,9 +21,13 @@ import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -38,7 +41,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class MapActivity : BaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class MapActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "MapActivity" @@ -70,8 +73,12 @@ override fun initLayoutView(): Int = R.layout.activity_map override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index b386373..809e6c0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,22 +5,24 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_completed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderCompletedDetailActivity : BaseActivity() { +class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -28,6 +30,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index 8653564..76f8077 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -9,41 +9,41 @@ import android.view.View import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderInHandleDetailActivity : BaseActivity() { +class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private val context: Context = this@OrderInHandleDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,6 +52,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -59,16 +62,14 @@ override fun initData() { val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!!//初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) - workOrderViewModel.obtainWorkOrderDetail(jobId) } @@ -240,7 +241,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -274,7 +275,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //处理完成工单状态处理 @@ -330,7 +338,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -393,22 +400,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index fa5a469..483307d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -3,30 +3,36 @@ import androidx.fragment.app.Fragment import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.TopViewPagerAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.fragment.OrderCompletedFragment import com.casic.qd.smartwell.fragment.OrderInHandleFragment import com.casic.qd.smartwell.fragment.OrderNotConfirmedFragment import com.casic.qd.smartwell.fragment.OrderNotProcessedFragment import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_order_management.* import java.util.* -class OrderManagementActivity : BaseActivity() { +class OrderManagementActivity : KotlinBaseActivity() { - private var fragmentList: ArrayList = ArrayList() + private var fragmentPages: ArrayList = ArrayList() init { - fragmentList.add(OrderNotProcessedFragment())//待处理 - fragmentList.add(OrderNotConfirmedFragment())//待确认 - fragmentList.add(OrderInHandleFragment())//处理中 - fragmentList.add(OrderCompletedFragment())//已完成 + fragmentPages.add(OrderNotProcessedFragment())//待处理 + fragmentPages.add(OrderNotConfirmedFragment())//待确认 + fragmentPages.add(OrderInHandleFragment())//处理中 + fragmentPages.add(OrderCompletedFragment())//已完成 } override fun initLayoutView(): Int = R.layout.activity_order_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "工单管理" rightOptionView.setOnClickListener { @@ -36,9 +42,9 @@ override fun initData() { val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentList + supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) - orderViewPager.offscreenPageLimit = fragmentList.size + orderViewPager.offscreenPageLimit = fragmentPages.size orderViewPager.adapter = topViewPagerAdapter orderTabLayout.setupWithViewPager(orderViewPager) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index 0b5e1d1..dd87a66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -8,42 +8,41 @@ import android.util.Log import android.view.View import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderNotConfirmedDetailActivity : BaseActivity() { +class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,23 +51,26 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } } override fun initData() { - jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) + workOrderViewModel.obtainWorkOrderDetail(jobId) } override fun initEvent() { @@ -93,7 +95,6 @@ } }) - workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -204,7 +205,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -238,7 +239,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //确认工单状态处理 @@ -262,6 +270,7 @@ BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(arrayListOf("拍照", "相册")) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { @@ -293,7 +302,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -356,22 +364,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index 63922a1..ac18ef0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,21 +6,24 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Poi import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WellViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderNotProcessedDetailActivity : BaseActivity() { +class OrderNotProcessedDetailActivity : KotlinBaseActivity() { private val context: Context = this@OrderNotProcessedDetailActivity private lateinit var workOrderViewModel: WorkOrderViewModel @@ -30,6 +33,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -147,12 +153,6 @@ } is LoadState.Success -> { DialogHelper.dismissLoadingDialog() - //通知列表刷新数据 -// BroadcastReceiverManager.instance.sendMultiBroadcast( -// Constant.NOT_PROCESSED_ACTION, -// Constant.NOT_CONFIRMED_ACTION, -// Constant.NOT_ACCEPT_ACTION -// ) this.finish() } else -> { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index b051c34..8b95aa8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -7,15 +7,18 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.SearchResultAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.SearchResultModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -26,7 +29,7 @@ import okhttp3.RequestBody import org.json.JSONObject -class OrderSearchResultActivity : BaseActivity() { +class OrderSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var operationViewModel: OperationViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -42,6 +45,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "查询结果" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -95,12 +101,14 @@ } }) workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt index e5c9f86..f53a0d8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt @@ -1,32 +1,46 @@ package com.casic.qd.smartwell.view -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting +import com.casic.qd.smartwell.R import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : AppCompatActivity(), PermissionCallbacks { +class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - PageNavigationManager.addActivity(this) + override fun initLayoutView(): Int = R.layout.activity_permssion + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) + } + + override fun initData() { //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - EasyPermissions.requestPermissions( - this, - "需要获取相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) + enterMainButton.setOnClickListener { + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) + } } } + override fun initEvent() { + + } + private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) @@ -36,9 +50,7 @@ } override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt index 5ce9def..edad500 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt @@ -2,21 +2,23 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder import kotlinx.android.synthetic.main.activity_alarm_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchAlarmActivity : BaseActivity() { +class SearchAlarmActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var areaViewModel: AreaViewModel @@ -27,6 +29,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "告警查询" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt index f994402..a5f6a30 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt @@ -12,7 +12,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceDataListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceDataModel @@ -20,8 +19,12 @@ import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import kotlinx.android.synthetic.main.activity_data_search.* @@ -34,7 +37,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDataActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDataActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var deviceViewModel: DeviceViewModel @@ -52,6 +55,9 @@ override fun initLayoutView(): Int = R.layout.activity_data_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "数据查询" rightOptionView.setOnClickListener { @@ -68,11 +74,12 @@ weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + //默认加载所有数据 + obtainSearchResult() } override fun initEvent() { - //默认加载所有数据 - obtainSearchResult(pageIndex) deviceViewModel.deviceDataModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -100,12 +107,14 @@ }) deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -114,12 +123,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } areaViewModel.areaModel.observe(this, { @@ -152,7 +161,7 @@ }) } - private fun obtainSearchResult(pageIndex: Int) { + private fun obtainSearchResult() { deviceViewModel.obtainDeviceData(areaId, keywords, pageIndex) } @@ -173,7 +182,7 @@ searchButton.setOnClickListener { keywords = deviceCodeView.text.toString() pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -201,7 +210,8 @@ } else { if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt index cc9cdb2..643a7e1 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt @@ -11,7 +11,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceListModel @@ -25,8 +24,12 @@ import com.casic.qd.smartwell.widgets.BottomAreaSheet import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState @@ -40,7 +43,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDeviceActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDeviceActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchDeviceViewModel: SearchResultViewModel @@ -66,6 +69,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "设备查询" rightOptionView.setOnClickListener { @@ -90,10 +96,11 @@ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + obtainSearchResult() } override fun initEvent() { - obtainSearchResult(pageIndex) searchDeviceViewModel.deviceResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -121,12 +128,14 @@ }) searchDeviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -135,12 +144,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } //数据监听 @@ -195,7 +204,7 @@ searchButton.setOnClickListener { pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -296,9 +305,9 @@ }) } - private fun obtainSearchResult(page: Int) { + private fun obtainSearchResult() { searchDeviceViewModel.obtainDeviceResult( - keywords, deviceTypeValue, deptId, deviceState, areaId, page + keywords, deviceTypeValue, deptId, deviceState, areaId, pageIndex ) } @@ -309,7 +318,8 @@ } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt index 430174b..e6e6045 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt @@ -5,23 +5,25 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AlarmContentModel import com.casic.qd.smartwell.model.OrderStatusModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.zhy.view.flowlayout.FlowLayout import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchOrderActivity : BaseActivity() { +class SearchOrderActivity : KotlinBaseActivity() { private lateinit var contentTypeViewModel: AlarmViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -37,6 +39,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单查询" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt index 3d78bfa..157c5e8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt @@ -5,17 +5,18 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.utils.WebCrawler import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -class SplashScreenActivity : BaseActivity() { +class SplashScreenActivity : KotlinBaseActivity() { private val kTag = "SplashScreenActivity" private lateinit var userDetailViewModel: UserDetailViewModel @@ -25,7 +26,7 @@ override fun initLayoutView(): Int = R.layout.activity_splash override fun setupTopBarLayout() { - + ImmersionBar.with(this).init() } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt index c87ffd2..bffa1b7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt @@ -5,7 +5,6 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -15,11 +14,11 @@ import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.BarEntry import com.github.mikephil.charting.data.PieEntry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type -import com.pengxh.kt.lite.extensions.obtainQuarterOfYear -import com.pengxh.kt.lite.extensions.timestampToDate -import com.pengxh.kt.lite.extensions.timestampToLastMonthDate -import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_statistics.* import kotlinx.android.synthetic.main.include_base_title.* import java.util.* @@ -30,7 +29,7 @@ * @date 2022/2/17 14:34 * @email 290677893@qq.com */ -class StatisticsActivity : BaseActivity() { +class StatisticsActivity : KotlinBaseActivity() { private val context: Context = this@StatisticsActivity private lateinit var waterViewModel: WaterStatisticsViewModel @@ -40,6 +39,9 @@ override fun initLayoutView(): Int = R.layout.activity_statistics override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "汇总统计" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt index 7818f8e..7e81e6c 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt @@ -5,7 +5,6 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper @@ -13,14 +12,17 @@ import com.casic.qd.smartwell.vm.WaterStatisticsViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_water_expanded.* import java.util.* import kotlin.collections.ArrayList -class WaterExpandedActivity : BaseActivity() { +class WaterExpandedActivity : KotlinBaseActivity() { private val kTag = "WaterExpandedActivity" private val context: Context = this@WaterExpandedActivity @@ -29,7 +31,8 @@ override fun initLayoutView(): Int = R.layout.activity_water_expanded override fun setupTopBarLayout() { - + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt index b22a1d9..040202a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt @@ -5,14 +5,17 @@ import android.webkit.WebView import android.widget.LinearLayout import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar import com.just.agentweb.AgentWeb import com.just.agentweb.WebViewClient +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.readAssetsFile +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_web.* -class WebsiteActivity : BaseActivity() { +class WebsiteActivity : KotlinBaseActivity() { private lateinit var agentWeb: AgentWeb private lateinit var url: String @@ -20,6 +23,9 @@ override fun initLayoutView(): Int = R.layout.activity_web override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "海洋石油工程有限公司" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt index 5347d10..69b8b35 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt @@ -3,35 +3,41 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WellViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_well_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class WellDetailActivity : BaseActivity() { +class WellDetailActivity : KotlinBaseActivity() { private lateinit var wellDetailViewModel: WellViewModel - private lateinit var wellId: String override fun initLayoutView(): Int = R.layout.activity_well_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "井详情" } override fun initData() { - wellId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val wellId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! wellDetailViewModel = ViewModelProvider(this).get(WellViewModel::class.java) + + wellDetailViewModel.obtainWellDetail(wellId) } override fun initEvent() { - wellDetailViewModel.obtainWellDetail(wellId) wellDetailViewModel.detailModel.observe(this, { if (it.code == 200) { val wellDetail = it.data!! diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt index fc78392..a512774 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt @@ -53,24 +53,12 @@ }) fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int + keywords: String, alarmType: String, areaId: String, alarmContentType: String, + beginTime: String, endTime: String, status: String, page: Int ) = launch({ val response = RetrofitServiceManager.obtainAlarmListByPage( - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - page + keywords, alarmType, areaId, alarmContentType, + beginTime, endTime, status, page ) val responseCode = response.separateResponseCode() if (responseCode == 200) { diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt index 8c13aec..3a3f38e 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt @@ -15,7 +15,6 @@ import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.BaseViewModel -import com.pengxh.kt.lite.vm.LoadState import org.json.JSONObject class AuthenticateViewModel : BaseViewModel() { @@ -25,8 +24,15 @@ val resultModel = MutableLiveData() fun obtainPublicKey() = launch({ - loadState.value = LoadState.Loading - keyModel.value = RetrofitServiceManager.authenticate() + val response = RetrofitServiceManager.authenticate() + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + keyModel.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.toErrorMessage().show(BaseApplication.obtainInstance()) + } }, { it.printStackTrace() }) diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt index 23e777e..c7f95b4 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt @@ -18,14 +18,16 @@ private val gson = Gson() val resultModel = MutableLiveData() - fun inn(sid: String, account: String, secretKey: String) = launch({ + fun enter(sid: String, account: String, secretKey: String) = launch({ + loadState.value = LoadState.Loading val response = RetrofitServiceManager.login(sid, account, secretKey) val responseCode = response.separateResponseCode() if (responseCode == 200) { - loadState.value = LoadState.Success resultModel.value = gson.fromJson( response, object : TypeToken() {}.type ) + loadState.value = LoadState.Success + "登录成功".show(BaseApplication.obtainInstance()) } else { loadState.value = LoadState.Fail response.toErrorMessage().show(BaseApplication.obtainInstance()) diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt index d50fa93..ebc951b 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt @@ -21,14 +21,8 @@ val deviceResultModel = MutableLiveData() fun obtainAlarmResult( - keywords: String?, - alarmType: String?, - areaId: String?, - alarmContentType: String?, - beginTime: String?, - endTime: String?, - status: String?, - page: Int + keywords: String?, alarmType: String?, areaId: String?, alarmContentType: String?, + beginTime: String?, endTime: String?, status: String?, page: Int ) = launch({ loadState.value = LoadState.Loading val response = RetrofitServiceManager.obtainAlarmResult( diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt index d47b96e..1a9194d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt @@ -20,6 +20,7 @@ val resultModel = MutableLiveData() fun uploadImage(image: File) = launch({ + loadState.value = LoadState.Loading val response = RetrofitServiceManager.uploadImage(image) val responseCode = response.separateResponseCode() if (responseCode == 200) { diff --git a/app/src/main/java/com/casic/qd/smartwell/widgets/DateSelectDialog.kt b/app/src/main/java/com/casic/qd/smartwell/widgets/DateSelectDialog.kt index 7e4b8e5..a7bdc5e 100644 --- a/app/src/main/java/com/casic/qd/smartwell/widgets/DateSelectDialog.kt +++ b/app/src/main/java/com/casic/qd/smartwell/widgets/DateSelectDialog.kt @@ -100,7 +100,7 @@ .setType(type) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> val textValue = if (type == Type.ALL) { - millSeconds.timestampToTime() + millSeconds.timestampToCompleteDate() } else { millSeconds.timestampToDate() } @@ -119,7 +119,7 @@ .setType(type) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> val textValue = if (type == Type.ALL) { - millSeconds.timestampToTime() + millSeconds.timestampToCompleteDate() } else { millSeconds.timestampToDate() } diff --git a/app/src/main/res/drawable/ic_add_pic.xml b/app/src/main/res/drawable/ic_add_pic.xml deleted file mode 100644 index 9d1e830..0000000 --- a/app/src/main/res/drawable/ic_add_pic.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/app/src/main/res/drawable/ic_camera.xml b/app/src/main/res/drawable/ic_camera.xml new file mode 100644 index 0000000..b612ce9 --- /dev/null +++ b/app/src/main/res/drawable/ic_camera.xml @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_device.xml b/app/src/main/res/drawable/ic_device.xml new file mode 100644 index 0000000..831c4c4 --- /dev/null +++ b/app/src/main/res/drawable/ic_device.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_location.xml b/app/src/main/res/drawable/ic_location.xml new file mode 100644 index 0000000..52e376f --- /dev/null +++ b/app/src/main/res/drawable/ic_location.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt deleted file mode 100644 index e016832..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.qd.smartwell.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.casic.qd.smartwell.R -import com.qmuiteam.qmui.util.QMUIDisplayHelper - - -/** - * 可删减九宫格 - * */ -@SuppressLint("NotifyDataSetChanged") -class NineGridImageAdapter(private val context: Context) : - RecyclerView.Adapter() { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 3a226ca..c67e61a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.* @@ -15,7 +14,7 @@ * PublicKey校验 */ @GET("/config/baseConfig") - suspend fun obtainPublicKey(): PublicKeyModel + suspend fun authenticate(): String /** * 登录并获取Token @@ -26,7 +25,7 @@ */ @FormUrlEncoded @POST("/user/login") - suspend fun obtainLoginResult( + suspend fun login( @Field("sid") sid: String, @Field("username") account: String, @Field("password") secretKey: String diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 8a35a50..237af66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory @@ -23,15 +22,15 @@ /** * 验证PublicKey */ - suspend fun authenticate(): PublicKeyModel { - return api.obtainPublicKey() + suspend fun authenticate(): String { + return api.authenticate() } /** * 登录并获取Token */ suspend fun login(sid: String, account: String, secretKey: String): String { - return api.obtainLoginResult(sid, account, secretKey) + return api.login(sid, account, secretKey) } /** diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 976811c..85370c5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -6,13 +6,16 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -20,7 +23,7 @@ import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmManagementActivity : BaseActivity() { +class AlarmManagementActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -35,6 +38,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "当前告警" rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index f27d4d3..f9e8fbc 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -6,14 +6,17 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.SearchResultViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -21,7 +24,7 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmSearchResultActivity : BaseActivity() { +class AlarmSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchAlarmViewModel: SearchResultViewModel @@ -38,6 +41,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "查询结果" } @@ -91,12 +97,14 @@ }) searchAlarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 597e793..40240d5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.view; import android.content.Context +import android.graphics.Color import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -9,10 +10,8 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.photoview.PhotoView -import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager @@ -20,13 +19,13 @@ import java.util.* -class BigImageActivity : BaseActivity() { +class BigImageActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_big_image override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, R.color.black.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, Color.BLACK) + leftBackView.setOnClickListener { finish() } } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 6e35c09..7660a79 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -2,22 +2,24 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.timestampToLastWeekTime import com.pengxh.kt.lite.extensions.timestampToTime +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_device_data_detail.* import kotlinx.android.synthetic.main.activity_main.rightOptionView import kotlinx.android.synthetic.main.activity_main.titleView -class DeviceDataDetailActivity : BaseActivity() { +class DeviceDataDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDataDetailActivity" private lateinit var deviceCode: String @@ -26,6 +28,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_data_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } deviceCode = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! titleView.text = String.format("${deviceCode}历史数据") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index dc5e200..e681958 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -8,20 +8,21 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.LoginViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper import kotlinx.android.synthetic.main.activity_login.* -// TODO 修改登录逻辑,参考四分公司 -class LoginActivity : BaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel @@ -48,8 +49,8 @@ override fun initLayoutView(): Int = R.layout.activity_login override fun setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this) + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) } override fun initData() { @@ -102,7 +103,7 @@ val dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!) //登录并获取Token,POST请求 - loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey) + loginViewModel.enter(it.data!!.sid!!, account, dataByPublicKey) loginViewModel.resultModel.observe(this, { loginResult -> if (loginResult.code == 200) { AuthenticationHelper.saveToken(loginResult.data!!.token!!) @@ -121,20 +122,15 @@ }) loginViewModel.loadState.observe(this, { loginState -> when (loginState) { - is LoadState.Success -> { - "登录成功".show(this) - DialogHelper.dismissLoadingDialog() + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "登录中,请稍后...") } else -> { - "登录失败,用户名或密码错误".show(this) DialogHelper.dismissLoadingDialog() } } }) } }) - authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index b0f3847..704e484 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -13,7 +13,6 @@ import com.bumptech.glide.Glide import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.HomeRecycleAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.model.LineChartEntryModel @@ -26,7 +25,10 @@ import com.google.android.material.navigation.NavigationView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState @@ -49,7 +51,7 @@ import java.util.* import kotlin.collections.ArrayList -class MainActivity : BaseActivity(), DrawerLayout.DrawerListener, +class MainActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener, NavigationView.OnNavigationItemSelectedListener { private val kTag = "MainActivity" @@ -64,7 +66,23 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = resources.getString(R.string.app_name) + + leftOptionView.setOnClickListener { + if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { + leftDrawerLayout.closeDrawer(GravityCompat.START) + } else { + leftDrawerLayout.openDrawer(GravityCompat.START) + } + } + leftDrawerLayout.addDrawerListener(this) + + rightOptionView.setOnClickListener { + navigatePageTo() + } } override fun initData() { @@ -149,18 +167,13 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) + + waterViewModel.waterStatistics() } override fun initEvent() { - leftOptionView.setOnClickListener { - if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { - leftDrawerLayout.closeDrawer(GravityCompat.START) - } else { - leftDrawerLayout.openDrawer(GravityCompat.START) - } - } - leftDrawerLayout.addDrawerListener(this) navigationView.setNavigationItemSelectedListener(this) + loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -169,11 +182,6 @@ } }) - rightOptionView.setOnClickListener { - navigatePageTo() - } - - waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index d6336d6..1ee58ff 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -14,7 +14,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.MapDeviceListModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -22,9 +21,13 @@ import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -38,7 +41,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class MapActivity : BaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class MapActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "MapActivity" @@ -70,8 +73,12 @@ override fun initLayoutView(): Int = R.layout.activity_map override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index b386373..809e6c0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,22 +5,24 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_completed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderCompletedDetailActivity : BaseActivity() { +class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -28,6 +30,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index 8653564..76f8077 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -9,41 +9,41 @@ import android.view.View import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderInHandleDetailActivity : BaseActivity() { +class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private val context: Context = this@OrderInHandleDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,6 +52,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -59,16 +62,14 @@ override fun initData() { val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!!//初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) - workOrderViewModel.obtainWorkOrderDetail(jobId) } @@ -240,7 +241,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -274,7 +275,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //处理完成工单状态处理 @@ -330,7 +338,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -393,22 +400,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index fa5a469..483307d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -3,30 +3,36 @@ import androidx.fragment.app.Fragment import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.TopViewPagerAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.fragment.OrderCompletedFragment import com.casic.qd.smartwell.fragment.OrderInHandleFragment import com.casic.qd.smartwell.fragment.OrderNotConfirmedFragment import com.casic.qd.smartwell.fragment.OrderNotProcessedFragment import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_order_management.* import java.util.* -class OrderManagementActivity : BaseActivity() { +class OrderManagementActivity : KotlinBaseActivity() { - private var fragmentList: ArrayList = ArrayList() + private var fragmentPages: ArrayList = ArrayList() init { - fragmentList.add(OrderNotProcessedFragment())//待处理 - fragmentList.add(OrderNotConfirmedFragment())//待确认 - fragmentList.add(OrderInHandleFragment())//处理中 - fragmentList.add(OrderCompletedFragment())//已完成 + fragmentPages.add(OrderNotProcessedFragment())//待处理 + fragmentPages.add(OrderNotConfirmedFragment())//待确认 + fragmentPages.add(OrderInHandleFragment())//处理中 + fragmentPages.add(OrderCompletedFragment())//已完成 } override fun initLayoutView(): Int = R.layout.activity_order_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "工单管理" rightOptionView.setOnClickListener { @@ -36,9 +42,9 @@ override fun initData() { val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentList + supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) - orderViewPager.offscreenPageLimit = fragmentList.size + orderViewPager.offscreenPageLimit = fragmentPages.size orderViewPager.adapter = topViewPagerAdapter orderTabLayout.setupWithViewPager(orderViewPager) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index 0b5e1d1..dd87a66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -8,42 +8,41 @@ import android.util.Log import android.view.View import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderNotConfirmedDetailActivity : BaseActivity() { +class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,23 +51,26 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } } override fun initData() { - jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) + workOrderViewModel.obtainWorkOrderDetail(jobId) } override fun initEvent() { @@ -93,7 +95,6 @@ } }) - workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -204,7 +205,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -238,7 +239,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //确认工单状态处理 @@ -262,6 +270,7 @@ BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(arrayListOf("拍照", "相册")) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { @@ -293,7 +302,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -356,22 +364,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index 63922a1..ac18ef0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,21 +6,24 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Poi import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WellViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderNotProcessedDetailActivity : BaseActivity() { +class OrderNotProcessedDetailActivity : KotlinBaseActivity() { private val context: Context = this@OrderNotProcessedDetailActivity private lateinit var workOrderViewModel: WorkOrderViewModel @@ -30,6 +33,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -147,12 +153,6 @@ } is LoadState.Success -> { DialogHelper.dismissLoadingDialog() - //通知列表刷新数据 -// BroadcastReceiverManager.instance.sendMultiBroadcast( -// Constant.NOT_PROCESSED_ACTION, -// Constant.NOT_CONFIRMED_ACTION, -// Constant.NOT_ACCEPT_ACTION -// ) this.finish() } else -> { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index b051c34..8b95aa8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -7,15 +7,18 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.SearchResultAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.SearchResultModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -26,7 +29,7 @@ import okhttp3.RequestBody import org.json.JSONObject -class OrderSearchResultActivity : BaseActivity() { +class OrderSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var operationViewModel: OperationViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -42,6 +45,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "查询结果" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -95,12 +101,14 @@ } }) workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt index e5c9f86..f53a0d8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt @@ -1,32 +1,46 @@ package com.casic.qd.smartwell.view -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting +import com.casic.qd.smartwell.R import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : AppCompatActivity(), PermissionCallbacks { +class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - PageNavigationManager.addActivity(this) + override fun initLayoutView(): Int = R.layout.activity_permssion + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) + } + + override fun initData() { //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - EasyPermissions.requestPermissions( - this, - "需要获取相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) + enterMainButton.setOnClickListener { + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) + } } } + override fun initEvent() { + + } + private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) @@ -36,9 +50,7 @@ } override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt index 5ce9def..edad500 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt @@ -2,21 +2,23 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder import kotlinx.android.synthetic.main.activity_alarm_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchAlarmActivity : BaseActivity() { +class SearchAlarmActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var areaViewModel: AreaViewModel @@ -27,6 +29,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "告警查询" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt index f994402..a5f6a30 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt @@ -12,7 +12,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceDataListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceDataModel @@ -20,8 +19,12 @@ import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import kotlinx.android.synthetic.main.activity_data_search.* @@ -34,7 +37,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDataActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDataActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var deviceViewModel: DeviceViewModel @@ -52,6 +55,9 @@ override fun initLayoutView(): Int = R.layout.activity_data_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "数据查询" rightOptionView.setOnClickListener { @@ -68,11 +74,12 @@ weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + //默认加载所有数据 + obtainSearchResult() } override fun initEvent() { - //默认加载所有数据 - obtainSearchResult(pageIndex) deviceViewModel.deviceDataModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -100,12 +107,14 @@ }) deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -114,12 +123,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } areaViewModel.areaModel.observe(this, { @@ -152,7 +161,7 @@ }) } - private fun obtainSearchResult(pageIndex: Int) { + private fun obtainSearchResult() { deviceViewModel.obtainDeviceData(areaId, keywords, pageIndex) } @@ -173,7 +182,7 @@ searchButton.setOnClickListener { keywords = deviceCodeView.text.toString() pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -201,7 +210,8 @@ } else { if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt index cc9cdb2..643a7e1 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt @@ -11,7 +11,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceListModel @@ -25,8 +24,12 @@ import com.casic.qd.smartwell.widgets.BottomAreaSheet import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState @@ -40,7 +43,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDeviceActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDeviceActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchDeviceViewModel: SearchResultViewModel @@ -66,6 +69,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "设备查询" rightOptionView.setOnClickListener { @@ -90,10 +96,11 @@ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + obtainSearchResult() } override fun initEvent() { - obtainSearchResult(pageIndex) searchDeviceViewModel.deviceResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -121,12 +128,14 @@ }) searchDeviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -135,12 +144,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } //数据监听 @@ -195,7 +204,7 @@ searchButton.setOnClickListener { pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -296,9 +305,9 @@ }) } - private fun obtainSearchResult(page: Int) { + private fun obtainSearchResult() { searchDeviceViewModel.obtainDeviceResult( - keywords, deviceTypeValue, deptId, deviceState, areaId, page + keywords, deviceTypeValue, deptId, deviceState, areaId, pageIndex ) } @@ -309,7 +318,8 @@ } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt index 430174b..e6e6045 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt @@ -5,23 +5,25 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AlarmContentModel import com.casic.qd.smartwell.model.OrderStatusModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.zhy.view.flowlayout.FlowLayout import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchOrderActivity : BaseActivity() { +class SearchOrderActivity : KotlinBaseActivity() { private lateinit var contentTypeViewModel: AlarmViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -37,6 +39,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单查询" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt index 3d78bfa..157c5e8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt @@ -5,17 +5,18 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.utils.WebCrawler import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -class SplashScreenActivity : BaseActivity() { +class SplashScreenActivity : KotlinBaseActivity() { private val kTag = "SplashScreenActivity" private lateinit var userDetailViewModel: UserDetailViewModel @@ -25,7 +26,7 @@ override fun initLayoutView(): Int = R.layout.activity_splash override fun setupTopBarLayout() { - + ImmersionBar.with(this).init() } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt index c87ffd2..bffa1b7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt @@ -5,7 +5,6 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -15,11 +14,11 @@ import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.BarEntry import com.github.mikephil.charting.data.PieEntry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type -import com.pengxh.kt.lite.extensions.obtainQuarterOfYear -import com.pengxh.kt.lite.extensions.timestampToDate -import com.pengxh.kt.lite.extensions.timestampToLastMonthDate -import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_statistics.* import kotlinx.android.synthetic.main.include_base_title.* import java.util.* @@ -30,7 +29,7 @@ * @date 2022/2/17 14:34 * @email 290677893@qq.com */ -class StatisticsActivity : BaseActivity() { +class StatisticsActivity : KotlinBaseActivity() { private val context: Context = this@StatisticsActivity private lateinit var waterViewModel: WaterStatisticsViewModel @@ -40,6 +39,9 @@ override fun initLayoutView(): Int = R.layout.activity_statistics override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "汇总统计" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt index 7818f8e..7e81e6c 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt @@ -5,7 +5,6 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper @@ -13,14 +12,17 @@ import com.casic.qd.smartwell.vm.WaterStatisticsViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_water_expanded.* import java.util.* import kotlin.collections.ArrayList -class WaterExpandedActivity : BaseActivity() { +class WaterExpandedActivity : KotlinBaseActivity() { private val kTag = "WaterExpandedActivity" private val context: Context = this@WaterExpandedActivity @@ -29,7 +31,8 @@ override fun initLayoutView(): Int = R.layout.activity_water_expanded override fun setupTopBarLayout() { - + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt index b22a1d9..040202a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt @@ -5,14 +5,17 @@ import android.webkit.WebView import android.widget.LinearLayout import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar import com.just.agentweb.AgentWeb import com.just.agentweb.WebViewClient +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.readAssetsFile +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_web.* -class WebsiteActivity : BaseActivity() { +class WebsiteActivity : KotlinBaseActivity() { private lateinit var agentWeb: AgentWeb private lateinit var url: String @@ -20,6 +23,9 @@ override fun initLayoutView(): Int = R.layout.activity_web override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "海洋石油工程有限公司" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt index 5347d10..69b8b35 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt @@ -3,35 +3,41 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WellViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_well_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class WellDetailActivity : BaseActivity() { +class WellDetailActivity : KotlinBaseActivity() { private lateinit var wellDetailViewModel: WellViewModel - private lateinit var wellId: String override fun initLayoutView(): Int = R.layout.activity_well_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "井详情" } override fun initData() { - wellId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val wellId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! wellDetailViewModel = ViewModelProvider(this).get(WellViewModel::class.java) + + wellDetailViewModel.obtainWellDetail(wellId) } override fun initEvent() { - wellDetailViewModel.obtainWellDetail(wellId) wellDetailViewModel.detailModel.observe(this, { if (it.code == 200) { val wellDetail = it.data!! diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt index fc78392..a512774 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt @@ -53,24 +53,12 @@ }) fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int + keywords: String, alarmType: String, areaId: String, alarmContentType: String, + beginTime: String, endTime: String, status: String, page: Int ) = launch({ val response = RetrofitServiceManager.obtainAlarmListByPage( - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - page + keywords, alarmType, areaId, alarmContentType, + beginTime, endTime, status, page ) val responseCode = response.separateResponseCode() if (responseCode == 200) { diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt index 8c13aec..3a3f38e 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt @@ -15,7 +15,6 @@ import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.BaseViewModel -import com.pengxh.kt.lite.vm.LoadState import org.json.JSONObject class AuthenticateViewModel : BaseViewModel() { @@ -25,8 +24,15 @@ val resultModel = MutableLiveData() fun obtainPublicKey() = launch({ - loadState.value = LoadState.Loading - keyModel.value = RetrofitServiceManager.authenticate() + val response = RetrofitServiceManager.authenticate() + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + keyModel.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.toErrorMessage().show(BaseApplication.obtainInstance()) + } }, { it.printStackTrace() }) diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt index 23e777e..c7f95b4 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt @@ -18,14 +18,16 @@ private val gson = Gson() val resultModel = MutableLiveData() - fun inn(sid: String, account: String, secretKey: String) = launch({ + fun enter(sid: String, account: String, secretKey: String) = launch({ + loadState.value = LoadState.Loading val response = RetrofitServiceManager.login(sid, account, secretKey) val responseCode = response.separateResponseCode() if (responseCode == 200) { - loadState.value = LoadState.Success resultModel.value = gson.fromJson( response, object : TypeToken() {}.type ) + loadState.value = LoadState.Success + "登录成功".show(BaseApplication.obtainInstance()) } else { loadState.value = LoadState.Fail response.toErrorMessage().show(BaseApplication.obtainInstance()) diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt index d50fa93..ebc951b 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt @@ -21,14 +21,8 @@ val deviceResultModel = MutableLiveData() fun obtainAlarmResult( - keywords: String?, - alarmType: String?, - areaId: String?, - alarmContentType: String?, - beginTime: String?, - endTime: String?, - status: String?, - page: Int + keywords: String?, alarmType: String?, areaId: String?, alarmContentType: String?, + beginTime: String?, endTime: String?, status: String?, page: Int ) = launch({ loadState.value = LoadState.Loading val response = RetrofitServiceManager.obtainAlarmResult( diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt index d47b96e..1a9194d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt @@ -20,6 +20,7 @@ val resultModel = MutableLiveData() fun uploadImage(image: File) = launch({ + loadState.value = LoadState.Loading val response = RetrofitServiceManager.uploadImage(image) val responseCode = response.separateResponseCode() if (responseCode == 200) { diff --git a/app/src/main/java/com/casic/qd/smartwell/widgets/DateSelectDialog.kt b/app/src/main/java/com/casic/qd/smartwell/widgets/DateSelectDialog.kt index 7e4b8e5..a7bdc5e 100644 --- a/app/src/main/java/com/casic/qd/smartwell/widgets/DateSelectDialog.kt +++ b/app/src/main/java/com/casic/qd/smartwell/widgets/DateSelectDialog.kt @@ -100,7 +100,7 @@ .setType(type) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> val textValue = if (type == Type.ALL) { - millSeconds.timestampToTime() + millSeconds.timestampToCompleteDate() } else { millSeconds.timestampToDate() } @@ -119,7 +119,7 @@ .setType(type) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> val textValue = if (type == Type.ALL) { - millSeconds.timestampToTime() + millSeconds.timestampToCompleteDate() } else { millSeconds.timestampToDate() } diff --git a/app/src/main/res/drawable/ic_add_pic.xml b/app/src/main/res/drawable/ic_add_pic.xml deleted file mode 100644 index 9d1e830..0000000 --- a/app/src/main/res/drawable/ic_add_pic.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/app/src/main/res/drawable/ic_camera.xml b/app/src/main/res/drawable/ic_camera.xml new file mode 100644 index 0000000..b612ce9 --- /dev/null +++ b/app/src/main/res/drawable/ic_camera.xml @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_device.xml b/app/src/main/res/drawable/ic_device.xml new file mode 100644 index 0000000..831c4c4 --- /dev/null +++ b/app/src/main/res/drawable/ic_device.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_location.xml b/app/src/main/res/drawable/ic_location.xml new file mode 100644 index 0000000..52e376f --- /dev/null +++ b/app/src/main/res/drawable/ic_location.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_storage.xml b/app/src/main/res/drawable/ic_storage.xml new file mode 100644 index 0000000..898c1cf --- /dev/null +++ b/app/src/main/res/drawable/ic_storage.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + diff --git a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt b/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt deleted file mode 100644 index e016832..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/adapter/NineGridImageAdapter.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.casic.qd.smartwell.adapter - -import android.annotation.SuppressLint -import android.content.Context -import android.view.Gravity -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.casic.qd.smartwell.R -import com.qmuiteam.qmui.util.QMUIDisplayHelper - - -/** - * 可删减九宫格 - * */ -@SuppressLint("NotifyDataSetChanged") -class NineGridImageAdapter(private val context: Context) : - RecyclerView.Adapter() { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 3a226ca..c67e61a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.* @@ -15,7 +14,7 @@ * PublicKey校验 */ @GET("/config/baseConfig") - suspend fun obtainPublicKey(): PublicKeyModel + suspend fun authenticate(): String /** * 登录并获取Token @@ -26,7 +25,7 @@ */ @FormUrlEncoded @POST("/user/login") - suspend fun obtainLoginResult( + suspend fun login( @Field("sid") sid: String, @Field("username") account: String, @Field("password") secretKey: String diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 8a35a50..237af66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory @@ -23,15 +22,15 @@ /** * 验证PublicKey */ - suspend fun authenticate(): PublicKeyModel { - return api.obtainPublicKey() + suspend fun authenticate(): String { + return api.authenticate() } /** * 登录并获取Token */ suspend fun login(sid: String, account: String, secretKey: String): String { - return api.obtainLoginResult(sid, account, secretKey) + return api.login(sid, account, secretKey) } /** diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 976811c..85370c5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -6,13 +6,16 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -20,7 +23,7 @@ import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmManagementActivity : BaseActivity() { +class AlarmManagementActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -35,6 +38,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "当前告警" rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index f27d4d3..f9e8fbc 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -6,14 +6,17 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.SearchResultViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -21,7 +24,7 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmSearchResultActivity : BaseActivity() { +class AlarmSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchAlarmViewModel: SearchResultViewModel @@ -38,6 +41,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "查询结果" } @@ -91,12 +97,14 @@ }) searchAlarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 597e793..40240d5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.view; import android.content.Context +import android.graphics.Color import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -9,10 +10,8 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.photoview.PhotoView -import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager @@ -20,13 +19,13 @@ import java.util.* -class BigImageActivity : BaseActivity() { +class BigImageActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_big_image override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, R.color.black.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, Color.BLACK) + leftBackView.setOnClickListener { finish() } } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 6e35c09..7660a79 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -2,22 +2,24 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.timestampToLastWeekTime import com.pengxh.kt.lite.extensions.timestampToTime +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_device_data_detail.* import kotlinx.android.synthetic.main.activity_main.rightOptionView import kotlinx.android.synthetic.main.activity_main.titleView -class DeviceDataDetailActivity : BaseActivity() { +class DeviceDataDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDataDetailActivity" private lateinit var deviceCode: String @@ -26,6 +28,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_data_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } deviceCode = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! titleView.text = String.format("${deviceCode}历史数据") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index dc5e200..e681958 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -8,20 +8,21 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.LoginViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper import kotlinx.android.synthetic.main.activity_login.* -// TODO 修改登录逻辑,参考四分公司 -class LoginActivity : BaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel @@ -48,8 +49,8 @@ override fun initLayoutView(): Int = R.layout.activity_login override fun setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this) + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) } override fun initData() { @@ -102,7 +103,7 @@ val dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!) //登录并获取Token,POST请求 - loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey) + loginViewModel.enter(it.data!!.sid!!, account, dataByPublicKey) loginViewModel.resultModel.observe(this, { loginResult -> if (loginResult.code == 200) { AuthenticationHelper.saveToken(loginResult.data!!.token!!) @@ -121,20 +122,15 @@ }) loginViewModel.loadState.observe(this, { loginState -> when (loginState) { - is LoadState.Success -> { - "登录成功".show(this) - DialogHelper.dismissLoadingDialog() + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "登录中,请稍后...") } else -> { - "登录失败,用户名或密码错误".show(this) DialogHelper.dismissLoadingDialog() } } }) } }) - authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index b0f3847..704e484 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -13,7 +13,6 @@ import com.bumptech.glide.Glide import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.HomeRecycleAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.model.LineChartEntryModel @@ -26,7 +25,10 @@ import com.google.android.material.navigation.NavigationView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState @@ -49,7 +51,7 @@ import java.util.* import kotlin.collections.ArrayList -class MainActivity : BaseActivity(), DrawerLayout.DrawerListener, +class MainActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener, NavigationView.OnNavigationItemSelectedListener { private val kTag = "MainActivity" @@ -64,7 +66,23 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = resources.getString(R.string.app_name) + + leftOptionView.setOnClickListener { + if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { + leftDrawerLayout.closeDrawer(GravityCompat.START) + } else { + leftDrawerLayout.openDrawer(GravityCompat.START) + } + } + leftDrawerLayout.addDrawerListener(this) + + rightOptionView.setOnClickListener { + navigatePageTo() + } } override fun initData() { @@ -149,18 +167,13 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) + + waterViewModel.waterStatistics() } override fun initEvent() { - leftOptionView.setOnClickListener { - if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { - leftDrawerLayout.closeDrawer(GravityCompat.START) - } else { - leftDrawerLayout.openDrawer(GravityCompat.START) - } - } - leftDrawerLayout.addDrawerListener(this) navigationView.setNavigationItemSelectedListener(this) + loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -169,11 +182,6 @@ } }) - rightOptionView.setOnClickListener { - navigatePageTo() - } - - waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index d6336d6..1ee58ff 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -14,7 +14,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.MapDeviceListModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -22,9 +21,13 @@ import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -38,7 +41,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class MapActivity : BaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class MapActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "MapActivity" @@ -70,8 +73,12 @@ override fun initLayoutView(): Int = R.layout.activity_map override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index b386373..809e6c0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,22 +5,24 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_completed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderCompletedDetailActivity : BaseActivity() { +class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -28,6 +30,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index 8653564..76f8077 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -9,41 +9,41 @@ import android.view.View import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderInHandleDetailActivity : BaseActivity() { +class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private val context: Context = this@OrderInHandleDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,6 +52,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -59,16 +62,14 @@ override fun initData() { val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!!//初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) - workOrderViewModel.obtainWorkOrderDetail(jobId) } @@ -240,7 +241,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -274,7 +275,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //处理完成工单状态处理 @@ -330,7 +338,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -393,22 +400,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index fa5a469..483307d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -3,30 +3,36 @@ import androidx.fragment.app.Fragment import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.TopViewPagerAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.fragment.OrderCompletedFragment import com.casic.qd.smartwell.fragment.OrderInHandleFragment import com.casic.qd.smartwell.fragment.OrderNotConfirmedFragment import com.casic.qd.smartwell.fragment.OrderNotProcessedFragment import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_order_management.* import java.util.* -class OrderManagementActivity : BaseActivity() { +class OrderManagementActivity : KotlinBaseActivity() { - private var fragmentList: ArrayList = ArrayList() + private var fragmentPages: ArrayList = ArrayList() init { - fragmentList.add(OrderNotProcessedFragment())//待处理 - fragmentList.add(OrderNotConfirmedFragment())//待确认 - fragmentList.add(OrderInHandleFragment())//处理中 - fragmentList.add(OrderCompletedFragment())//已完成 + fragmentPages.add(OrderNotProcessedFragment())//待处理 + fragmentPages.add(OrderNotConfirmedFragment())//待确认 + fragmentPages.add(OrderInHandleFragment())//处理中 + fragmentPages.add(OrderCompletedFragment())//已完成 } override fun initLayoutView(): Int = R.layout.activity_order_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "工单管理" rightOptionView.setOnClickListener { @@ -36,9 +42,9 @@ override fun initData() { val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentList + supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) - orderViewPager.offscreenPageLimit = fragmentList.size + orderViewPager.offscreenPageLimit = fragmentPages.size orderViewPager.adapter = topViewPagerAdapter orderTabLayout.setupWithViewPager(orderViewPager) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index 0b5e1d1..dd87a66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -8,42 +8,41 @@ import android.util.Log import android.view.View import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderNotConfirmedDetailActivity : BaseActivity() { +class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,23 +51,26 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } } override fun initData() { - jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) + workOrderViewModel.obtainWorkOrderDetail(jobId) } override fun initEvent() { @@ -93,7 +95,6 @@ } }) - workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -204,7 +205,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -238,7 +239,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //确认工单状态处理 @@ -262,6 +270,7 @@ BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(arrayListOf("拍照", "相册")) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { @@ -293,7 +302,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -356,22 +364,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index 63922a1..ac18ef0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,21 +6,24 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Poi import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WellViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderNotProcessedDetailActivity : BaseActivity() { +class OrderNotProcessedDetailActivity : KotlinBaseActivity() { private val context: Context = this@OrderNotProcessedDetailActivity private lateinit var workOrderViewModel: WorkOrderViewModel @@ -30,6 +33,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -147,12 +153,6 @@ } is LoadState.Success -> { DialogHelper.dismissLoadingDialog() - //通知列表刷新数据 -// BroadcastReceiverManager.instance.sendMultiBroadcast( -// Constant.NOT_PROCESSED_ACTION, -// Constant.NOT_CONFIRMED_ACTION, -// Constant.NOT_ACCEPT_ACTION -// ) this.finish() } else -> { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index b051c34..8b95aa8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -7,15 +7,18 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.SearchResultAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.SearchResultModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -26,7 +29,7 @@ import okhttp3.RequestBody import org.json.JSONObject -class OrderSearchResultActivity : BaseActivity() { +class OrderSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var operationViewModel: OperationViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -42,6 +45,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "查询结果" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -95,12 +101,14 @@ } }) workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt index e5c9f86..f53a0d8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt @@ -1,32 +1,46 @@ package com.casic.qd.smartwell.view -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting +import com.casic.qd.smartwell.R import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : AppCompatActivity(), PermissionCallbacks { +class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - PageNavigationManager.addActivity(this) + override fun initLayoutView(): Int = R.layout.activity_permssion + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) + } + + override fun initData() { //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - EasyPermissions.requestPermissions( - this, - "需要获取相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) + enterMainButton.setOnClickListener { + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) + } } } + override fun initEvent() { + + } + private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) @@ -36,9 +50,7 @@ } override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt index 5ce9def..edad500 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt @@ -2,21 +2,23 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder import kotlinx.android.synthetic.main.activity_alarm_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchAlarmActivity : BaseActivity() { +class SearchAlarmActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var areaViewModel: AreaViewModel @@ -27,6 +29,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "告警查询" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt index f994402..a5f6a30 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt @@ -12,7 +12,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceDataListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceDataModel @@ -20,8 +19,12 @@ import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import kotlinx.android.synthetic.main.activity_data_search.* @@ -34,7 +37,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDataActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDataActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var deviceViewModel: DeviceViewModel @@ -52,6 +55,9 @@ override fun initLayoutView(): Int = R.layout.activity_data_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "数据查询" rightOptionView.setOnClickListener { @@ -68,11 +74,12 @@ weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + //默认加载所有数据 + obtainSearchResult() } override fun initEvent() { - //默认加载所有数据 - obtainSearchResult(pageIndex) deviceViewModel.deviceDataModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -100,12 +107,14 @@ }) deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -114,12 +123,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } areaViewModel.areaModel.observe(this, { @@ -152,7 +161,7 @@ }) } - private fun obtainSearchResult(pageIndex: Int) { + private fun obtainSearchResult() { deviceViewModel.obtainDeviceData(areaId, keywords, pageIndex) } @@ -173,7 +182,7 @@ searchButton.setOnClickListener { keywords = deviceCodeView.text.toString() pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -201,7 +210,8 @@ } else { if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt index cc9cdb2..643a7e1 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt @@ -11,7 +11,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceListModel @@ -25,8 +24,12 @@ import com.casic.qd.smartwell.widgets.BottomAreaSheet import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState @@ -40,7 +43,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDeviceActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDeviceActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchDeviceViewModel: SearchResultViewModel @@ -66,6 +69,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "设备查询" rightOptionView.setOnClickListener { @@ -90,10 +96,11 @@ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + obtainSearchResult() } override fun initEvent() { - obtainSearchResult(pageIndex) searchDeviceViewModel.deviceResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -121,12 +128,14 @@ }) searchDeviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -135,12 +144,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } //数据监听 @@ -195,7 +204,7 @@ searchButton.setOnClickListener { pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -296,9 +305,9 @@ }) } - private fun obtainSearchResult(page: Int) { + private fun obtainSearchResult() { searchDeviceViewModel.obtainDeviceResult( - keywords, deviceTypeValue, deptId, deviceState, areaId, page + keywords, deviceTypeValue, deptId, deviceState, areaId, pageIndex ) } @@ -309,7 +318,8 @@ } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt index 430174b..e6e6045 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt @@ -5,23 +5,25 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AlarmContentModel import com.casic.qd.smartwell.model.OrderStatusModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.zhy.view.flowlayout.FlowLayout import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchOrderActivity : BaseActivity() { +class SearchOrderActivity : KotlinBaseActivity() { private lateinit var contentTypeViewModel: AlarmViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -37,6 +39,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单查询" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt index 3d78bfa..157c5e8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt @@ -5,17 +5,18 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.utils.WebCrawler import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -class SplashScreenActivity : BaseActivity() { +class SplashScreenActivity : KotlinBaseActivity() { private val kTag = "SplashScreenActivity" private lateinit var userDetailViewModel: UserDetailViewModel @@ -25,7 +26,7 @@ override fun initLayoutView(): Int = R.layout.activity_splash override fun setupTopBarLayout() { - + ImmersionBar.with(this).init() } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt index c87ffd2..bffa1b7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt @@ -5,7 +5,6 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -15,11 +14,11 @@ import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.BarEntry import com.github.mikephil.charting.data.PieEntry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type -import com.pengxh.kt.lite.extensions.obtainQuarterOfYear -import com.pengxh.kt.lite.extensions.timestampToDate -import com.pengxh.kt.lite.extensions.timestampToLastMonthDate -import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_statistics.* import kotlinx.android.synthetic.main.include_base_title.* import java.util.* @@ -30,7 +29,7 @@ * @date 2022/2/17 14:34 * @email 290677893@qq.com */ -class StatisticsActivity : BaseActivity() { +class StatisticsActivity : KotlinBaseActivity() { private val context: Context = this@StatisticsActivity private lateinit var waterViewModel: WaterStatisticsViewModel @@ -40,6 +39,9 @@ override fun initLayoutView(): Int = R.layout.activity_statistics override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "汇总统计" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt index 7818f8e..7e81e6c 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt @@ -5,7 +5,6 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper @@ -13,14 +12,17 @@ import com.casic.qd.smartwell.vm.WaterStatisticsViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_water_expanded.* import java.util.* import kotlin.collections.ArrayList -class WaterExpandedActivity : BaseActivity() { +class WaterExpandedActivity : KotlinBaseActivity() { private val kTag = "WaterExpandedActivity" private val context: Context = this@WaterExpandedActivity @@ -29,7 +31,8 @@ override fun initLayoutView(): Int = R.layout.activity_water_expanded override fun setupTopBarLayout() { - + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt index b22a1d9..040202a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt @@ -5,14 +5,17 @@ import android.webkit.WebView import android.widget.LinearLayout import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar import com.just.agentweb.AgentWeb import com.just.agentweb.WebViewClient +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.readAssetsFile +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_web.* -class WebsiteActivity : BaseActivity() { +class WebsiteActivity : KotlinBaseActivity() { private lateinit var agentWeb: AgentWeb private lateinit var url: String @@ -20,6 +23,9 @@ override fun initLayoutView(): Int = R.layout.activity_web override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "海洋石油工程有限公司" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt index 5347d10..69b8b35 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt @@ -3,35 +3,41 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WellViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_well_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class WellDetailActivity : BaseActivity() { +class WellDetailActivity : KotlinBaseActivity() { private lateinit var wellDetailViewModel: WellViewModel - private lateinit var wellId: String override fun initLayoutView(): Int = R.layout.activity_well_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "井详情" } override fun initData() { - wellId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val wellId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! wellDetailViewModel = ViewModelProvider(this).get(WellViewModel::class.java) + + wellDetailViewModel.obtainWellDetail(wellId) } override fun initEvent() { - wellDetailViewModel.obtainWellDetail(wellId) wellDetailViewModel.detailModel.observe(this, { if (it.code == 200) { val wellDetail = it.data!! diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt index fc78392..a512774 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt @@ -53,24 +53,12 @@ }) fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int + keywords: String, alarmType: String, areaId: String, alarmContentType: String, + beginTime: String, endTime: String, status: String, page: Int ) = launch({ val response = RetrofitServiceManager.obtainAlarmListByPage( - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - page + keywords, alarmType, areaId, alarmContentType, + beginTime, endTime, status, page ) val responseCode = response.separateResponseCode() if (responseCode == 200) { diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt index 8c13aec..3a3f38e 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt @@ -15,7 +15,6 @@ import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.BaseViewModel -import com.pengxh.kt.lite.vm.LoadState import org.json.JSONObject class AuthenticateViewModel : BaseViewModel() { @@ -25,8 +24,15 @@ val resultModel = MutableLiveData() fun obtainPublicKey() = launch({ - loadState.value = LoadState.Loading - keyModel.value = RetrofitServiceManager.authenticate() + val response = RetrofitServiceManager.authenticate() + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + keyModel.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.toErrorMessage().show(BaseApplication.obtainInstance()) + } }, { it.printStackTrace() }) diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt index 23e777e..c7f95b4 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt @@ -18,14 +18,16 @@ private val gson = Gson() val resultModel = MutableLiveData() - fun inn(sid: String, account: String, secretKey: String) = launch({ + fun enter(sid: String, account: String, secretKey: String) = launch({ + loadState.value = LoadState.Loading val response = RetrofitServiceManager.login(sid, account, secretKey) val responseCode = response.separateResponseCode() if (responseCode == 200) { - loadState.value = LoadState.Success resultModel.value = gson.fromJson( response, object : TypeToken() {}.type ) + loadState.value = LoadState.Success + "登录成功".show(BaseApplication.obtainInstance()) } else { loadState.value = LoadState.Fail response.toErrorMessage().show(BaseApplication.obtainInstance()) diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt index d50fa93..ebc951b 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt @@ -21,14 +21,8 @@ val deviceResultModel = MutableLiveData() fun obtainAlarmResult( - keywords: String?, - alarmType: String?, - areaId: String?, - alarmContentType: String?, - beginTime: String?, - endTime: String?, - status: String?, - page: Int + keywords: String?, alarmType: String?, areaId: String?, alarmContentType: String?, + beginTime: String?, endTime: String?, status: String?, page: Int ) = launch({ loadState.value = LoadState.Loading val response = RetrofitServiceManager.obtainAlarmResult( diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt index d47b96e..1a9194d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt @@ -20,6 +20,7 @@ val resultModel = MutableLiveData() fun uploadImage(image: File) = launch({ + loadState.value = LoadState.Loading val response = RetrofitServiceManager.uploadImage(image) val responseCode = response.separateResponseCode() if (responseCode == 200) { diff --git a/app/src/main/java/com/casic/qd/smartwell/widgets/DateSelectDialog.kt b/app/src/main/java/com/casic/qd/smartwell/widgets/DateSelectDialog.kt index 7e4b8e5..a7bdc5e 100644 --- a/app/src/main/java/com/casic/qd/smartwell/widgets/DateSelectDialog.kt +++ b/app/src/main/java/com/casic/qd/smartwell/widgets/DateSelectDialog.kt @@ -100,7 +100,7 @@ .setType(type) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> val textValue = if (type == Type.ALL) { - millSeconds.timestampToTime() + millSeconds.timestampToCompleteDate() } else { millSeconds.timestampToDate() } @@ -119,7 +119,7 @@ .setType(type) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> val textValue = if (type == Type.ALL) { - millSeconds.timestampToTime() + millSeconds.timestampToCompleteDate() } else { millSeconds.timestampToDate() } diff --git a/app/src/main/res/drawable/ic_add_pic.xml b/app/src/main/res/drawable/ic_add_pic.xml deleted file mode 100644 index 9d1e830..0000000 --- a/app/src/main/res/drawable/ic_add_pic.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/app/src/main/res/drawable/ic_camera.xml b/app/src/main/res/drawable/ic_camera.xml new file mode 100644 index 0000000..b612ce9 --- /dev/null +++ b/app/src/main/res/drawable/ic_camera.xml @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_device.xml b/app/src/main/res/drawable/ic_device.xml new file mode 100644 index 0000000..831c4c4 --- /dev/null +++ b/app/src/main/res/drawable/ic_device.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_location.xml b/app/src/main/res/drawable/ic_location.xml new file mode 100644 index 0000000..52e376f --- /dev/null +++ b/app/src/main/res/drawable/ic_location.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_storage.xml b/app/src/main/res/drawable/ic_storage.xml new file mode 100644 index 0000000..898c1cf --- /dev/null +++ b/app/src/main/res/drawable/ic_storage.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_order_in_handle_detail.xml b/app/src/main/res/layout/activity_order_in_handle_detail.xml index f8babbd..8241ac6 100644 --- a/app/src/main/res/layout/activity_order_in_handle_detail.xml +++ b/app/src/main/res/layout/activity_order_in_handle_detail.xml @@ -1,5 +1,6 @@ + android:nestedScrollingEnabled="false" + app:layoutManager="androidx.recyclerview.widget.GridLayoutManager" + app:spanCount="3" /> () { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 3a226ca..c67e61a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.* @@ -15,7 +14,7 @@ * PublicKey校验 */ @GET("/config/baseConfig") - suspend fun obtainPublicKey(): PublicKeyModel + suspend fun authenticate(): String /** * 登录并获取Token @@ -26,7 +25,7 @@ */ @FormUrlEncoded @POST("/user/login") - suspend fun obtainLoginResult( + suspend fun login( @Field("sid") sid: String, @Field("username") account: String, @Field("password") secretKey: String diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 8a35a50..237af66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory @@ -23,15 +22,15 @@ /** * 验证PublicKey */ - suspend fun authenticate(): PublicKeyModel { - return api.obtainPublicKey() + suspend fun authenticate(): String { + return api.authenticate() } /** * 登录并获取Token */ suspend fun login(sid: String, account: String, secretKey: String): String { - return api.obtainLoginResult(sid, account, secretKey) + return api.login(sid, account, secretKey) } /** diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 976811c..85370c5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -6,13 +6,16 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -20,7 +23,7 @@ import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmManagementActivity : BaseActivity() { +class AlarmManagementActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -35,6 +38,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "当前告警" rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index f27d4d3..f9e8fbc 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -6,14 +6,17 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.SearchResultViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -21,7 +24,7 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmSearchResultActivity : BaseActivity() { +class AlarmSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchAlarmViewModel: SearchResultViewModel @@ -38,6 +41,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "查询结果" } @@ -91,12 +97,14 @@ }) searchAlarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 597e793..40240d5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.view; import android.content.Context +import android.graphics.Color import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -9,10 +10,8 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.photoview.PhotoView -import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager @@ -20,13 +19,13 @@ import java.util.* -class BigImageActivity : BaseActivity() { +class BigImageActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_big_image override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, R.color.black.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, Color.BLACK) + leftBackView.setOnClickListener { finish() } } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 6e35c09..7660a79 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -2,22 +2,24 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.timestampToLastWeekTime import com.pengxh.kt.lite.extensions.timestampToTime +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_device_data_detail.* import kotlinx.android.synthetic.main.activity_main.rightOptionView import kotlinx.android.synthetic.main.activity_main.titleView -class DeviceDataDetailActivity : BaseActivity() { +class DeviceDataDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDataDetailActivity" private lateinit var deviceCode: String @@ -26,6 +28,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_data_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } deviceCode = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! titleView.text = String.format("${deviceCode}历史数据") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index dc5e200..e681958 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -8,20 +8,21 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.LoginViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper import kotlinx.android.synthetic.main.activity_login.* -// TODO 修改登录逻辑,参考四分公司 -class LoginActivity : BaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel @@ -48,8 +49,8 @@ override fun initLayoutView(): Int = R.layout.activity_login override fun setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this) + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) } override fun initData() { @@ -102,7 +103,7 @@ val dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!) //登录并获取Token,POST请求 - loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey) + loginViewModel.enter(it.data!!.sid!!, account, dataByPublicKey) loginViewModel.resultModel.observe(this, { loginResult -> if (loginResult.code == 200) { AuthenticationHelper.saveToken(loginResult.data!!.token!!) @@ -121,20 +122,15 @@ }) loginViewModel.loadState.observe(this, { loginState -> when (loginState) { - is LoadState.Success -> { - "登录成功".show(this) - DialogHelper.dismissLoadingDialog() + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "登录中,请稍后...") } else -> { - "登录失败,用户名或密码错误".show(this) DialogHelper.dismissLoadingDialog() } } }) } }) - authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index b0f3847..704e484 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -13,7 +13,6 @@ import com.bumptech.glide.Glide import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.HomeRecycleAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.model.LineChartEntryModel @@ -26,7 +25,10 @@ import com.google.android.material.navigation.NavigationView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState @@ -49,7 +51,7 @@ import java.util.* import kotlin.collections.ArrayList -class MainActivity : BaseActivity(), DrawerLayout.DrawerListener, +class MainActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener, NavigationView.OnNavigationItemSelectedListener { private val kTag = "MainActivity" @@ -64,7 +66,23 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = resources.getString(R.string.app_name) + + leftOptionView.setOnClickListener { + if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { + leftDrawerLayout.closeDrawer(GravityCompat.START) + } else { + leftDrawerLayout.openDrawer(GravityCompat.START) + } + } + leftDrawerLayout.addDrawerListener(this) + + rightOptionView.setOnClickListener { + navigatePageTo() + } } override fun initData() { @@ -149,18 +167,13 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) + + waterViewModel.waterStatistics() } override fun initEvent() { - leftOptionView.setOnClickListener { - if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { - leftDrawerLayout.closeDrawer(GravityCompat.START) - } else { - leftDrawerLayout.openDrawer(GravityCompat.START) - } - } - leftDrawerLayout.addDrawerListener(this) navigationView.setNavigationItemSelectedListener(this) + loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -169,11 +182,6 @@ } }) - rightOptionView.setOnClickListener { - navigatePageTo() - } - - waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index d6336d6..1ee58ff 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -14,7 +14,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.MapDeviceListModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -22,9 +21,13 @@ import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -38,7 +41,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class MapActivity : BaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class MapActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "MapActivity" @@ -70,8 +73,12 @@ override fun initLayoutView(): Int = R.layout.activity_map override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index b386373..809e6c0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,22 +5,24 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_completed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderCompletedDetailActivity : BaseActivity() { +class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -28,6 +30,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index 8653564..76f8077 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -9,41 +9,41 @@ import android.view.View import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderInHandleDetailActivity : BaseActivity() { +class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private val context: Context = this@OrderInHandleDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,6 +52,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -59,16 +62,14 @@ override fun initData() { val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!!//初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) - workOrderViewModel.obtainWorkOrderDetail(jobId) } @@ -240,7 +241,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -274,7 +275,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //处理完成工单状态处理 @@ -330,7 +338,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -393,22 +400,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index fa5a469..483307d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -3,30 +3,36 @@ import androidx.fragment.app.Fragment import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.TopViewPagerAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.fragment.OrderCompletedFragment import com.casic.qd.smartwell.fragment.OrderInHandleFragment import com.casic.qd.smartwell.fragment.OrderNotConfirmedFragment import com.casic.qd.smartwell.fragment.OrderNotProcessedFragment import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_order_management.* import java.util.* -class OrderManagementActivity : BaseActivity() { +class OrderManagementActivity : KotlinBaseActivity() { - private var fragmentList: ArrayList = ArrayList() + private var fragmentPages: ArrayList = ArrayList() init { - fragmentList.add(OrderNotProcessedFragment())//待处理 - fragmentList.add(OrderNotConfirmedFragment())//待确认 - fragmentList.add(OrderInHandleFragment())//处理中 - fragmentList.add(OrderCompletedFragment())//已完成 + fragmentPages.add(OrderNotProcessedFragment())//待处理 + fragmentPages.add(OrderNotConfirmedFragment())//待确认 + fragmentPages.add(OrderInHandleFragment())//处理中 + fragmentPages.add(OrderCompletedFragment())//已完成 } override fun initLayoutView(): Int = R.layout.activity_order_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "工单管理" rightOptionView.setOnClickListener { @@ -36,9 +42,9 @@ override fun initData() { val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentList + supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) - orderViewPager.offscreenPageLimit = fragmentList.size + orderViewPager.offscreenPageLimit = fragmentPages.size orderViewPager.adapter = topViewPagerAdapter orderTabLayout.setupWithViewPager(orderViewPager) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index 0b5e1d1..dd87a66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -8,42 +8,41 @@ import android.util.Log import android.view.View import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderNotConfirmedDetailActivity : BaseActivity() { +class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,23 +51,26 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } } override fun initData() { - jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) + workOrderViewModel.obtainWorkOrderDetail(jobId) } override fun initEvent() { @@ -93,7 +95,6 @@ } }) - workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -204,7 +205,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -238,7 +239,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //确认工单状态处理 @@ -262,6 +270,7 @@ BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(arrayListOf("拍照", "相册")) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { @@ -293,7 +302,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -356,22 +364,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index 63922a1..ac18ef0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,21 +6,24 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Poi import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WellViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderNotProcessedDetailActivity : BaseActivity() { +class OrderNotProcessedDetailActivity : KotlinBaseActivity() { private val context: Context = this@OrderNotProcessedDetailActivity private lateinit var workOrderViewModel: WorkOrderViewModel @@ -30,6 +33,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -147,12 +153,6 @@ } is LoadState.Success -> { DialogHelper.dismissLoadingDialog() - //通知列表刷新数据 -// BroadcastReceiverManager.instance.sendMultiBroadcast( -// Constant.NOT_PROCESSED_ACTION, -// Constant.NOT_CONFIRMED_ACTION, -// Constant.NOT_ACCEPT_ACTION -// ) this.finish() } else -> { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index b051c34..8b95aa8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -7,15 +7,18 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.SearchResultAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.SearchResultModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -26,7 +29,7 @@ import okhttp3.RequestBody import org.json.JSONObject -class OrderSearchResultActivity : BaseActivity() { +class OrderSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var operationViewModel: OperationViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -42,6 +45,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "查询结果" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -95,12 +101,14 @@ } }) workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt index e5c9f86..f53a0d8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt @@ -1,32 +1,46 @@ package com.casic.qd.smartwell.view -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting +import com.casic.qd.smartwell.R import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : AppCompatActivity(), PermissionCallbacks { +class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - PageNavigationManager.addActivity(this) + override fun initLayoutView(): Int = R.layout.activity_permssion + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) + } + + override fun initData() { //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - EasyPermissions.requestPermissions( - this, - "需要获取相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) + enterMainButton.setOnClickListener { + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) + } } } + override fun initEvent() { + + } + private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) @@ -36,9 +50,7 @@ } override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt index 5ce9def..edad500 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt @@ -2,21 +2,23 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder import kotlinx.android.synthetic.main.activity_alarm_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchAlarmActivity : BaseActivity() { +class SearchAlarmActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var areaViewModel: AreaViewModel @@ -27,6 +29,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "告警查询" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt index f994402..a5f6a30 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt @@ -12,7 +12,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceDataListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceDataModel @@ -20,8 +19,12 @@ import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import kotlinx.android.synthetic.main.activity_data_search.* @@ -34,7 +37,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDataActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDataActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var deviceViewModel: DeviceViewModel @@ -52,6 +55,9 @@ override fun initLayoutView(): Int = R.layout.activity_data_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "数据查询" rightOptionView.setOnClickListener { @@ -68,11 +74,12 @@ weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + //默认加载所有数据 + obtainSearchResult() } override fun initEvent() { - //默认加载所有数据 - obtainSearchResult(pageIndex) deviceViewModel.deviceDataModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -100,12 +107,14 @@ }) deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -114,12 +123,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } areaViewModel.areaModel.observe(this, { @@ -152,7 +161,7 @@ }) } - private fun obtainSearchResult(pageIndex: Int) { + private fun obtainSearchResult() { deviceViewModel.obtainDeviceData(areaId, keywords, pageIndex) } @@ -173,7 +182,7 @@ searchButton.setOnClickListener { keywords = deviceCodeView.text.toString() pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -201,7 +210,8 @@ } else { if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt index cc9cdb2..643a7e1 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt @@ -11,7 +11,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceListModel @@ -25,8 +24,12 @@ import com.casic.qd.smartwell.widgets.BottomAreaSheet import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState @@ -40,7 +43,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDeviceActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDeviceActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchDeviceViewModel: SearchResultViewModel @@ -66,6 +69,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "设备查询" rightOptionView.setOnClickListener { @@ -90,10 +96,11 @@ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + obtainSearchResult() } override fun initEvent() { - obtainSearchResult(pageIndex) searchDeviceViewModel.deviceResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -121,12 +128,14 @@ }) searchDeviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -135,12 +144,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } //数据监听 @@ -195,7 +204,7 @@ searchButton.setOnClickListener { pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -296,9 +305,9 @@ }) } - private fun obtainSearchResult(page: Int) { + private fun obtainSearchResult() { searchDeviceViewModel.obtainDeviceResult( - keywords, deviceTypeValue, deptId, deviceState, areaId, page + keywords, deviceTypeValue, deptId, deviceState, areaId, pageIndex ) } @@ -309,7 +318,8 @@ } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt index 430174b..e6e6045 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt @@ -5,23 +5,25 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AlarmContentModel import com.casic.qd.smartwell.model.OrderStatusModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.zhy.view.flowlayout.FlowLayout import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchOrderActivity : BaseActivity() { +class SearchOrderActivity : KotlinBaseActivity() { private lateinit var contentTypeViewModel: AlarmViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -37,6 +39,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单查询" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt index 3d78bfa..157c5e8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt @@ -5,17 +5,18 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.utils.WebCrawler import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -class SplashScreenActivity : BaseActivity() { +class SplashScreenActivity : KotlinBaseActivity() { private val kTag = "SplashScreenActivity" private lateinit var userDetailViewModel: UserDetailViewModel @@ -25,7 +26,7 @@ override fun initLayoutView(): Int = R.layout.activity_splash override fun setupTopBarLayout() { - + ImmersionBar.with(this).init() } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt index c87ffd2..bffa1b7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt @@ -5,7 +5,6 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -15,11 +14,11 @@ import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.BarEntry import com.github.mikephil.charting.data.PieEntry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type -import com.pengxh.kt.lite.extensions.obtainQuarterOfYear -import com.pengxh.kt.lite.extensions.timestampToDate -import com.pengxh.kt.lite.extensions.timestampToLastMonthDate -import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_statistics.* import kotlinx.android.synthetic.main.include_base_title.* import java.util.* @@ -30,7 +29,7 @@ * @date 2022/2/17 14:34 * @email 290677893@qq.com */ -class StatisticsActivity : BaseActivity() { +class StatisticsActivity : KotlinBaseActivity() { private val context: Context = this@StatisticsActivity private lateinit var waterViewModel: WaterStatisticsViewModel @@ -40,6 +39,9 @@ override fun initLayoutView(): Int = R.layout.activity_statistics override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "汇总统计" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt index 7818f8e..7e81e6c 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt @@ -5,7 +5,6 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper @@ -13,14 +12,17 @@ import com.casic.qd.smartwell.vm.WaterStatisticsViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_water_expanded.* import java.util.* import kotlin.collections.ArrayList -class WaterExpandedActivity : BaseActivity() { +class WaterExpandedActivity : KotlinBaseActivity() { private val kTag = "WaterExpandedActivity" private val context: Context = this@WaterExpandedActivity @@ -29,7 +31,8 @@ override fun initLayoutView(): Int = R.layout.activity_water_expanded override fun setupTopBarLayout() { - + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt index b22a1d9..040202a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt @@ -5,14 +5,17 @@ import android.webkit.WebView import android.widget.LinearLayout import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar import com.just.agentweb.AgentWeb import com.just.agentweb.WebViewClient +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.readAssetsFile +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_web.* -class WebsiteActivity : BaseActivity() { +class WebsiteActivity : KotlinBaseActivity() { private lateinit var agentWeb: AgentWeb private lateinit var url: String @@ -20,6 +23,9 @@ override fun initLayoutView(): Int = R.layout.activity_web override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "海洋石油工程有限公司" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt index 5347d10..69b8b35 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt @@ -3,35 +3,41 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WellViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_well_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class WellDetailActivity : BaseActivity() { +class WellDetailActivity : KotlinBaseActivity() { private lateinit var wellDetailViewModel: WellViewModel - private lateinit var wellId: String override fun initLayoutView(): Int = R.layout.activity_well_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "井详情" } override fun initData() { - wellId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val wellId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! wellDetailViewModel = ViewModelProvider(this).get(WellViewModel::class.java) + + wellDetailViewModel.obtainWellDetail(wellId) } override fun initEvent() { - wellDetailViewModel.obtainWellDetail(wellId) wellDetailViewModel.detailModel.observe(this, { if (it.code == 200) { val wellDetail = it.data!! diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt index fc78392..a512774 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt @@ -53,24 +53,12 @@ }) fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int + keywords: String, alarmType: String, areaId: String, alarmContentType: String, + beginTime: String, endTime: String, status: String, page: Int ) = launch({ val response = RetrofitServiceManager.obtainAlarmListByPage( - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - page + keywords, alarmType, areaId, alarmContentType, + beginTime, endTime, status, page ) val responseCode = response.separateResponseCode() if (responseCode == 200) { diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt index 8c13aec..3a3f38e 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt @@ -15,7 +15,6 @@ import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.BaseViewModel -import com.pengxh.kt.lite.vm.LoadState import org.json.JSONObject class AuthenticateViewModel : BaseViewModel() { @@ -25,8 +24,15 @@ val resultModel = MutableLiveData() fun obtainPublicKey() = launch({ - loadState.value = LoadState.Loading - keyModel.value = RetrofitServiceManager.authenticate() + val response = RetrofitServiceManager.authenticate() + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + keyModel.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.toErrorMessage().show(BaseApplication.obtainInstance()) + } }, { it.printStackTrace() }) diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt index 23e777e..c7f95b4 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt @@ -18,14 +18,16 @@ private val gson = Gson() val resultModel = MutableLiveData() - fun inn(sid: String, account: String, secretKey: String) = launch({ + fun enter(sid: String, account: String, secretKey: String) = launch({ + loadState.value = LoadState.Loading val response = RetrofitServiceManager.login(sid, account, secretKey) val responseCode = response.separateResponseCode() if (responseCode == 200) { - loadState.value = LoadState.Success resultModel.value = gson.fromJson( response, object : TypeToken() {}.type ) + loadState.value = LoadState.Success + "登录成功".show(BaseApplication.obtainInstance()) } else { loadState.value = LoadState.Fail response.toErrorMessage().show(BaseApplication.obtainInstance()) diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt index d50fa93..ebc951b 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt @@ -21,14 +21,8 @@ val deviceResultModel = MutableLiveData() fun obtainAlarmResult( - keywords: String?, - alarmType: String?, - areaId: String?, - alarmContentType: String?, - beginTime: String?, - endTime: String?, - status: String?, - page: Int + keywords: String?, alarmType: String?, areaId: String?, alarmContentType: String?, + beginTime: String?, endTime: String?, status: String?, page: Int ) = launch({ loadState.value = LoadState.Loading val response = RetrofitServiceManager.obtainAlarmResult( diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt index d47b96e..1a9194d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt @@ -20,6 +20,7 @@ val resultModel = MutableLiveData() fun uploadImage(image: File) = launch({ + loadState.value = LoadState.Loading val response = RetrofitServiceManager.uploadImage(image) val responseCode = response.separateResponseCode() if (responseCode == 200) { diff --git a/app/src/main/java/com/casic/qd/smartwell/widgets/DateSelectDialog.kt b/app/src/main/java/com/casic/qd/smartwell/widgets/DateSelectDialog.kt index 7e4b8e5..a7bdc5e 100644 --- a/app/src/main/java/com/casic/qd/smartwell/widgets/DateSelectDialog.kt +++ b/app/src/main/java/com/casic/qd/smartwell/widgets/DateSelectDialog.kt @@ -100,7 +100,7 @@ .setType(type) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> val textValue = if (type == Type.ALL) { - millSeconds.timestampToTime() + millSeconds.timestampToCompleteDate() } else { millSeconds.timestampToDate() } @@ -119,7 +119,7 @@ .setType(type) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> val textValue = if (type == Type.ALL) { - millSeconds.timestampToTime() + millSeconds.timestampToCompleteDate() } else { millSeconds.timestampToDate() } diff --git a/app/src/main/res/drawable/ic_add_pic.xml b/app/src/main/res/drawable/ic_add_pic.xml deleted file mode 100644 index 9d1e830..0000000 --- a/app/src/main/res/drawable/ic_add_pic.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/app/src/main/res/drawable/ic_camera.xml b/app/src/main/res/drawable/ic_camera.xml new file mode 100644 index 0000000..b612ce9 --- /dev/null +++ b/app/src/main/res/drawable/ic_camera.xml @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_device.xml b/app/src/main/res/drawable/ic_device.xml new file mode 100644 index 0000000..831c4c4 --- /dev/null +++ b/app/src/main/res/drawable/ic_device.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_location.xml b/app/src/main/res/drawable/ic_location.xml new file mode 100644 index 0000000..52e376f --- /dev/null +++ b/app/src/main/res/drawable/ic_location.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_storage.xml b/app/src/main/res/drawable/ic_storage.xml new file mode 100644 index 0000000..898c1cf --- /dev/null +++ b/app/src/main/res/drawable/ic_storage.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_order_in_handle_detail.xml b/app/src/main/res/layout/activity_order_in_handle_detail.xml index f8babbd..8241ac6 100644 --- a/app/src/main/res/layout/activity_order_in_handle_detail.xml +++ b/app/src/main/res/layout/activity_order_in_handle_detail.xml @@ -1,5 +1,6 @@ + android:nestedScrollingEnabled="false" + app:layoutManager="androidx.recyclerview.widget.GridLayoutManager" + app:spanCount="3" /> + android:nestedScrollingEnabled="false" + app:layoutManager="androidx.recyclerview.widget.GridLayoutManager" + app:spanCount="3" /> () { - - private val countLimit = 3 - private var imageData: ArrayList = ArrayList() - - - fun setupImage(images: ArrayList) { - this.imageData = images - notifyDataSetChanged() - } - - fun deleteImage(position: Int) { - try { - if (imageData.size > position) { - imageData.removeAt(position) - notifyItemRemoved(position) - notifyItemRangeChanged(position, imageData.size) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val imageView = ImageView(context) - val screenWidth: Int = - QMUIDisplayHelper.getScreenWidth(context) - QMUIDisplayHelper.dp2px(context, 40) - val margins: Int = QMUIDisplayHelper.dp2px(context, 3) - val itemSize = (screenWidth - 6 * margins) / 3 - val params = LinearLayout.LayoutParams(itemSize, itemSize) - params.setMargins(margins, margins, margins, margins) - params.gravity = Gravity.CENTER - imageView.scaleType = ImageView.ScaleType.CENTER_CROP - imageView.layoutParams = params - return ItemViewHolder(imageView) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - if (position == itemCount - 1 && imageData.size < countLimit) { - holder.imageView.setImageResource(R.drawable.ic_add_pic) - holder.imageView.setOnClickListener { //添加图片 - mOnItemClickListener!!.onAddImageClick() - } - } else { - Glide.with(context).load(imageData[position]).into(holder.imageView) - holder.imageView.setOnClickListener { // 点击操作,查看大图 - mOnItemClickListener!!.onItemClick(position) - } - // 长按监听 - holder.imageView.setOnLongClickListener { v -> //长按删除 - mOnItemClickListener!!.onItemLongClick(v, position) - true - } - } - } - - override fun getItemCount(): Int { - // 满3张图就不让其添加新图 - return if (imageData.size != 0 && imageData.size >= countLimit) { - countLimit - } else { - if (imageData.size == 0) 1 else imageData.size + 1 - } - } - - private var mOnItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - interface OnItemClickListener { - fun onAddImageClick() - fun onItemClick(position: Int) - fun onItemLongClick(view: View?, position: Int) - } - - inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView as ImageView - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt b/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt deleted file mode 100644 index 2cf1634..0000000 --- a/app/src/main/java/com/casic/qd/smartwell/base/BaseActivity.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.qd.smartwell.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.casic.qd.smartwell.R -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.isNetworkConnected -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel - -/** - * 普通页面的基础类 - * */ -abstract class BaseActivity : AppCompatActivity(), CoroutineScope by MainScope() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - if (this.javaClass.simpleName == "SplashScreenActivity" || this.javaClass.simpleName == "LoginActivity") { - //闪屏页和登录页不做网络判断 - setupPage() - } else { - if (this.isNetworkConnected()) { - setupPage() - } else { - "网络好像走丢了~".show(this) - setContentView(R.layout.page_empty) - } - } - PageNavigationManager.addActivity(this) - } - - private fun setupPage() { - setContentView(initLayoutView()) - ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏 - if (this.javaClass.simpleName != "SplashScreenActivity" && this.javaClass.simpleName != "LoginActivity") { - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - } - setupTopBarLayout() - initData() - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData() - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() - - /** - * 取消协程 - * */ - override fun onDestroy() { - cancel() - super.onDestroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt index 3a226ca..c67e61a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.* @@ -15,7 +14,7 @@ * PublicKey校验 */ @GET("/config/baseConfig") - suspend fun obtainPublicKey(): PublicKeyModel + suspend fun authenticate(): String /** * 登录并获取Token @@ -26,7 +25,7 @@ */ @FormUrlEncoded @POST("/user/login") - suspend fun obtainLoginResult( + suspend fun login( @Field("sid") sid: String, @Field("username") account: String, @Field("password") secretKey: String diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt index 8a35a50..237af66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -1,6 +1,5 @@ package com.casic.qd.smartwell.utils.retrofit -import com.casic.qd.smartwell.model.PublicKeyModel import com.casic.qd.smartwell.utils.AuthenticationHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.pengxh.kt.lite.utils.RetrofitFactory @@ -23,15 +22,15 @@ /** * 验证PublicKey */ - suspend fun authenticate(): PublicKeyModel { - return api.obtainPublicKey() + suspend fun authenticate(): String { + return api.authenticate() } /** * 登录并获取Token */ suspend fun login(sid: String, account: String, secretKey: String): String { - return api.obtainLoginResult(sid, account, secretKey) + return api.login(sid, account, secretKey) } /** diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 976811c..85370c5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -6,13 +6,16 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -20,7 +23,7 @@ import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmManagementActivity : BaseActivity() { +class AlarmManagementActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -35,6 +38,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "当前告警" rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index f27d4d3..f9e8fbc 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -6,14 +6,17 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.AlarmListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AlarmListModel import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.SearchResultViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -21,7 +24,7 @@ import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -class AlarmSearchResultActivity : BaseActivity() { +class AlarmSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchAlarmViewModel: SearchResultViewModel @@ -38,6 +41,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "查询结果" } @@ -91,12 +97,14 @@ }) searchAlarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 597e793..40240d5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.view; import android.content.Context +import android.graphics.Color import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -9,10 +10,8 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity -import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.photoview.PhotoView -import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager @@ -20,13 +19,13 @@ import java.util.* -class BigImageActivity : BaseActivity() { +class BigImageActivity : KotlinBaseActivity() { override fun initLayoutView(): Int = R.layout.activity_big_image override fun setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, R.color.black.convertColor(this)) - ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, Color.BLACK) + leftBackView.setOnClickListener { finish() } } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 6e35c09..7660a79 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -2,22 +2,24 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.timestampToLastWeekTime import com.pengxh.kt.lite.extensions.timestampToTime +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_device_data_detail.* import kotlinx.android.synthetic.main.activity_main.rightOptionView import kotlinx.android.synthetic.main.activity_main.titleView -class DeviceDataDetailActivity : BaseActivity() { +class DeviceDataDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDataDetailActivity" private lateinit var deviceCode: String @@ -26,6 +28,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_data_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } deviceCode = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! titleView.text = String.format("${deviceCode}历史数据") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index dc5e200..e681958 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -8,20 +8,21 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.LoginViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import com.qmuiteam.qmui.util.QMUIStatusBarHelper import kotlinx.android.synthetic.main.activity_login.* -// TODO 修改登录逻辑,参考四分公司 -class LoginActivity : BaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel @@ -48,8 +49,8 @@ override fun initLayoutView(): Int = R.layout.activity_login override fun setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this) + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) } override fun initData() { @@ -102,7 +103,7 @@ val dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!) //登录并获取Token,POST请求 - loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey) + loginViewModel.enter(it.data!!.sid!!, account, dataByPublicKey) loginViewModel.resultModel.observe(this, { loginResult -> if (loginResult.code == 200) { AuthenticationHelper.saveToken(loginResult.data!!.token!!) @@ -121,20 +122,15 @@ }) loginViewModel.loadState.observe(this, { loginState -> when (loginState) { - is LoadState.Success -> { - "登录成功".show(this) - DialogHelper.dismissLoadingDialog() + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "登录中,请稍后...") } else -> { - "登录失败,用户名或密码错误".show(this) DialogHelper.dismissLoadingDialog() } } }) } }) - authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index b0f3847..704e484 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -13,7 +13,6 @@ import com.bumptech.glide.Glide import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.HomeRecycleAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.model.LineChartEntryModel @@ -26,7 +25,10 @@ import com.google.android.material.navigation.NavigationView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState @@ -49,7 +51,7 @@ import java.util.* import kotlin.collections.ArrayList -class MainActivity : BaseActivity(), DrawerLayout.DrawerListener, +class MainActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener, NavigationView.OnNavigationItemSelectedListener { private val kTag = "MainActivity" @@ -64,7 +66,23 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = resources.getString(R.string.app_name) + + leftOptionView.setOnClickListener { + if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { + leftDrawerLayout.closeDrawer(GravityCompat.START) + } else { + leftDrawerLayout.openDrawer(GravityCompat.START) + } + } + leftDrawerLayout.addDrawerListener(this) + + rightOptionView.setOnClickListener { + navigatePageTo() + } } override fun initData() { @@ -149,18 +167,13 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) + + waterViewModel.waterStatistics() } override fun initEvent() { - leftOptionView.setOnClickListener { - if (leftDrawerLayout.isDrawerOpen(GravityCompat.START)) { - leftDrawerLayout.closeDrawer(GravityCompat.START) - } else { - leftDrawerLayout.openDrawer(GravityCompat.START) - } - } - leftDrawerLayout.addDrawerListener(this) navigationView.setNavigationItemSelectedListener(this) + loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -169,11 +182,6 @@ } }) - rightOptionView.setOnClickListener { - navigatePageTo() - } - - waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index d6336d6..1ee58ff 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -14,7 +14,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.MapDeviceListModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -22,9 +21,13 @@ import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.obtainScreenWidth import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -38,7 +41,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class MapActivity : BaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class MapActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "MapActivity" @@ -70,8 +73,12 @@ override fun initLayoutView(): Int = R.layout.activity_map override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) rightOptionView.setOnClickListener { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index b386373..809e6c0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,22 +5,24 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_completed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderCompletedDetailActivity : BaseActivity() { +class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -28,6 +30,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index 8653564..76f8077 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -9,41 +9,41 @@ import android.view.View import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderInHandleDetailActivity : BaseActivity() { +class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private val context: Context = this@OrderInHandleDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,6 +52,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -59,16 +62,14 @@ override fun initData() { val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!!//初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) - workOrderViewModel.obtainWorkOrderDetail(jobId) } @@ -240,7 +241,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -274,7 +275,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //处理完成工单状态处理 @@ -330,7 +338,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -393,22 +400,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index fa5a469..483307d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -3,30 +3,36 @@ import androidx.fragment.app.Fragment import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.TopViewPagerAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.fragment.OrderCompletedFragment import com.casic.qd.smartwell.fragment.OrderInHandleFragment import com.casic.qd.smartwell.fragment.OrderNotConfirmedFragment import com.casic.qd.smartwell.fragment.OrderNotProcessedFragment import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_order_management.* import java.util.* -class OrderManagementActivity : BaseActivity() { +class OrderManagementActivity : KotlinBaseActivity() { - private var fragmentList: ArrayList = ArrayList() + private var fragmentPages: ArrayList = ArrayList() init { - fragmentList.add(OrderNotProcessedFragment())//待处理 - fragmentList.add(OrderNotConfirmedFragment())//待确认 - fragmentList.add(OrderInHandleFragment())//处理中 - fragmentList.add(OrderCompletedFragment())//已完成 + fragmentPages.add(OrderNotProcessedFragment())//待处理 + fragmentPages.add(OrderNotConfirmedFragment())//待确认 + fragmentPages.add(OrderInHandleFragment())//处理中 + fragmentPages.add(OrderCompletedFragment())//已完成 } override fun initLayoutView(): Int = R.layout.activity_order_management override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "工单管理" rightOptionView.setOnClickListener { @@ -36,9 +42,9 @@ override fun initData() { val topViewPagerAdapter = TopViewPagerAdapter( - supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentList + supportFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) - orderViewPager.offscreenPageLimit = fragmentList.size + orderViewPager.offscreenPageLimit = fragmentPages.size orderViewPager.adapter = topViewPagerAdapter orderTabLayout.setupWithViewPager(orderViewPager) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index 0b5e1d1..dd87a66 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -8,42 +8,41 @@ import android.util.Log import android.view.View import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.GridLayoutManager import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.adapter.NineGridImageAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.* import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.UploadImageViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.basic.PictureSelector import com.luck.picture.lib.config.SelectMimeType import com.luck.picture.lib.entity.LocalMedia import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.pengxh.kt.lite.adapter.EditableImageAdapter +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class OrderNotConfirmedDetailActivity : BaseActivity() { +class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var operationViewModel: OperationViewModel - private lateinit var imageAdapter: NineGridImageAdapter + private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -52,23 +51,26 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } } override fun initData() { - jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 - imageAdapter = NineGridImageAdapter(this) - addImageRecyclerView.layoutManager = GridLayoutManager(this, 3) + imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter + weakReferenceHandler = WeakReferenceHandler(callback) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(callback) + workOrderViewModel.obtainWorkOrderDetail(jobId) } override fun initEvent() { @@ -93,7 +95,6 @@ } }) - workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -204,7 +205,7 @@ } }) - imageAdapter.setOnItemClickListener(object : NineGridImageAdapter.OnItemClickListener { + imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() } @@ -238,7 +239,14 @@ } }) uploadImageViewModel.loadState.observe(this, { - dismissLoadingDialog() + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } }) //确认工单状态处理 @@ -262,6 +270,7 @@ BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(arrayListOf("拍照", "相册")) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { @@ -293,7 +302,6 @@ .setImageEngine(GlideLoadEngine.instance) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { - showLoadingDialog(context, "图片上传中,请稍后...") if (result == null) { "选择照片失败,请重试".show(context) return @@ -356,22 +364,4 @@ } }) } - - private var loadingDialog: QMUITipDialog? = null - - fun showLoadingDialog(context: Context?, message: String?) { - loadingDialog = QMUITipDialog.Builder(context) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - loadingDialog!!.show() - } - - fun dismissLoadingDialog() { - if (loadingDialog != null) { - if (loadingDialog!!.isShowing) { - loadingDialog!!.dismiss() - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index 63922a1..ac18ef0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,21 +6,24 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Poi import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WellViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class OrderNotProcessedDetailActivity : BaseActivity() { +class OrderNotProcessedDetailActivity : KotlinBaseActivity() { private val context: Context = this@OrderNotProcessedDetailActivity private lateinit var workOrderViewModel: WorkOrderViewModel @@ -30,6 +33,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -147,12 +153,6 @@ } is LoadState.Success -> { DialogHelper.dismissLoadingDialog() - //通知列表刷新数据 -// BroadcastReceiverManager.instance.sendMultiBroadcast( -// Constant.NOT_PROCESSED_ACTION, -// Constant.NOT_CONFIRMED_ACTION, -// Constant.NOT_ACCEPT_ACTION -// ) this.finish() } else -> { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index b051c34..8b95aa8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -7,15 +7,18 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.SearchResultAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.SearchResultModel import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.OperationViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -26,7 +29,7 @@ import okhttp3.RequestBody import org.json.JSONObject -class OrderSearchResultActivity : BaseActivity() { +class OrderSearchResultActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var operationViewModel: OperationViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -42,6 +45,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search_result override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "查询结果" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } @@ -95,12 +101,14 @@ } }) workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt index e5c9f86..f53a0d8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt @@ -1,32 +1,46 @@ package com.casic.qd.smartwell.view -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting +import com.casic.qd.smartwell.R import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : AppCompatActivity(), PermissionCallbacks { +class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - PageNavigationManager.addActivity(this) + override fun initLayoutView(): Int = R.layout.activity_permssion + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) + } + + override fun initData() { //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - EasyPermissions.requestPermissions( - this, - "需要获取相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) + enterMainButton.setOnClickListener { + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) + } } } + override fun initEvent() { + + } + private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) @@ -36,9 +50,7 @@ } override fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray + requestCode: Int, permissions: Array, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt index 5ce9def..edad500 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt @@ -2,21 +2,23 @@ import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder import kotlinx.android.synthetic.main.activity_alarm_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchAlarmActivity : BaseActivity() { +class SearchAlarmActivity : KotlinBaseActivity() { private lateinit var alarmViewModel: AlarmViewModel private lateinit var areaViewModel: AreaViewModel @@ -27,6 +29,9 @@ override fun initLayoutView(): Int = R.layout.activity_alarm_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "告警查询" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt index f994402..a5f6a30 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt @@ -12,7 +12,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceDataListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceDataModel @@ -20,8 +19,12 @@ import com.casic.qd.smartwell.vm.AreaViewModel import com.casic.qd.smartwell.vm.DeviceViewModel import com.casic.qd.smartwell.widgets.BottomAreaSheet +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import kotlinx.android.synthetic.main.activity_data_search.* @@ -34,7 +37,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDataActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDataActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var deviceViewModel: DeviceViewModel @@ -52,6 +55,9 @@ override fun initLayoutView(): Int = R.layout.activity_data_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "数据查询" rightOptionView.setOnClickListener { @@ -68,11 +74,12 @@ weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + //默认加载所有数据 + obtainSearchResult() } override fun initEvent() { - //默认加载所有数据 - obtainSearchResult(pageIndex) deviceViewModel.deviceDataModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -100,12 +107,14 @@ }) deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -114,12 +123,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } areaViewModel.areaModel.observe(this, { @@ -152,7 +161,7 @@ }) } - private fun obtainSearchResult(pageIndex: Int) { + private fun obtainSearchResult() { deviceViewModel.obtainDeviceData(areaId, keywords, pageIndex) } @@ -173,7 +182,7 @@ searchButton.setOnClickListener { keywords = deviceCodeView.text.toString() pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -201,7 +210,8 @@ } else { if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt index cc9cdb2..643a7e1 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt @@ -11,7 +11,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.casic.qd.smartwell.R import com.casic.qd.smartwell.adapter.DeviceListAdapter -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.showEmptyPage import com.casic.qd.smartwell.model.AreaModel import com.casic.qd.smartwell.model.DeviceListModel @@ -25,8 +24,12 @@ import com.casic.qd.smartwell.widgets.BottomAreaSheet import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState @@ -40,7 +43,7 @@ * @date 2022/2/17 14:33 * @email 290677893@qq.com */ -class SearchDeviceActivity : BaseActivity(), DrawerLayout.DrawerListener { +class SearchDeviceActivity : KotlinBaseActivity(), DrawerLayout.DrawerListener { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var searchDeviceViewModel: SearchResultViewModel @@ -66,6 +69,9 @@ override fun initLayoutView(): Int = R.layout.activity_device_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "设备查询" rightOptionView.setOnClickListener { @@ -90,10 +96,11 @@ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + + obtainSearchResult() } override fun initEvent() { - obtainSearchResult(pageIndex) searchDeviceViewModel.deviceResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -121,12 +128,14 @@ }) searchDeviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } } }) @@ -135,12 +144,12 @@ isRefresh = true //刷新之后页码重置 pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() } resultRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - obtainSearchResult(pageIndex) + obtainSearchResult() } //数据监听 @@ -195,7 +204,7 @@ searchButton.setOnClickListener { pageIndex = 1 - obtainSearchResult(pageIndex) + obtainSearchResult() rightDrawerLayout.closeDrawer(GravityCompat.END) } @@ -296,9 +305,9 @@ }) } - private fun obtainSearchResult(page: Int) { + private fun obtainSearchResult() { searchDeviceViewModel.obtainDeviceResult( - keywords, deviceTypeValue, deptId, deviceState, areaId, page + keywords, deviceTypeValue, deptId, deviceState, areaId, pageIndex ) } @@ -309,7 +318,8 @@ } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { - obtainSearchResult(pageIndex) + pageIndex = 1 + obtainSearchResult() } } else { emptyView!!.hide() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt index 430174b..e6e6045 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt @@ -5,23 +5,25 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.AlarmContentModel import com.casic.qd.smartwell.model.OrderStatusModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.AlarmViewModel import com.casic.qd.smartwell.vm.WorkOrderViewModel +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.zhy.view.flowlayout.FlowLayout import com.zhy.view.flowlayout.TagAdapter import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* -class SearchOrderActivity : BaseActivity() { +class SearchOrderActivity : KotlinBaseActivity() { private lateinit var contentTypeViewModel: AlarmViewModel private lateinit var workOrderViewModel: WorkOrderViewModel @@ -37,6 +39,9 @@ override fun initLayoutView(): Int = R.layout.activity_order_search override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "工单查询" leftBackView.visibility = View.VISIBLE leftBackView.setOnClickListener { finish() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt index 3d78bfa..157c5e8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt @@ -5,17 +5,18 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.model.BannerImageModel import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.utils.WebCrawler import com.casic.qd.smartwell.vm.AuthenticateViewModel import com.casic.qd.smartwell.vm.UserDetailViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -class SplashScreenActivity : BaseActivity() { +class SplashScreenActivity : KotlinBaseActivity() { private val kTag = "SplashScreenActivity" private lateinit var userDetailViewModel: UserDetailViewModel @@ -25,7 +26,7 @@ override fun initLayoutView(): Int = R.layout.activity_splash override fun setupTopBarLayout() { - + ImmersionBar.with(this).init() } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt index c87ffd2..bffa1b7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt @@ -5,7 +5,6 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.utils.ChartViewHelper import com.casic.qd.smartwell.utils.LocaleConstant @@ -15,11 +14,11 @@ import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.BarEntry import com.github.mikephil.charting.data.PieEntry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type -import com.pengxh.kt.lite.extensions.obtainQuarterOfYear -import com.pengxh.kt.lite.extensions.timestampToDate -import com.pengxh.kt.lite.extensions.timestampToLastMonthDate -import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_statistics.* import kotlinx.android.synthetic.main.include_base_title.* import java.util.* @@ -30,7 +29,7 @@ * @date 2022/2/17 14:34 * @email 290677893@qq.com */ -class StatisticsActivity : BaseActivity() { +class StatisticsActivity : KotlinBaseActivity() { private val context: Context = this@StatisticsActivity private lateinit var waterViewModel: WaterStatisticsViewModel @@ -40,6 +39,9 @@ override fun initLayoutView(): Int = R.layout.activity_statistics override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "汇总统计" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt index 7818f8e..7e81e6c 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt @@ -5,7 +5,6 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.extensions.* import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.utils.ChartViewHelper @@ -13,14 +12,17 @@ import com.casic.qd.smartwell.vm.WaterStatisticsViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.Entry +import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_water_expanded.* import java.util.* import kotlin.collections.ArrayList -class WaterExpandedActivity : BaseActivity() { +class WaterExpandedActivity : KotlinBaseActivity() { private val kTag = "WaterExpandedActivity" private val context: Context = this@WaterExpandedActivity @@ -29,7 +31,8 @@ override fun initLayoutView(): Int = R.layout.activity_water_expanded override fun setupTopBarLayout() { - + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) } override fun initData() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt index b22a1d9..040202a 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt @@ -5,14 +5,17 @@ import android.webkit.WebView import android.widget.LinearLayout import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.LocaleConstant +import com.gyf.immersionbar.ImmersionBar import com.just.agentweb.AgentWeb import com.just.agentweb.WebViewClient +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.readAssetsFile +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_web.* -class WebsiteActivity : BaseActivity() { +class WebsiteActivity : KotlinBaseActivity() { private lateinit var agentWeb: AgentWeb private lateinit var url: String @@ -20,6 +23,9 @@ override fun initLayoutView(): Int = R.layout.activity_web override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "海洋石油工程有限公司" } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt index 5347d10..69b8b35 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt @@ -3,35 +3,41 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.qd.smartwell.R -import com.casic.qd.smartwell.base.BaseActivity import com.casic.qd.smartwell.utils.DialogHelper import com.casic.qd.smartwell.utils.LocaleConstant import com.casic.qd.smartwell.vm.WellViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_well_detail.* import kotlinx.android.synthetic.main.include_base_title.* -class WellDetailActivity : BaseActivity() { +class WellDetailActivity : KotlinBaseActivity() { private lateinit var wellDetailViewModel: WellViewModel - private lateinit var wellId: String override fun initLayoutView(): Int = R.layout.activity_well_detail override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).init() + ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.setOnClickListener { finish() } titleView.text = "井详情" } override fun initData() { - wellId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + val wellId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! wellDetailViewModel = ViewModelProvider(this).get(WellViewModel::class.java) + + wellDetailViewModel.obtainWellDetail(wellId) } override fun initEvent() { - wellDetailViewModel.obtainWellDetail(wellId) wellDetailViewModel.detailModel.observe(this, { if (it.code == 200) { val wellDetail = it.data!! diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt index fc78392..a512774 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/AlarmViewModel.kt @@ -53,24 +53,12 @@ }) fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int + keywords: String, alarmType: String, areaId: String, alarmContentType: String, + beginTime: String, endTime: String, status: String, page: Int ) = launch({ val response = RetrofitServiceManager.obtainAlarmListByPage( - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - page + keywords, alarmType, areaId, alarmContentType, + beginTime, endTime, status, page ) val responseCode = response.separateResponseCode() if (responseCode == 200) { diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt index 8c13aec..3a3f38e 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/AuthenticateViewModel.kt @@ -15,7 +15,6 @@ import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.BaseViewModel -import com.pengxh.kt.lite.vm.LoadState import org.json.JSONObject class AuthenticateViewModel : BaseViewModel() { @@ -25,8 +24,15 @@ val resultModel = MutableLiveData() fun obtainPublicKey() = launch({ - loadState.value = LoadState.Loading - keyModel.value = RetrofitServiceManager.authenticate() + val response = RetrofitServiceManager.authenticate() + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + keyModel.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.toErrorMessage().show(BaseApplication.obtainInstance()) + } }, { it.printStackTrace() }) diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt index 23e777e..c7f95b4 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/LoginViewModel.kt @@ -18,14 +18,16 @@ private val gson = Gson() val resultModel = MutableLiveData() - fun inn(sid: String, account: String, secretKey: String) = launch({ + fun enter(sid: String, account: String, secretKey: String) = launch({ + loadState.value = LoadState.Loading val response = RetrofitServiceManager.login(sid, account, secretKey) val responseCode = response.separateResponseCode() if (responseCode == 200) { - loadState.value = LoadState.Success resultModel.value = gson.fromJson( response, object : TypeToken() {}.type ) + loadState.value = LoadState.Success + "登录成功".show(BaseApplication.obtainInstance()) } else { loadState.value = LoadState.Fail response.toErrorMessage().show(BaseApplication.obtainInstance()) diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt index d50fa93..ebc951b 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/SearchResultViewModel.kt @@ -21,14 +21,8 @@ val deviceResultModel = MutableLiveData() fun obtainAlarmResult( - keywords: String?, - alarmType: String?, - areaId: String?, - alarmContentType: String?, - beginTime: String?, - endTime: String?, - status: String?, - page: Int + keywords: String?, alarmType: String?, areaId: String?, alarmContentType: String?, + beginTime: String?, endTime: String?, status: String?, page: Int ) = launch({ loadState.value = LoadState.Loading val response = RetrofitServiceManager.obtainAlarmResult( diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt index d47b96e..1a9194d 100644 --- a/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt +++ b/app/src/main/java/com/casic/qd/smartwell/vm/UploadImageViewModel.kt @@ -20,6 +20,7 @@ val resultModel = MutableLiveData() fun uploadImage(image: File) = launch({ + loadState.value = LoadState.Loading val response = RetrofitServiceManager.uploadImage(image) val responseCode = response.separateResponseCode() if (responseCode == 200) { diff --git a/app/src/main/java/com/casic/qd/smartwell/widgets/DateSelectDialog.kt b/app/src/main/java/com/casic/qd/smartwell/widgets/DateSelectDialog.kt index 7e4b8e5..a7bdc5e 100644 --- a/app/src/main/java/com/casic/qd/smartwell/widgets/DateSelectDialog.kt +++ b/app/src/main/java/com/casic/qd/smartwell/widgets/DateSelectDialog.kt @@ -100,7 +100,7 @@ .setType(type) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> val textValue = if (type == Type.ALL) { - millSeconds.timestampToTime() + millSeconds.timestampToCompleteDate() } else { millSeconds.timestampToDate() } @@ -119,7 +119,7 @@ .setType(type) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> val textValue = if (type == Type.ALL) { - millSeconds.timestampToTime() + millSeconds.timestampToCompleteDate() } else { millSeconds.timestampToDate() } diff --git a/app/src/main/res/drawable/ic_add_pic.xml b/app/src/main/res/drawable/ic_add_pic.xml deleted file mode 100644 index 9d1e830..0000000 --- a/app/src/main/res/drawable/ic_add_pic.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/app/src/main/res/drawable/ic_camera.xml b/app/src/main/res/drawable/ic_camera.xml new file mode 100644 index 0000000..b612ce9 --- /dev/null +++ b/app/src/main/res/drawable/ic_camera.xml @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_device.xml b/app/src/main/res/drawable/ic_device.xml new file mode 100644 index 0000000..831c4c4 --- /dev/null +++ b/app/src/main/res/drawable/ic_device.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_location.xml b/app/src/main/res/drawable/ic_location.xml new file mode 100644 index 0000000..52e376f --- /dev/null +++ b/app/src/main/res/drawable/ic_location.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_storage.xml b/app/src/main/res/drawable/ic_storage.xml new file mode 100644 index 0000000..898c1cf --- /dev/null +++ b/app/src/main/res/drawable/ic_storage.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_order_in_handle_detail.xml b/app/src/main/res/layout/activity_order_in_handle_detail.xml index f8babbd..8241ac6 100644 --- a/app/src/main/res/layout/activity_order_in_handle_detail.xml +++ b/app/src/main/res/layout/activity_order_in_handle_detail.xml @@ -1,5 +1,6 @@ + android:nestedScrollingEnabled="false" + app:layoutManager="androidx.recyclerview.widget.GridLayoutManager" + app:spanCount="3" /> + android:nestedScrollingEnabled="false" + app:layoutManager="androidx.recyclerview.widget.GridLayoutManager" + app:spanCount="3" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +