Browse Source

提交人:jtm
提交内容:bug fix

江天明 1 year ago
parent
commit
5be3fbc52e

+ 2 - 1
BusinessCommon/src/main/java/com/develop/common/ui/CommonBindingActivity.kt

@@ -28,6 +28,7 @@ import com.develop.common.tag.SCREENSAVER
 import com.develop.common.utils.TimeDownUtil
 import com.kuyuntech.cofarcooking.device.sdk.eventbus.event.DevPromptEvent
 import me.jessyan.autosize.AutoSizeCompat
+import org.alee.component.skin.service.ThemeSkinService
 import org.greenrobot.eventbus.EventBus
 import org.greenrobot.eventbus.Subscribe
 
@@ -61,7 +62,7 @@ abstract class CommonBindingActivity<T : ViewBinding> : BaseBindingActivity<T>()
     override fun onCreate(savedInstanceState: Bundle?) {
         EventBus.getDefault().register(this)
         super.onCreate(savedInstanceState)
-
+        ThemeSkinService.getInstance().switchThemeSkin(1)
 
         screenReceiver = object : BroadcastReceiver() {
             override fun onReceive(context: Context, intent: Intent) {

+ 57 - 0
BusinessCommon/src/main/java/com/develop/common/utils/compat/CategoryTabViewLayoutCompat.java

@@ -0,0 +1,57 @@
+package com.develop.common.utils.compat;
+
+import android.content.Context;
+import android.text.TextUtils;
+import android.util.AttributeSet;
+import android.view.View;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.develop.common.widget.CategoryTabViewLayout;
+import com.scwang.smart.refresh.footer.ClassicsFooter;
+
+import org.alee.component.skin.factory2.IExpandedFactory2;
+import org.alee.component.skin.service.ThemeSkinService;
+
+/**
+ * 摘要
+ *
+ * <p> 详细描述
+ *
+ * @author MingYu.Liu
+ * created in 2022/9/26
+ */
+public class CategoryTabViewLayoutCompat {
+
+    public static void init() {
+        ThemeSkinService.getInstance().getCreateViewInterceptor().add(new CategoryTabViewLayoutFactory());
+    }
+
+
+    private static class CategoryTabViewLayoutFactory implements IExpandedFactory2 {
+
+        /**
+         * {@link RecyclerView} 类名
+         */
+        private final static String CLASS_NAME = CategoryTabViewLayout.class.getName();
+
+        /**
+         * 创建View
+         *
+         * @param originalView 上一个IExpandedFactory生成的View
+         * @param parent       父View
+         * @param name         名称
+         * @param context      {@link Context}
+         * @param attrs        {@link AttributeSet}
+         *
+         * @return 生成的View
+         */
+        @NonNull
+        @Override
+        public View onCreateView(@Nullable View originalView, @Nullable View parent, @NonNull String name, @NonNull Context context, @NonNull AttributeSet attrs) {
+            return TextUtils.equals(CLASS_NAME, name) ? new CategoryTabViewLayout(context, attrs) : originalView;
+        }
+    }
+}

+ 56 - 0
BusinessCommon/src/main/java/com/develop/common/utils/compat/ClassicsFooterCompat.java

@@ -0,0 +1,56 @@
+package com.develop.common.utils.compat;
+
+import android.content.Context;
+import android.text.TextUtils;
+import android.util.AttributeSet;
+import android.view.View;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.scwang.smart.refresh.footer.ClassicsFooter;
+
+import org.alee.component.skin.factory2.IExpandedFactory2;
+import org.alee.component.skin.service.ThemeSkinService;
+
+/**
+ * 摘要
+ *
+ * <p> 详细描述
+ *
+ * @author MingYu.Liu
+ * created in 2022/9/26
+ */
+public class ClassicsFooterCompat {
+
+    public static void init() {
+        ThemeSkinService.getInstance().getCreateViewInterceptor().add(new ClassicsFooterFactory());
+    }
+
+
+    private static class ClassicsFooterFactory implements IExpandedFactory2 {
+
+        /**
+         * {@link RecyclerView} 类名
+         */
+        private final static String CLASS_NAME = ClassicsFooter.class.getName();
+
+        /**
+         * 创建View
+         *
+         * @param originalView 上一个IExpandedFactory生成的View
+         * @param parent       父View
+         * @param name         名称
+         * @param context      {@link Context}
+         * @param attrs        {@link AttributeSet}
+         *
+         * @return 生成的View
+         */
+        @NonNull
+        @Override
+        public View onCreateView(@Nullable View originalView, @Nullable View parent, @NonNull String name, @NonNull Context context, @NonNull AttributeSet attrs) {
+            return TextUtils.equals(CLASS_NAME, name) ? new ClassicsFooter(context, attrs) : originalView;
+        }
+    }
+}

+ 57 - 0
BusinessCommon/src/main/java/com/develop/common/utils/compat/FoodContentViewCompat.java

@@ -0,0 +1,57 @@
+package com.develop.common.utils.compat;
+
+import android.content.Context;
+import android.text.TextUtils;
+import android.util.AttributeSet;
+import android.view.View;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.develop.common.widget.FoodContentView;
+import com.scwang.smart.refresh.footer.ClassicsFooter;
+
+import org.alee.component.skin.factory2.IExpandedFactory2;
+import org.alee.component.skin.service.ThemeSkinService;
+
+/**
+ * 摘要
+ *
+ * <p> 详细描述
+ *
+ * @author MingYu.Liu
+ * created in 2022/9/26
+ */
+public class FoodContentViewCompat {
+
+    public static void init() {
+        ThemeSkinService.getInstance().getCreateViewInterceptor().add(new FoodContentViewFactory());
+    }
+
+
+    private static class FoodContentViewFactory implements IExpandedFactory2 {
+
+        /**
+         * {@link RecyclerView} 类名
+         */
+        private final static String CLASS_NAME = FoodContentView.class.getName();
+
+        /**
+         * 创建View
+         *
+         * @param originalView 上一个IExpandedFactory生成的View
+         * @param parent       父View
+         * @param name         名称
+         * @param context      {@link Context}
+         * @param attrs        {@link AttributeSet}
+         *
+         * @return 生成的View
+         */
+        @NonNull
+        @Override
+        public View onCreateView(@Nullable View originalView, @Nullable View parent, @NonNull String name, @NonNull Context context, @NonNull AttributeSet attrs) {
+            return TextUtils.equals(CLASS_NAME, name) ? new FoodContentView(context, attrs) : originalView;
+        }
+    }
+}

+ 54 - 0
BusinessCommon/src/main/java/com/develop/common/utils/compat/RecyclerViewCompat.java

@@ -0,0 +1,54 @@
+package com.develop.common.utils.compat;
+
+import android.content.Context;
+import android.text.TextUtils;
+import android.util.AttributeSet;
+import android.view.View;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.RecyclerView;
+
+import org.alee.component.skin.factory2.IExpandedFactory2;
+import org.alee.component.skin.service.ThemeSkinService;
+
+/**
+ * 摘要
+ *
+ * <p> 详细描述
+ *
+ * @author MingYu.Liu
+ * created in 2022/9/26
+ */
+public class RecyclerViewCompat {
+
+    public static void init() {
+        ThemeSkinService.getInstance().getCreateViewInterceptor().add(new RecyclerViewFactory());
+    }
+
+
+    private static class RecyclerViewFactory implements IExpandedFactory2 {
+
+        /**
+         * {@link RecyclerView} 类名
+         */
+        private final static String CLASS_NAME = RecyclerView.class.getName();
+
+        /**
+         * 创建View
+         *
+         * @param originalView 上一个IExpandedFactory生成的View
+         * @param parent       父View
+         * @param name         名称
+         * @param context      {@link Context}
+         * @param attrs        {@link AttributeSet}
+         *
+         * @return 生成的View
+         */
+        @NonNull
+        @Override
+        public View onCreateView(@Nullable View originalView, @Nullable View parent, @NonNull String name, @NonNull Context context, @NonNull AttributeSet attrs) {
+            return TextUtils.equals(CLASS_NAME, name) ? new RecyclerView(context, attrs) : originalView;
+        }
+    }
+}

+ 56 - 0
BusinessCommon/src/main/java/com/develop/common/utils/compat/SmartRefreshLayoutCompat.java

@@ -0,0 +1,56 @@
+package com.develop.common.utils.compat;
+
+import android.content.Context;
+import android.text.TextUtils;
+import android.util.AttributeSet;
+import android.view.View;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.scwang.smart.refresh.layout.SmartRefreshLayout;
+
+import org.alee.component.skin.factory2.IExpandedFactory2;
+import org.alee.component.skin.service.ThemeSkinService;
+
+/**
+ * 摘要
+ *
+ * <p> 详细描述
+ *
+ * @author MingYu.Liu
+ * created in 2022/9/26
+ */
+public class SmartRefreshLayoutCompat {
+
+    public static void init() {
+        ThemeSkinService.getInstance().getCreateViewInterceptor().add(new SmartRefreshLayoutFactory());
+    }
+
+
+    private static class SmartRefreshLayoutFactory implements IExpandedFactory2 {
+
+        /**
+         * {@link RecyclerView} 类名
+         */
+        private final static String CLASS_NAME = SmartRefreshLayout.class.getName();
+
+        /**
+         * 创建View
+         *
+         * @param originalView 上一个IExpandedFactory生成的View
+         * @param parent       父View
+         * @param name         名称
+         * @param context      {@link Context}
+         * @param attrs        {@link AttributeSet}
+         *
+         * @return 生成的View
+         */
+        @NonNull
+        @Override
+        public View onCreateView(@Nullable View originalView, @Nullable View parent, @NonNull String name, @NonNull Context context, @NonNull AttributeSet attrs) {
+            return TextUtils.equals(CLASS_NAME, name) ? new SmartRefreshLayout(context, attrs) : originalView;
+        }
+    }
+}

+ 57 - 0
BusinessCommon/src/main/java/com/develop/common/utils/compat/StartViewCompat.java

@@ -0,0 +1,57 @@
+package com.develop.common.utils.compat;
+
+import android.content.Context;
+import android.text.TextUtils;
+import android.util.AttributeSet;
+import android.view.View;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.develop.common.widget.StarView;
+import com.scwang.smart.refresh.footer.ClassicsFooter;
+
+import org.alee.component.skin.factory2.IExpandedFactory2;
+import org.alee.component.skin.service.ThemeSkinService;
+
+/**
+ * 摘要
+ *
+ * <p> 详细描述
+ *
+ * @author MingYu.Liu
+ * created in 2022/9/26
+ */
+public class StartViewCompat {
+
+    public static void init() {
+        ThemeSkinService.getInstance().getCreateViewInterceptor().add(new StartViewFactory());
+    }
+
+
+    private static class StartViewFactory implements IExpandedFactory2 {
+
+        /**
+         * {@link RecyclerView} 类名
+         */
+        private final static String CLASS_NAME = StarView.class.getName();
+
+        /**
+         * 创建View
+         *
+         * @param originalView 上一个IExpandedFactory生成的View
+         * @param parent       父View
+         * @param name         名称
+         * @param context      {@link Context}
+         * @param attrs        {@link AttributeSet}
+         *
+         * @return 生成的View
+         */
+        @NonNull
+        @Override
+        public View onCreateView(@Nullable View originalView, @Nullable View parent, @NonNull String name, @NonNull Context context, @NonNull AttributeSet attrs) {
+            return TextUtils.equals(CLASS_NAME, name) ? new StarView(context, attrs) : originalView;
+        }
+    }
+}

+ 2 - 1
BusinessCommon/src/main/java/com/develop/common/widget/StarView.kt

@@ -5,6 +5,7 @@ import android.util.AttributeSet
 import android.view.View
 import android.widget.LinearLayout
 import com.develop.base.ext.load
+import com.develop.base.ext.text_color
 import com.develop.base.ext.updateText
 import com.develop.common.R
 import com.develop.common.databinding.StarViewBinding
@@ -72,6 +73,6 @@ class StarView : LinearLayout {
     }
 
     fun setCommentTextColorGray() {
-        binding.tvNumber.setTextColor(resources.getColor(R.color.color_A3A3A2))
+        binding.tvNumber.text_color = resources.getColor(R.color.color_A3A3A2)
     }
 }

BIN
BusinessCommon/src/main/res/drawable-xxxhdpi/ic_grid_ferment.webp


+ 1 - 0
BusinessMain/src/main/java/com/develop/main/ui/ModeEntranceActivity.kt

@@ -31,6 +31,7 @@ import com.drake.brv.utils.linear
 import com.drake.brv.utils.models
 import com.drake.brv.utils.setup
 import com.smarx.notchlib.utils.ScreenUtil
+import org.alee.component.skin.service.ThemeSkinService
 
 @Route(path = Screens.Main.ENTRANCE_CHOSEN)
 class ModeEntranceActivity : CommonBindingActivity<ActivityModeEntranceBinding>() {

+ 15 - 9
BusinessMain/src/main/java/com/develop/main/ui/RecipesFragment.kt

@@ -21,6 +21,7 @@ import com.develop.base.ext.navigateTo
 import com.develop.base.ext.resId2Dimension
 import com.develop.base.ext.text_color
 import com.develop.base.ext.updateText
+import com.develop.base.util.GlobalToast
 import com.develop.base.widgets.CommonPopupWindow
 import com.develop.common.data_repo.db.*
 import com.develop.common.data_repo.db.entity.DevRecipeCategory
@@ -69,7 +70,7 @@ class RecipesFragment : CommonBVMFragment<FragmentCommeListBinding, HomeViewMode
 
             }.onShowBefore { popupWindow, view ->
                 filterRv = view.findViewById(com.develop.common.R.id.filter_recycle)
-                val triangle:View = view.findViewById(com.develop.common.R.id.triangle)
+                val triangle: View = view.findViewById(com.develop.common.R.id.triangle)
                 val param = triangle.layoutParams as RelativeLayout.LayoutParams
                 param.marginStart = dp65
                 triangle.layoutParams = param
@@ -93,7 +94,7 @@ class RecipesFragment : CommonBVMFragment<FragmentCommeListBinding, HomeViewMode
             .intercept { popupWindow, view ->
 
             }.onShowBefore { popupWindow, view ->
-                val triangle:View = view.findViewById(com.develop.common.R.id.triangle)
+                val triangle: View = view.findViewById(com.develop.common.R.id.triangle)
                 val param = triangle.layoutParams as RelativeLayout.LayoutParams
                 param.addRule(RelativeLayout.CENTER_HORIZONTAL)
                 triangle.layoutParams = param
@@ -163,13 +164,14 @@ class RecipesFragment : CommonBVMFragment<FragmentCommeListBinding, HomeViewMode
                 onCreate {
                     if (it == HOME_FOOD_LIST_PROVIDER) {
                         foodRecycle = findView(R.id.food_recycle)
-                        (foodRecycle?.itemAnimator as SimpleItemAnimator).supportsChangeAnimations = false
+                        (foodRecycle?.itemAnimator as SimpleItemAnimator).supportsChangeAnimations =
+                            false
                         foodRecycle?.setHasFixedSize(true)
                         foodRecycle?.isNestedScrollingEnabled = false
                         foodRecycle?.setRecycledViewPool(recycledViewPool)
                         foodRecycle?.grid(4)
                         foodRecycle?.setup {
-                            if (isNightTheme()){
+                            if (isNightTheme()) {
                                 addType<FoodContentModel>(com.develop.common.R.layout.food_content_night_provider)
                                 onBind {
                                     findView<FoodContentView>(com.develop.common.R.id.food_content_view).setFoodContent(
@@ -280,7 +282,7 @@ class RecipesFragment : CommonBVMFragment<FragmentCommeListBinding, HomeViewMode
             }
         }
 
-        if (isNightTheme()){
+        if (isNightTheme()) {
             binding.footer.apply {
                 setPrimaryColor(Color.parseColor("#1A1A1A"))
                 setFinishDuration(0)
@@ -483,13 +485,13 @@ class RecipesFragment : CommonBVMFragment<FragmentCommeListBinding, HomeViewMode
             }
 
             moreLocalRecipeLiveData.observe(viewLifecycleOwner) {
-                binding.page.finishLoadMore(true)
-                foodRecycle?.addModels(it)
+                binding.page.finishLoadMore(0)
+                foodRecycle?.addModels(it, false)
             }
 
             moreSearchLocalRecipeLiveData.observe(viewLifecycleOwner) {
-                binding.page.finishLoadMore(true)
-                foodRecycle?.addModels(it)
+                binding.page.finishLoadMore(0)
+                foodRecycle?.addModels(it, false)
             }
 
             //获取线上分类回调
@@ -523,6 +525,10 @@ class RecipesFragment : CommonBVMFragment<FragmentCommeListBinding, HomeViewMode
                 }
                 loadingDialog.removeSelf()
             }
+            errorCallback.observe(viewLifecycleOwner){
+                GlobalToast.showToast("network error")
+                loadingDialog.removeSelf()
+            }
         }
     }
 

+ 9 - 0
BusinessMain/src/main/java/com/develop/main/viewmodel/HomeViewModel.kt

@@ -83,6 +83,7 @@ class HomeViewModel : BaseViewModel() {
     private var recipeCount = 0
     private var foodCount = 0
     private var recipeDao = FoodDataProvider.getDatabase().recipeDao()
+    var errorCallback = MutableLiveData<String>()
 
     /**查询本地菜谱分类*/
     fun queryRecipesCategory() {
@@ -442,6 +443,8 @@ class HomeViewModel : BaseViewModel() {
                 addQuery("sn", getSN())
                 addQuery("lang", MMkvUtils.getString(CURRENT_LANGUAGE) ?: "EN")
             }.await().categorys.toMutableList()
+        }.catch {
+            errorCallback.postValue(it.message)
         }
     }
 
@@ -452,6 +455,8 @@ class HomeViewModel : BaseViewModel() {
                 addQuery("sn", getSN())
                 addQuery("lang", MMkvUtils.getString(CURRENT_LANGUAGE) ?: "EN")
             }.await().hotTags.toMutableList()
+        }.catch {
+            errorCallback.postValue(it.message)
         }
     }
 
@@ -494,6 +499,8 @@ class HomeViewModel : BaseViewModel() {
                     )
                 )
             }
+        }.catch {
+            errorCallback.postValue(it.message)
         }
     }
 
@@ -504,6 +511,8 @@ class HomeViewModel : BaseViewModel() {
                 addQuery("sn", getSN())
                 addQuery("lang", MMkvUtils.getString(CURRENT_LANGUAGE) ?: "EN")
             }.await().informs.toMutableList()
+        }.catch {
+            errorCallback.postValue(it.message)
         }
     }
 

