Browse Source

增量包显示图标,SDK更新,食谱步骤笔记输入不了数字修改

zhangshenjie 11 months ago
parent
commit
474e5ed20a

+ 2 - 1
BusinessCommon/src/main/java/com/develop/common/data_repo/db/ModelKit.kt

@@ -61,7 +61,8 @@ enum class ModesType {
     FOOD_PROCESSOR,
     TURBO,
     SM_TURBO,
-    SM_WIGHT
+    SM_WIGHT,
+    CITRUS_JUICER
 }
 
 enum class SettingType {

+ 13 - 2
BusinessCommon/src/main/java/com/develop/common/utils/AppVersionUtil.kt

@@ -14,6 +14,8 @@ import com.blankj.utilcode.util.FileUtils
 import com.blankj.utilcode.util.ZipUtils
 import com.develop.base.ext.fromJson
 import com.develop.base.ext.globalApp
+import com.develop.base.ext.setRecipesList
+import com.develop.base.ext.toJson
 import com.develop.base.util.FileKit
 import com.develop.base.util.GlobalToast
 import com.develop.base.util.MMkvUtils
@@ -45,9 +47,10 @@ import java.io.File
 import java.util.*
 import kotlin.collections.ArrayList
 import kotlin.collections.HashMap
+import kotlin.collections.List
 
 object AppVersionUtil {
-
+    var numberList = mutableListOf<String>()
     fun checkRecipeUpdate(shoNoUpdateDialog: Boolean = false) {
         TopResumedAtyHolder.getCurrentActivity()?.apply {
             scopeNetLife {
@@ -143,6 +146,8 @@ object AppVersionUtil {
                                 object : RecipeUpdateDialog.OnDialogClickListener {
                                     override fun onConfirm() {
                                         updateRecipe = !updateRecipe
+                                        //清掉list的number
+                                        numberList.clear()
 
                                         EventBus.getDefault().post(NoScreenEvent(true))
                                         downloadRecipes(
@@ -188,6 +193,10 @@ object AppVersionUtil {
             FoodDataProvider.getUserDatabase().devConfigDao().recipeVersion() ?: DevVersion(0, 0)
         v.recipeUpdateTime = recipeUpdateTime
         FoodDataProvider.getUserDatabase().devConfigDao().saveDevVersion(v)
+        //存储下载成功食谱的编号
+        var strList = GsonUtils.GsonString(numberList)
+        setRecipesList(strList)
+
     }
 
     @SuppressLint("InvalidWakeLockTag")
@@ -334,6 +343,9 @@ object AppVersionUtil {
                     insertDevRecipeRelTags(contentData.devRecipeRelTags)
                     insertDevRecipeTags(contentData.devRecipeTags)
                     insertDevRecipes(contentData.devRecipes)
+
+                    //作为下载食谱的新标
+                    numberList.add(recipeNumber)
                 }
             }
         } catch (e: Exception) {
@@ -360,7 +372,6 @@ object AppVersionUtil {
                 onDialogClickListener = object : RecipeUpdateDialog.OnDialogClickListener {
                     override fun onConfirm() {
                         saveRecipeUpdateTime(recipeUpdateTime)
-
                         removeSelf()
                     }
 

+ 136 - 0
BusinessCommon/src/main/java/com/develop/common/utils/GsonUtils.java

@@ -0,0 +1,136 @@
+package com.develop.common.utils;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonParser;
+import com.google.gson.reflect.TypeToken;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public class GsonUtils {
+    //不用创建对象,直接使用Gson.就可以调用方法
+    private static Gson gson = null;
+
+    //判断gson对象是否存在了,不存在则创建对象
+    static {
+        if (gson == null) {
+            //gson = new Gson();
+            // 当使用GsonBuilder方式时属性为空的时候输出来的json字符串是有键值key的,显示形式是"key":null,而直接new出来的就没有"key":null的
+            gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
+        }
+    }
+
+    //无参的私有构造方法
+    private GsonUtils() {
+
+    }
+
+    /**
+     * 将对象转成json格式
+     *
+     * @param object
+     * @return String
+     */
+    public static String GsonString(Object object) {
+        String gsonString = null;
+        if (gson != null) {
+            gsonString = gson.toJson(object);
+        }
+        return gsonString;
+    }
+
+    /**
+     * 将json转成特定的cls的对象
+     *
+     * @param gsonString
+     * @return
+     */
+    public static <T> T GsonToBean(String gsonString, Class<T> cls) {
+        T t = null;
+        if (gson != null) {
+            //传入json对象和对象类型,将json转成对象
+            t = gson.fromJson(gsonString, cls);
+        }
+        return t;
+    }
+
+    /**
+     * json字符串转成list
+     *
+     * @param gsonString
+     * @return
+     */
+    public static <T> List<T> GsonToList(String gsonString) {
+        List<T> list = null;
+        if (gson != null) {
+            //根据泛型返回解析指定的类型,TypeToken<List<T>>{}.getType()获取返回类型
+            list = gson.fromJson(gsonString, new TypeToken<List<T>>() {
+            }.getType());
+        }
+        return list;
+    }
+
+    /**
+     * json字符串转成list
+     *
+     * @param json
+     * @return
+     */
+    public static <T> List<T> jsonToList(String json, Class<T> cls) {
+        ArrayList<T> mList = new ArrayList<T>();
+        JsonArray array = new JsonParser().parse(json).getAsJsonArray();
+        for (final JsonElement elem : array) {
+            mList.add(gson.fromJson(elem, cls));
+        }
+        return mList;
+    }
+
+    /**
+     * json字符串转成数组
+     *
+     * @param json
+     * @return
+     */
+    public static Object[] json2ObjectArray(String json, Class cls) {
+        TypeToken<?> array = TypeToken.getArray(cls);
+        Gson gson = new Gson();
+        Object[] objects = gson.fromJson(json, array.getType());
+        return objects;
+    }
+
+    /**
+     * json字符串转成list中有map的
+     *
+     * @param gsonString
+     * @return
+     */
+    public static <T> List<Map<String, T>> GsonToListMaps(String gsonString) {
+        List<Map<String, T>> list = null;
+        if (gson != null) {
+            list = gson.fromJson(gsonString,
+                    new TypeToken<List<Map<String, T>>>() {
+                    }.getType());
+        }
+        return list;
+    }
+
+    /**
+     * json字符串转成map的
+     *
+     * @param gsonString
+     * @return
+     */
+    public static <T> Map<String, T> GsonToMaps(String gsonString) {
+        Map<String, T> map = null;
+        if (gson != null) {
+            map = gson.fromJson(gsonString, new TypeToken<Map<String, T>>() {
+            }.getType());
+        }
+        return map;
+    }
+
+}

+ 31 - 0
BusinessCommon/src/main/java/com/develop/common/utils/NoteEditLayout.kt

@@ -0,0 +1,31 @@
+package com.develop.common.utils
+
+import android.content.Context
+import android.util.AttributeSet
+import android.view.View
+import android.widget.FrameLayout
+import android.widget.RelativeLayout
+import com.develop.common.R
+import com.develop.common.databinding.PopEggsViewBinding
+import com.develop.common.databinding.PopNoteEditBinding
+import com.develop.common.databinding.PopPwdBinding
+import com.develop.common.dialog.PwdDialog
+
+class NoteEditLayout :FrameLayout {
+    private var binding: PopNoteEditBinding
+
+    constructor(context: Context) : super(context) {}
+    constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {}
+    constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(
+        context,
+        attrs,
+        defStyleAttr
+    )
+
+    init {
+        val root = View.inflate(context, R.layout.pop_note_edit, this)
+        binding = PopNoteEditBinding.bind(root)
+    }
+
+
+}

+ 35 - 1
BusinessCommon/src/main/java/com/develop/common/widget/FoodContentView.kt

@@ -17,9 +17,11 @@ import com.bumptech.glide.request.RequestListener
 import com.bumptech.glide.request.target.Target
 import com.develop.base.ext.background_drawable
 import com.develop.base.ext.getSN
+import com.develop.base.ext.isRecipesList
 import com.develop.base.ext.load
 import com.develop.base.ext.navigateTo
 import com.develop.base.ext.resId2Dimension
+import com.develop.base.ext.setRecipesList
 import com.develop.base.ext.skinBackground
 import com.develop.base.ext.skinSrc
 import com.develop.base.ext.src
@@ -35,6 +37,7 @@ import com.develop.common.event.RefreshDataEvent
 import com.develop.common.event.RefreshLikeDataEvent
 import com.develop.common.router.Screens
 import com.develop.common.tag.*
+import com.develop.common.utils.GsonUtils
 import com.drake.net.utils.scope
 import com.drake.net.utils.withMain
 import kotlinx.coroutines.Dispatchers
@@ -61,6 +64,7 @@ class FoodContentView : ConstraintLayout {
     private var mIsFoodList = false
     var mIsHistoryList = false
     private var is033 = false
+    private var numberList  = ""
 
     init {
         val root = View.inflate(context, R.layout.food_content_view, this)
@@ -84,8 +88,30 @@ class FoodContentView : ConstraintLayout {
                         withString(RECIPES_EDITION_TAG, recipesEdition)
                     }
                 }
+
+                if (numberList.contains(mFoodContent?.foodId ?:"00000000")){
+                    //处理更新菜谱的标识 ,点击以后消除更新食谱编号
+                    var list = GsonUtils.GsonToList<String>(numberList)
+                    var strs = ""
+                    if (list.isNotEmpty()){
+                        for (str in list){
+                            if (str.equals(foodId)){
+                                strs = str
+                            }
+                        }
+                        if (strs.isNotEmpty()){
+                            list.remove(strs)
+
+                        }
+                    }
+                    //保存更新食谱数据
+                    setRecipesList(GsonUtils.GsonString(list))
+                    binding.ivContentNew.visibility = View.INVISIBLE
+                }
             }
+
         }
+
         //喜欢点击
         val tintList = resources.getColorStateList(com.develop.common.R.color.color_cook_tab_tint)
         binding.ivNet.drawable?.apply {
@@ -177,6 +203,7 @@ class FoodContentView : ConstraintLayout {
         Log.d("------", "---333---")
         mFoodContent = content
         mIsFoodList = isFoodList
+        numberList = isRecipesList()
 
         val isNetRecipes = content.isNetRecipes
         val hasDownload = content.hasDownloaded
@@ -202,7 +229,6 @@ class FoodContentView : ConstraintLayout {
 
 
             starView.apply {
-
                 if (is033) {
                     starView.visibility = View.INVISIBLE
                 } else {
@@ -229,6 +255,14 @@ class FoodContentView : ConstraintLayout {
                 }
             }
 
+
+            if (numberList.contains(mFoodContent?.foodId ?:"00000000")){
+                ivContentNew.visibility = View.VISIBLE
+            }else{
+                ivContentNew.visibility = View.INVISIBLE
+            }
+
+
         }
 
         binding.starView.setStarCount(content.starCount)

BIN
BusinessCommon/src/main/res/drawable-xxxhdpi/recipe_content_new.png


+ 15 - 0
BusinessCommon/src/main/res/layout/food_content_view.xml

@@ -90,4 +90,19 @@
         android:layout_marginBottom="@dimen/convert_20px"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintStart_toStartOf="parent" />
+
+    <ImageView
+            android:id="@+id/iv_content_new"
+        android:layout_width="@dimen/convert_26px"
+        android:layout_height="@dimen/convert_26px"
+        android:layout_marginStart="@dimen/convert_22px"
+        android:src="@drawable/recipe_content_new"
+        android:visibility="invisible"
+        app:layout_constraintBottom_toBottomOf="parent"
+        android:layout_marginBottom="@dimen/convert_22px"
+        app:layout_constraintLeft_toRightOf="@+id/star_view"
+
+        />
+
+
 </androidx.constraintlayout.widget.ConstraintLayout>

+ 92 - 0
BusinessCommon/src/main/res/layout/pop_note_edit.xml

@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="#4D000000"
+        >
+
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:layout_width="@dimen/convert_550px"
+            android:layout_height="@dimen/convert_360px"
+            android:layout_centerInParent="true"
+            android:layout_gravity="center_horizontal"
+            android:layout_marginTop="@dimen/convert_20px"
+            android:background="@drawable/bg_cook_note">
+
+            <ImageView
+                android:id="@+id/iv_close"
+                android:layout_width="@dimen/convert_60px"
+                android:layout_height="@dimen/convert_60px"
+                android:layout_marginTop="@dimen/convert_10px"
+                android:layout_marginEnd="@dimen/convert_20px"
+                android:padding="@dimen/convert_15px"
+                android:src="@drawable/ic_close"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintTop_toTopOf="parent" />
+
+            <TextView
+                android:id="@+id/tv_note_title"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/convert_40px"
+                android:layout_marginTop="@dimen/convert_20px"
+                android:text="@string/note_title"
+                android:textColor="#E60012"
+                android:textSize="@dimen/convert_30px"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toTopOf="parent" />
+
+            <View
+                android:id="@+id/view_line"
+                android:layout_width="@dimen/convert_755px"
+                android:layout_height="@dimen/convert_1px"
+                android:layout_marginHorizontal="@dimen/convert_40px"
+                android:layout_marginTop="@dimen/convert_20px"
+                android:background="#E4E4E4"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/tv_note_title" />
+
+            <ImageView
+                android:id="@+id/view_edit"
+                android:layout_width="@dimen/convert_60px"
+                android:layout_height="@dimen/convert_60px"
+                android:layout_marginEnd="@dimen/convert_40px"
+                android:layout_marginBottom="@dimen/convert_30px"
+                android:background="@drawable/ic_note_edit"
+                app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintEnd_toEndOf="parent" />
+
+            <ImageView
+                android:id="@+id/view_complete"
+                android:layout_width="@dimen/convert_60px"
+                android:layout_height="@dimen/convert_60px"
+                android:layout_marginEnd="@dimen/convert_26px"
+                android:background="@drawable/ic_note_commit"
+                app:layout_constraintEnd_toStartOf="@+id/view_edit"
+                app:layout_constraintTop_toTopOf="@+id/view_edit" />
+
+            <EditText
+                android:id="@+id/et_note"
+                android:layout_width="match_parent"
+                android:layout_height="0dp"
+                android:layout_marginHorizontal="@dimen/convert_40px"
+                android:layout_marginTop="@dimen/convert_10px"
+                android:background="@null"
+                android:focusable="true"
+                android:focusableInTouchMode="true"
+                android:gravity="start"
+                android:hint="@string/type_your_notes_here"
+                android:imeOptions="actionDone"
+                android:textColor="#6B6B6B"
+                android:textSize="@dimen/convert_30px"
+                app:layout_constraintBottom_toTopOf="@+id/view_complete"
+                app:layout_constraintTop_toBottomOf="@+id/view_line" />
+
+        </androidx.constraintlayout.widget.ConstraintLayout>
+    </RelativeLayout>
+</FrameLayout>

+ 4 - 3
BusinessCommon/src/main/res/layout/pop_pwd.xml

@@ -10,10 +10,11 @@
     android:layout_height="match_parent"
     android:background="#4D000000"
     >
+
     <RelativeLayout
-        android:layout_centerInParent="true"
         android:layout_width="@dimen/convert_500px"
         android:layout_height="wrap_content"
+        android:layout_centerInParent="true"
         android:layout_gravity="center"
         android:background="@drawable/bg_white_button_round10px"
         android:paddingBottom="@dimen/convert_64px">
@@ -37,10 +38,10 @@
             android:layout_marginStart="20dp"
             android:layout_marginTop="20dp"
             android:layout_marginEnd="20dp"
-            android:paddingStart="@dimen/convert_24px"
-            android:paddingEnd="@dimen/convert_24px"
             android:background="@drawable/shape_10pxf4a12e_stoke"
             android:inputType="textPassword"
+            android:paddingStart="@dimen/convert_24px"
+            android:paddingEnd="@dimen/convert_24px"
             android:singleLine="true" />
 
 

+ 14 - 11
BusinessMain/src/main/java/com/develop/main/ui/HomeActivity.kt

@@ -160,9 +160,9 @@ class HomeActivity : CommonBVMActivity<ActivityHomeBinding, HomeViewModel>() {
 
                 override fun onHomeOrBackClick(homeOrBack: HomeOrBack) {
                     if (homeOrBack == HomeOrBack.Home) {
-                        if (isBrand062()){
+                        if (isBrand062()) {
                             navigateTo(Screens.Main.ENTRANCE_CHOSEN_TWO)
-                        }else{
+                        } else {
                             navigateTo(Screens.Main.ENTRANCE_CHOSEN)
 
                         }
@@ -270,8 +270,8 @@ class HomeActivity : CommonBVMActivity<ActivityHomeBinding, HomeViewModel>() {
             }
         }
         //032客户需要隐藏登录和注册
-        if (getGoneLogin()){
-            binding.tvUserName.visibility  = View.GONE
+        if (getGoneLogin()) {
+            binding.tvUserName.visibility = View.GONE
             //头像需要占位显示
             binding.ivAvatar.visibility = View.INVISIBLE
         }
@@ -322,6 +322,8 @@ class HomeActivity : CommonBVMActivity<ActivityHomeBinding, HomeViewModel>() {
     }
 
     override fun onResume() {
+        //需要页面重新打开再拿一次扭橙值,需要再父类前,因为父类重新注册EventBus
+        isResetZero = CofarSDK.devInfo().resetZero.toInt()
         super.onResume()
         wifiHelp.scan()
         val userInfo = FoodDataProvider
@@ -349,7 +351,6 @@ class HomeActivity : CommonBVMActivity<ActivityHomeBinding, HomeViewModel>() {
     }
 
 
-
     override fun dispatchKeyEvent(event: KeyEvent): Boolean {
         var spend = (System.currentTimeMillis() - lastKeyTime);
         if (spend < 10) {
@@ -378,12 +379,12 @@ class HomeActivity : CommonBVMActivity<ActivityHomeBinding, HomeViewModel>() {
 
     override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean {
         if (keyCode == PRESS_DOWN_KEY_CODE) {
-            if (isKeyUP){
+            if (isKeyUP) {
                 isKeyUP = false
-            }else{
+            } else {
                 viewModel.positionRecycle.postValue("PRESS_DOWN_KEY_CODE")
             }
-            return  false
+            return false
         }
         return super.onKeyUp(keyCode, event)
 
@@ -397,7 +398,7 @@ class HomeActivity : CommonBVMActivity<ActivityHomeBinding, HomeViewModel>() {
         /**
          * 当扭橙的值不等于初始化的时候,就需要重新跳转ModesDetails
          * */
-        if (event.devInfo.resetZero.toInt() == 1&&event.devInfo.resetZero.toInt()!=isResetZero) {
+        if (event.devInfo.resetZero.toInt() == 1 && event.devInfo.resetZero.toInt() != isResetZero) {
 
 
             navigateTo(Screens.Cook.COOK_MODES) {
@@ -409,8 +410,10 @@ class HomeActivity : CommonBVMActivity<ActivityHomeBinding, HomeViewModel>() {
                 )
                 with(bundle)
             }
+
         }
-        //由于页面不关闭需要重新复制扭橙控件,避免重复跳转
+
+        //处理扭橙逻辑 一进来是扭橙盖,重新打开,重新闭合 没办法跳转到扭橙页面
         isResetZero = event.devInfo.resetZero.toInt()
 
     }
@@ -420,7 +423,7 @@ class HomeActivity : CommonBVMActivity<ActivityHomeBinding, HomeViewModel>() {
         super.onActivityResult(requestCode, resultCode, data)
         if (requestCode == 50) {
             //处理长按和正常返回的逻辑
-            isKeyUP = data?.getBooleanExtra("type",false) ?:false
+            isKeyUP = data?.getBooleanExtra("type", false) ?: false
         }
     }
 

+ 7 - 2
BusinessMain/src/main/java/com/develop/main/ui/ModeEntranceActivity.kt

@@ -534,7 +534,11 @@ class ModeEntranceActivity : CommonBindingActivity<ActivityModeEntranceBinding>(
 
     override fun onResume() {
         devMode = CofarSDK.devInfo().devMode
+        //需要页面重新打开再拿一次扭橙值,需要再父类前,因为父类重新注册EventBus
+        isResetZero = CofarSDK.devInfo().resetZero.toInt()
         super.onResume()
+
+
         AppVersionUtil.checkRecipeUpdate(false)
 //        UpdateUtil.checkApkVersion(false)
         val userInfo = FoodDataProvider
@@ -634,10 +638,11 @@ class ModeEntranceActivity : CommonBindingActivity<ActivityModeEntranceBinding>(
                 )
                 with(bundle)
             }
+
         }
-        //由于页面不关闭需要重新复制扭橙控件,避免重复跳转
-        isResetZero = event.devInfo.resetZero.toInt()
 
+        //处理扭橙逻辑 一进来是扭橙盖,重新打开,重新闭合 没办法跳转到扭橙页面
+            isResetZero = event.devInfo.resetZero.toInt()
 
     }
 

+ 28 - 4
BusinessStep/src/main/java/com/develop/step/ui/ModesDetailActivity.kt

@@ -264,6 +264,14 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
         if (modeType == WorkModes.CITRUS_JUICER && CofarSDK.devInfo().resetZero.toInt() != 1) {
             showMsgDialog(resources.getString(com.develop.common.R.string.dev_not_orange_parts))
         }
+        /**
+         * 需求:非扭橙模式打开点击运行,且是扭橙的配件时需要提示用户
+         * CofarSDK.devInfo().resetZero.toInt()==1 代表已经是扭橙汁配件
+         * */
+        if (modeType != WorkModes.CITRUS_JUICER && CofarSDK.devInfo().resetZero.toInt() == 1) {
+            showMsgDialog(resources.getString(com.develop.common.R.string.dev_remove_orange_parts))
+        }
+
 
         if (!isNightTheme()) {
             if (workMode == null) {
@@ -711,7 +719,7 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
             return
         }
 
-        Log.d("TAG DevStateEvent", "event:" + event.devInfo.toString())
+//        Log.d("TAG DevStateEvent", "event:" + event.devInfo.toString())
         //由于sdk没有判断E7到E16 需要判断运行和暂停过程中,设备发生故障弹出窗口告知故障
         if ((isClickType == DevStatus.RUNNING.toInt() || isClickType == DevStatus.PAUSE.toInt()
                     || isClickType == DevStatus.STOP.toInt()) && viewModel.modeType != ModesType.WIGHT.name
@@ -725,6 +733,10 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
         }
 
 
+        //处理扭橙逻辑 一进来是扭橙盖,重新打开,重新闭合 没办法跳转到扭橙页面
+        if (event.devInfo.potCloverStatus.toInt() == 1){
+            isResetZero = event.devInfo.resetZero.toInt()
+        }
         //处理扭橙问题 扭橙 resetZero ==1 //普通 resetZero ==0
         /**
          * 当扭橙的值不等于初始化的时候,就需要重新跳转ModesDetails
@@ -755,6 +767,7 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
                  * 由于客户无锅状态下是默认汤锅列表,但是在一进来是空炸锅,拿出来(无锅的时候已经换了汤锅模式),
                  * 但重新放空炸锅,onDevModeChange 是不会回调的,固需要用potCoverType 锅盖协议来判断是否需要重新换模式
                  * */
+                //potCloverStatus 0是合盖,1是没盒盖
                 //potCoverType 0 是汤锅 1是空炸
                 if (event.devInfo.potCloverType.toInt() == 1 && devMode == DevModes.SOUP) {
                     CofarSDK.changeDevModeFocus(DevModes.AIR_FRYER)
@@ -1254,8 +1267,13 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
         binding.ivTurboView.setOnTouchListener { view, motionEvent ->
             when (motionEvent.action) {
                 MotionEvent.ACTION_DOWN -> {
-                    Log.d("dddddd", "按下(${motionEvent.x},${motionEvent.y})")
-                    turboDownEvent()
+                    if (modeType != WorkModes.CITRUS_JUICER && CofarSDK.devInfo().resetZero.toInt() == 1) {
+                        showMsgDialog(resources.getString(com.develop.common.R.string.dev_remove_orange_parts))
+                    }else{
+                        Log.d("dddddd", "按下(${motionEvent.x},${motionEvent.y})")
+                        turboDownEvent()
+                    }
+
                 }
 
                 MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> {
@@ -1294,6 +1312,8 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
             if (viewModel.modeType == ModesType.TURBO.name) {
                 binding.llTurboView.visibility = View.VISIBLE
             }
+        }else if (viewModel.modeType == ModesType.CITRUS_JUICER.name){
+            binding.ivTurbo.visibility = View.GONE
         } else {
 //            isWidget = true
             binding.ivWeight.visibility = View.VISIBLE
@@ -1911,7 +1931,11 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
             DevStatus.STOP -> {
                 binding.apply {
                     ivWeight.visibility = View.VISIBLE
-                    ivTurbo.visibility = View.VISIBLE
+                    if (viewModel.modeType == ModesType.CITRUS_JUICER.name){
+                        binding.ivTurbo.visibility = View.GONE
+                    }else{
+                        ivTurbo.visibility = View.VISIBLE
+                    }
                     visibilityEgg(View.VISIBLE)
                     btnStop.visibility = View.INVISIBLE
                     btnStart.visibility = View.VISIBLE

+ 0 - 5
BusinessStep/src/main/java/com/develop/step/ui/cook_step/CookStepActivity.kt

@@ -141,11 +141,6 @@ class CookStepActivity : CookStepBaseActivity() {
         isModelNum = getModelNum()
 
 
-        for (activity in AppActivityManager.getInstance().activityList()) {
-
-            Log.e("TAG ASDASD", "ACITIVITY :" + activity.localClassName)
-
-        }
         if (!isNightTheme()) {
             if (is062) {
                 binding.viewChangeCrush.setBgColor(R.color.view_change_062)

+ 118 - 39
BusinessStep/src/main/java/com/develop/step/ui/cook_step/CookStepBaseActivity.kt

@@ -7,13 +7,20 @@ import android.os.Bundle
 import android.text.method.ScrollingMovementMethod
 import android.util.Log
 import android.view.GestureDetector
+import android.view.Gravity
 import android.view.LayoutInflater
 import android.view.MotionEvent
 import android.view.View
 import android.view.View.OnScrollChangeListener
+import android.view.WindowManager
 import android.view.animation.LinearInterpolator
+import android.widget.EditText
+import android.widget.FrameLayout
+import android.widget.ImageView
+import android.widget.PopupWindow
 import android.widget.TextView
 import androidx.core.graphics.drawable.DrawableCompat
+import androidx.databinding.ViewDataBinding
 import com.alibaba.android.arouter.facade.annotation.Autowired
 import com.alibaba.android.arouter.launcher.ARouter
 import com.develop.base.ext.background_drawable
@@ -26,6 +33,7 @@ import com.develop.base.ext.src
 import com.develop.base.ext.text_color
 import com.develop.base.ext.updateText
 import com.develop.base.util.ThreadUtils
+import com.develop.base.widgets.CommonPopupWindow
 import com.develop.common.dialog.CancelConfirmDialog
 import com.develop.common.ui.CommonBVMActivity
 import com.develop.common.widget.CookProgressDrawable
@@ -38,7 +46,9 @@ import com.develop.common.data_repo.db.entity.UserRecipeStepRemark
 import com.develop.common.dialog.NoteEditDialog
 import com.develop.common.tag.CURRENT_USER_ID
 import com.develop.common.utils.ConfigUtils
+import com.develop.common.utils.NoteEditLayout
 import com.develop.common.widget.BCustomerLinearLayout
+import com.develop.common.widget.PwdLayout
 import com.develop.step.databinding.ActivityCookStepBaseBinding
 import com.develop.step.viewmodel.CookStepViewModel
 import com.kuyuntech.cofarcooking.device.sdk.constant.core.DevStatus
@@ -122,6 +132,9 @@ abstract class CookStepBaseActivity :
     private val FLING_MIN_DISTANCE = 50
     private val FLING_MIN_VELOCITY = 0
 
+
+
+
     @SuppressLint("ClickableViewAccessibility")
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
@@ -143,45 +156,53 @@ abstract class CookStepBaseActivity :
 //            }
 //        }
         binding.viewRemark.setOnClickListener {
-            Log.i(
-                "dd",
-                CURRENT_USER_ID.toString() + recipeNumber.toString() + currentStepIndex.toString()
-            );
-            var data = FoodDataProvider.getUserDatabase().userInfoDao().queryUserRecipeStepRemark(
-                CURRENT_USER_ID, recipeNumber.toString(), viewModel.stepIndex.toString()
-            );
-            var dialog = NoteEditDialog();
-            dialog.text = data?.remark
-            dialog.listener = object : NoteEditDialog.OnDialogClickListener {
-                override fun onComplete(remark: String) {
-                    viewModel.recipe?.let {
-
-
-                        if (data == null) {
-                            data = UserRecipeStepRemark(
-                                recipeNumber = it.number.toString(),
-                                stepNumber = viewModel.stepIndex.toString(),
-                                userId = CURRENT_USER_ID,
-                                remark = remark
-                            )
-                        } else {
-                            data!!.remark = remark;
-                        }
-
-                        FoodDataProvider.getUserDatabase().userInfoDao().insertUserRecipeStepRemark(
-                            data!!
-                        );
-
 
-                    }
-
-                }
-
-                override fun onClear() {
-                }
-
-            }
-            dialog.showDialog(supportFragmentManager, "NoteEditDialog")
+            //由于NoteEditDialog的数字输入不了,估换了pop来输入
+
+            var pop = popNoteEdit()
+            pop.inputMethodMode = PopupWindow.INPUT_METHOD_NEEDED
+            pop.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE
+            pop.showAtLocation(binding.cookStepLayout, Gravity.CENTER, 0, 0)
+
+
+//            Log.i(
+//                "dd",
+//                CURRENT_USER_ID.toString() + recipeNumber.toString() + currentStepIndex.toString()
+//            );
+//            var data = FoodDataProvider.getUserDatabase().userInfoDao().queryUserRecipeStepRemark(
+//                CURRENT_USER_ID, recipeNumber.toString(), viewModel.stepIndex.toString()
+//            );
+//            var dialog = NoteEditDialog();
+//            dialog.text = data?.remark
+//            dialog.listener = object : NoteEditDialog.OnDialogClickListener {
+//                override fun onComplete(remark: String) {
+//                    viewModel.recipe?.let {
+//                        if (data == null) {
+//                            data = UserRecipeStepRemark(
+//                                recipeNumber = it.number.toString(),
+//                                stepNumber = viewModel.stepIndex.toString(),
+//                                userId = CURRENT_USER_ID,
+//                                remark = remark
+//                            )
+//                        } else {
+//                            data!!.remark = remark;
+//                        }
+//
+//                        FoodDataProvider.getUserDatabase().userInfoDao().insertUserRecipeStepRemark(
+//                            data!!
+//                        );
+//
+//
+//                    }
+//
+//
+//                }
+//
+//                override fun onClear() {
+//                }
+//
+//            }
+//            dialog.showDialog(supportFragmentManager, "NoteEditDialog")
         }
 
         if (isNightTheme()) {
@@ -195,7 +216,7 @@ abstract class CookStepBaseActivity :
             }
         } else {
             binding.viewRemark.src = R.drawable.ic_cooking_remark
-            if (is062||is011) {
+            if (is062 || is011) {
             } else {
                 binding.viewRemark.drawable?.apply {
                     DrawableCompat.setTint(this, resources.getColor(R.color.white))
@@ -373,6 +394,7 @@ abstract class CookStepBaseActivity :
         binding.ivTurboView.visibility = View.GONE
         binding.tvStepWarning.visibility = View.GONE
     }
+
     fun changeWarning() {
         isWidget = false
         binding.tvStepWarning.visibility = View.VISIBLE
@@ -727,4 +749,61 @@ abstract class CookStepBaseActivity :
             }
     }
 
+
+    private fun popNoteEdit() :PopupWindow {
+        var noteEditPopupWindow =
+            CommonPopupWindow.ViewBuilder<NoteEditLayout>()
+                .width(FrameLayout.LayoutParams.MATCH_PARENT)
+                .height(FrameLayout.LayoutParams.MATCH_PARENT)
+                .outsideTouchable(false).focusable(true).alpha(0.8f)
+                .view(NoteEditLayout(this)).intercept { popupWindow, view ->
+                }.onShowBefore { popupWindow, view ->
+                    var data =
+                        FoodDataProvider.getUserDatabase().userInfoDao().queryUserRecipeStepRemark(
+                            CURRENT_USER_ID, recipeNumber.toString(), viewModel.stepIndex.toString()
+                        );
+                    var remark = data?.remark ?: ""
+                    var edit = view.findViewById<EditText>(com.develop.common.R.id.et_note)
+                    edit.setText(remark)
+                    var viewComplete =
+                        view.findViewById<ImageView>(com.develop.common.R.id.view_complete)
+                    var viewEdit = view.findViewById<ImageView>(com.develop.common.R.id.view_edit)
+                    var ivClose = view.findViewById<ImageView>(com.develop.common.R.id.iv_close)
+                    ivClose.setImageResource(R.drawable.ic_close)
+                    viewComplete.setOnClickListener {
+                        remark = edit.text.toString()
+                        viewModel.recipe?.let {
+                            if (data == null) {
+                                data = UserRecipeStepRemark(
+                                    recipeNumber = it.number.toString(),
+                                    stepNumber = viewModel.stepIndex.toString(),
+                                    userId = CURRENT_USER_ID,
+                                    remark = remark
+                                )
+                            } else {
+                                data!!.remark = remark;
+                            }
+
+                            FoodDataProvider.getUserDatabase().userInfoDao()
+                                .insertUserRecipeStepRemark(
+                                    data!!
+                                )
+                            popupWindow.dismiss()
+
+                        }
+                    }
+                    viewEdit.setOnClickListener {
+                        edit.text.clear()
+                    }
+                    ivClose.setOnClickListener {
+                        popupWindow.dismiss()
+                    }
+
+                }.onDismissListener {
+                }.build<ViewDataBinding>(this)
+
+
+        return noteEditPopupWindow
+    }
+
 }

+ 12 - 7
BusinessStep/src/main/java/com/develop/step/ui/recipes_detail/CookDetailActivity.kt

@@ -3,6 +3,7 @@ package com.develop.step.ui.recipes_detail
 import android.annotation.SuppressLint
 import android.graphics.Color
 import android.os.Bundle
+import android.util.Log
 import android.view.LayoutInflater
 import android.view.View
 import androidx.constraintlayout.widget.ConstraintLayout
@@ -29,6 +30,7 @@ import com.develop.common.dialog.ShareQRCodeDialog
 import com.develop.common.event.RefreshDataEvent
 import com.develop.common.event.RefreshLikeDataEvent
 import com.develop.common.tag.CURRENT_LANGUAGE
+import com.develop.common.tag.LOGIN_TAG
 import com.develop.common.tag.MODE_TYPE
 import com.develop.common.utils.setLeftDrawable
 import com.develop.step.databinding.ActivityCookDetailBinding
@@ -102,6 +104,7 @@ class CookDetailActivity : CommonBVMActivity<ActivityCookDetailBinding, CookDeta
         is062 = isBrand062()
         is011 = isBrand011A()
         isResetZero = CofarSDK.devInfo().resetZero.toInt()
+        Log.e("TAG cookDetail", "number:$recipeNumber")
         initView()
         initData()
         initListener()
@@ -157,7 +160,7 @@ class CookDetailActivity : CommonBVMActivity<ActivityCookDetailBinding, CookDeta
             binding.tvEasy.visibility = View.VISIBLE
         }
 
-        if (getSN().startsWith("033F")||getSN().startsWith("033G")) {
+        if (getSN().startsWith("033F") || getSN().startsWith("033G")) {
             binding.startLayout.visibility = View.INVISIBLE
             binding.tvMoreScore.visibility = View.GONE
         }
@@ -236,7 +239,7 @@ class CookDetailActivity : CommonBVMActivity<ActivityCookDetailBinding, CookDeta
             it.add(binding.viewIcon1)
             it.add(binding.viewIcon2)
             it.add(binding.tvFoodTime)
-            if (!(getSN().startsWith("033F")||getSN().startsWith("033G"))) {
+            if (!(getSN().startsWith("033F") || getSN().startsWith("033G"))) {
                 it.add(binding.startLayout)
             }
         }
@@ -401,7 +404,6 @@ class CookDetailActivity : CommonBVMActivity<ActivityCookDetailBinding, CookDeta
     }
 
 
-
     @Subscribe(threadMode = ThreadMode.MAIN)
     fun onDevStateEvent(event: DevStatusEvent) {
 
@@ -409,7 +411,7 @@ class CookDetailActivity : CommonBVMActivity<ActivityCookDetailBinding, CookDeta
         /**
          * 当扭橙的值不等于初始化的时候,就需要重新跳转ModesDetails
          * */
-        if (event.devInfo.resetZero.toInt() == 1&&event.devInfo.resetZero.toInt()!=isResetZero) {
+        if (event.devInfo.resetZero.toInt() == 1 && event.devInfo.resetZero.toInt() != isResetZero) {
 
 
             navigateTo(Screens.Cook.COOK_MODES) {
@@ -421,13 +423,14 @@ class CookDetailActivity : CommonBVMActivity<ActivityCookDetailBinding, CookDeta
                 )
                 with(bundle)
             }
+
         }
-        //由于页面不关闭需要重新复制扭橙控件,避免重复跳转
-        isResetZero = event.devInfo.resetZero.toInt()
 
-    }
+        //处理扭橙逻辑 一进来是扭橙盖,重新打开,重新闭合 没办法跳转到扭橙页面
+        isResetZero = event.devInfo.resetZero.toInt()
 
 
+    }
 
 
     private fun selectTab(tab: Int) {
@@ -559,6 +562,8 @@ class CookDetailActivity : CommonBVMActivity<ActivityCookDetailBinding, CookDeta
     }
 
     override fun onResume() {
+        //需要页面重新打开再拿一次扭橙值,需要再父类前,因为父类重新注册EventBus
+        isResetZero = CofarSDK.devInfo().resetZero.toInt()
         super.onResume()
         viewModel.getStarCount(recipeNumber ?: "")
         viewModel.queryRecipe(

+ 3 - 1
BusinessStep/src/main/res/layout/activity_cook_step_base.xml

@@ -4,7 +4,9 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:background="@color/bg_color">
+    android:background="@color/bg_color"
+    android:id="@+id/cook_step_layout"
+    >
 
     <androidx.constraintlayout.widget.ConstraintLayout
         android:id="@+id/cl_status_bar"

+ 2 - 2
app/build.gradle

@@ -12,8 +12,8 @@ ext {
 
     versionCode = Integer.parseInt(new SimpleDateFormat("yyMMddHH").format(new Date()) + 1)
 //    versionCode=230617180
-//    brandCode="000A"
-    brandCode = "000A"
+    brandCode="000A"
+//    brandCode = "010F"
     model = "1039"
 
 }

+ 11 - 2
libBase/src/main/java/com/develop/base/ext/GlobaExt.kt

@@ -206,9 +206,9 @@ fun getSN(): String {
 
     if (BuildConfig.DEBUG) {
 //        return "045A21030020123010190001"
-    return "000A30150020123010190001"
+//        return "000A30150020123010190001"
 //     return "002A30150020123010190001"
-//     return "000A10390020123010190001"
+     return "000A10390020123010190001"
 //        return "000A50670020123010190005"
 //    return "010D10390020123010190001"
 //        return "010F10390020123010190001"
@@ -356,6 +356,15 @@ fun isBrand011A(): Boolean {
     return MMkvUtils.getBool("is011A", false)
 }
 
+fun setRecipesList(recipesList: String) {
+    MMkvUtils.save("recipesList", recipesList)
+}
+
+fun isRecipesList(): String {
+    return MMkvUtils.getString("recipesList") ?: ""
+}
+
+
 fun setIsBrand054A(is054A: Boolean) {
     MMkvUtils.save("is054A", is054A)
 }

BIN
libThirdPart/libs/cofar-cooking-device-sdk-0.0.1-SNAPSHOT.jar