+ 1 - 2
BusinessStep/src/main/java/com/develop/step/ui/FoodListActivity.kt

@@ -58,8 +58,7 @@ class FoodListActivity : CommonBVMActivity<ActivityFoodListBinding, FoodListView
         viewModel.foodListLiveData.observe(this) {
             binding.foodListRecycler.models = it
             if (viewModel.foodListType == Downloaded) {
-                title = "$title(${it.size})"
-                binding.tvTitle.updateText(title)
+                binding.tvTitle.updateText("$title(${it.size})")
             }
         }
     }

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

@@ -9,7 +9,6 @@ import android.widget.Toast
 import com.alibaba.android.arouter.facade.annotation.Autowired
 import com.develop.base.ext.load
 import com.alibaba.android.arouter.facade.annotation.Route
-import com.bumptech.glide.Glide
 import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions
 import com.develop.base.ext.background_drawable
 import com.develop.base.ext.isNightTheme

+ 10 - 3
app/src/main/java/com/develop/foodcooking/FoodCookingApp.kt

@@ -11,8 +11,6 @@ import com.blankj.utilcode.util.PathUtils
 import com.blankj.utilcode.util.ResourceUtils
 import com.blankj.utilcode.util.Utils
 import com.develop.base.app.BaseApp
-import com.develop.base.ext.isNightTheme
-import com.develop.base.ext.setNightTheme
 import com.develop.base.util.MMkvUtils
 import com.develop.common.data_repo.FoodDataProvider
 import com.develop.common.data_repo.net.Api
@@ -20,6 +18,12 @@ import com.develop.common.data_repo.net.converter.SerializationConverter
 import com.develop.common.data_repo.net.interceptor.FoodRequestInterceptor
 import com.develop.common.food_sdk.GlobalDevEvent
 import com.develop.common.food_sdk.SerialPortUtils
+import com.develop.common.utils.compat.CategoryTabViewLayoutCompat
+import com.develop.common.utils.compat.ClassicsFooterCompat
+import com.develop.common.utils.compat.FoodContentViewCompat
+import com.develop.common.utils.compat.RecyclerViewCompat
+import com.develop.common.utils.compat.SmartRefreshLayoutCompat
+import com.develop.common.utils.compat.StartViewCompat
 import com.drake.net.convert.NetConverter
 import com.drake.net.interceptor.RequestInterceptor
 import com.drake.net.interfaces.NetErrorHandler
@@ -31,7 +35,6 @@ import org.alee.component.skin.page.WindowManager
 import org.alee.component.skin.service.Config
 import org.alee.component.skin.service.IOptionFactory
 import org.alee.component.skin.service.IThemeSkinOption
-import org.alee.component.skin.service.ThemeSkinService
 import org.greenrobot.eventbus.Subscribe
 import java.io.File
 
@@ -43,6 +46,10 @@ class FoodCookingApp : BaseApp() {
             Config.getInstance().performanceMode = Config.PerformanceMode.EXPERIENCE_FIRST
             Config.getInstance().isEnableDebugMode = BuildConfig.DEBUG
             ConstraintLayoutCompat.init()
+            RecyclerViewCompat.init()
+            SmartRefreshLayoutCompat.init()
+            CategoryTabViewLayoutCompat.init()
+            StartViewCompat.init()
         }
     }