Explorar o código

优化语言配置

wbspool hai 1 ano
pai
achega
9336010f5f
Modificáronse 20 ficheiros con 205 adicións e 53 borrados
  1. 1 0
      BusinessAuth/src/main/java/com/develop/auth/ui/MemberProfileFragment.kt
  2. 8 3
      BusinessMain/src/main/java/com/develop/main/init/ui/RecipesFragment.kt
  3. 2 0
      BusinessMain/src/main/java/com/develop/main/init/ui/provider/CommonSearchProvider.kt
  4. 40 0
      BusinessMain/src/main/java/com/develop/main/init/ui/viewmodel/HomeViewModel.kt
  5. 2 2
      BusinessMain/src/main/res/layout/activity_mode_entrance.xml
  6. 0 24
      app/src/androidTest/java/com/develop/foodcooking/ExampleInstrumentedTest.kt
  7. 13 0
      libBase/src/main/java/com/develop/food/base/adapter/HistoryHotWordsAdapter.kt
  8. 50 14
      libBase/src/main/java/com/develop/food/base/data/DataFactory.kt
  9. 1 1
      libBase/src/main/java/com/develop/food/base/data/model/CommonSearchModel.kt
  10. 1 1
      libBase/src/main/java/com/develop/food/base/repo/FoodDataProvider.kt
  11. 48 6
      libBase/src/main/java/com/develop/food/base/widgets/CommonSearchLayout.kt
  12. 1 0
      libBase/src/main/java/com/develop/food/base/widgets/HomeFilterSortSearchView.kt
  13. 7 0
      libBase/src/main/res/drawable/bg_left_conner.xml
  14. 7 0
      libBase/src/main/res/drawable/bg_right_conner.xml
  15. 19 2
      libBase/src/main/res/layout/common_search_view.xml
  16. 1 0
      libBase/src/main/res/values-en/strings.xml
  17. 1 0
      libBase/src/main/res/values-fr/strings.xml
  18. 1 0
      libBase/src/main/res/values-ja/strings.xml
  19. 1 0
      libBase/src/main/res/values-zh-rCN/strings.xml
  20. 1 0
      libBase/src/main/res/values/strings.xml

+ 1 - 0
BusinessAuth/src/main/java/com/develop/auth/ui/MemberProfileFragment.kt

@@ -71,6 +71,7 @@ class MemberProfileFragment : ViewBindingFragment<FragmentMemberProfileBinding>(
             if (binding.tvSkipForNow.text == "Sign out") {
                 MmkvUtils.save(LOGIN_TAG, false)
                 MmkvUtils.clear(API_TOKEN)
+                MmkvUtils.save(CURRENT_USER_ID_TAG, 0)
                 FoodDataProvider.getUserDatabase().userInfoDao().deleteAllUserInfo()
                 parentFragmentManager
                     .beginTransaction()

+ 8 - 3
BusinessMain/src/main/java/com/develop/main/init/ui/RecipesFragment.kt

@@ -7,7 +7,6 @@ import android.view.ViewGroup
 import android.widget.RelativeLayout
 import androidx.databinding.ViewDataBinding
 import androidx.fragment.app.activityViewModels
-import androidx.recyclerview.widget.LinearLayoutManager
 import androidx.recyclerview.widget.RecyclerView
 import com.develop.base.databinding.FragmentCommeListBinding
 import com.develop.food.base.data.CategoryType
@@ -27,7 +26,11 @@ import com.develop.main.R
 import com.develop.main.init.ui.adapter.CategoryAdapter
 import com.develop.main.init.ui.adapter.RecipesMainAdapter
 import com.develop.main.init.ui.adapter.SortAdapter
-import com.develop.main.init.ui.provider.*
+import com.develop.main.init.ui.provider.CategoryTabProvider
+import com.develop.main.init.ui.provider.CommonSearchProvider
+import com.develop.main.init.ui.provider.FunctionProvider
+import com.develop.main.init.ui.provider.HomeBannerProvider
+import com.develop.main.init.ui.provider.RecipesContentProvider
 import com.develop.main.init.ui.viewmodel.HomeViewModel
 
 
@@ -168,6 +171,7 @@ class RecipesFragment : ViewBindingFragment<FragmentCommeListBinding>() {
 
                 override fun onInputSearch(searchContent: String) {
                     currentHotWord = searchContent
+                    homeViewModel.saveHistoryWords(currentHotWord)
                     if (homeViewModel.recipesType == HomeViewModel.RecipesType.ONLINE) {
                         homeViewModel.getOnLineRecipeList("", currentHotWord)
                     } else {
@@ -199,7 +203,7 @@ class RecipesFragment : ViewBindingFragment<FragmentCommeListBinding>() {
             commonSearchProvider.hotWordsSelectedListener =
                 object : CommonSearchProvider.OnHotWordsSelectedListener {
                     override fun onHotWordsSelected(hotWord: String) {
-
+                        homeViewModel.saveHistoryWords(currentHotWord)
                         currentHotWord = hotWord
                         if (homeViewModel.recipesType == HomeViewModel.RecipesType.ONLINE) {
                             homeViewModel.getOnLineRecipeList("", currentHotWord)
@@ -238,6 +242,7 @@ class RecipesFragment : ViewBindingFragment<FragmentCommeListBinding>() {
         homeViewModel.apply {
             refreshRecipesLiveData.observe(viewLifecycleOwner) {
                 //从网络菜谱切回本地菜谱,更新数据
+                recipesMainAdapter.functionProvider.filterSortSearchView?.updateHotWord("")
                 homeViewModel.queryRecipesCategory()
             }
 

+ 2 - 0
BusinessMain/src/main/java/com/develop/main/init/ui/provider/CommonSearchProvider.kt

@@ -2,6 +2,7 @@ package com.develop.main.init.ui.provider
 
 import com.chad.library.adapter.base.provider.BaseItemProvider
 import com.chad.library.adapter.base.viewholder.BaseViewHolder
+import com.develop.food.base.data.getHistoryWords
 import com.develop.food.base.data.model.CommonSearchModel
 import com.develop.food.base.widgets.CommonSearchLayout
 import com.develop.main.R
@@ -18,6 +19,7 @@ class CommonSearchProvider : BaseItemProvider<Any>() {
         item as CommonSearchModel
         helper.getView<CommonSearchLayout>(R.id.common_search_view).apply {
             updateData(item)
+            updateHistoryData(getHistoryWords())
             onHotWordsSelectedListener = object : CommonSearchLayout.OnHotWordsSelectedListener {
                 override fun onHotWordsSelected(hotWord: String) {
                     hotWordsSelectedListener?.onHotWordsSelected(hotWord)

+ 40 - 0
BusinessMain/src/main/java/com/develop/main/init/ui/viewmodel/HomeViewModel.kt

@@ -7,6 +7,7 @@ import com.develop.food.base.data.CategoryType
 import com.develop.food.base.data.DataFactory
 import com.develop.food.base.data.SortedType
 import com.develop.food.base.data.model.CategoryModel
+import com.develop.food.base.data.model.CommonSearchItem
 import com.develop.food.base.data.model.FilterSortModel
 import com.develop.food.base.data.model.FoodContentModel
 import com.develop.food.base.data.model.NewsModel
@@ -15,7 +16,11 @@ import com.develop.food.base.repo.CURRENT_USER_ID
 import com.develop.food.base.repo.FoodDataProvider
 import com.develop.food.base.repo.entity.DevRecipe
 import com.develop.food.base.repo.entity.DevRecipeCategory
+import com.develop.food.base.utils.MmkvUtils
 import com.develop.food.base.utils.ThreadUtils
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import java.lang.reflect.Type
 
 class HomeViewModel : ViewModel() {
     val netFoodLiveData = MutableLiveData<Boolean>()
@@ -250,6 +255,41 @@ class HomeViewModel : ViewModel() {
             })
     }
 
+    fun saveHistoryWords(hotWord: String) {
+        var hotWordList: MutableList<String> = mutableListOf()
+        val type: Type = object : TypeToken<List<String>>() {}.type
+        val hotWordJson = MmkvUtils.getString("HistoryWords") ?: ""
+
+        var commonDataList: MutableList<CommonSearchItem> = mutableListOf()
+
+        val commonWordJson = MmkvUtils.getString("CommonWords") ?: ""
+        if (commonWordJson.isNotEmpty()) {
+            val type1: Type = object : TypeToken<List<CommonSearchItem>>() {}.type
+            commonDataList = Gson().fromJson(commonWordJson, type1)
+        }
+
+        var hasWords = false
+        commonDataList.forEach {
+            if (it.name == hotWord) {
+                it.count += 1
+                hasWords = true
+            }
+        }
+        if (!hasWords) {
+            commonDataList.add(CommonSearchItem(hotWord, 1))
+        }
+
+        MmkvUtils.save("CommonWords", Gson().toJson(commonDataList))
+
+        if (hotWordJson.isNotEmpty()) {
+            hotWordList = Gson().fromJson(hotWordJson, type)
+        }
+        if (!hotWordList.contains(hotWord)) {
+            hotWordList.add(hotWord)
+        }
+        MmkvUtils.save("HistoryWords", Gson().toJson(hotWordList))
+    }
+
 
     private fun resetOnlineConfig() {
         currentPage = 1

+ 2 - 2
BusinessMain/src/main/res/layout/activity_mode_entrance.xml

@@ -14,7 +14,7 @@
             android:layout_height="@dimen/convert_132px"
             android:layout_alignParentEnd="true"
             android:layout_alignParentBottom="true"
-            android:background="@drawable/ic_mode_round2">
+            android:background="@drawable/bg_left_conner">
 
             <ImageView
                 android:id="@+id/iv_recipes"
@@ -46,7 +46,7 @@
         <RelativeLayout
             android:layout_width="@dimen/convert_449px"
             android:layout_height="@dimen/convert_132px"
-            android:background="@drawable/ic_mode_round1">
+            android:background="@drawable/bg_right_conner">
 
             <ImageView
                 android:id="@+id/iv_mode"

+ 0 - 24
app/src/androidTest/java/com/develop/foodcooking/ExampleInstrumentedTest.kt

@@ -1,24 +0,0 @@
-package com.develop.foodcooking
-
-import androidx.test.platform.app.InstrumentationRegistry
-import androidx.test.ext.junit.runners.AndroidJUnit4
-
-import org.junit.Test
-import org.junit.runner.RunWith
-
-import org.junit.Assert.*
-
-/**
- * Instrumented test, which will execute on an Android device.
- *
- * See [testing documentation](http://d.android.com/tools/testing).
- */
-@RunWith(AndroidJUnit4::class)
-class ExampleInstrumentedTest {
-    @Test
-    fun useAppContext() {
-        // Context of the app under test.
-        val appContext = InstrumentationRegistry.getInstrumentation().targetContext
-        assertEquals("com.develop.foodcooking", appContext.packageName)
-    }
-}

+ 13 - 0
libBase/src/main/java/com/develop/food/base/adapter/HistoryHotWordsAdapter.kt

@@ -0,0 +1,13 @@
+package com.develop.food.base.adapter
+
+import androidx.appcompat.widget.AppCompatTextView
+import com.chad.library.adapter.base.BaseQuickAdapter
+import com.chad.library.adapter.base.viewholder.BaseViewHolder
+import com.develop.base.R
+
+class HistoryHotWordsAdapter :
+    BaseQuickAdapter<String, BaseViewHolder>(R.layout.item_search_title_view) {
+    override fun convert(holder: BaseViewHolder, item: String) {
+        holder.getView<AppCompatTextView>(R.id.tv_search_name).text = item
+    }
+}

+ 50 - 14
libBase/src/main/java/com/develop/food/base/data/DataFactory.kt

@@ -4,10 +4,24 @@ package com.develop.food.base.data
 import android.content.res.Resources
 import com.develop.base.R
 import com.develop.common.utils.ConfigUtils
-import com.develop.food.base.data.model.*
+import com.develop.food.base.data.model.CommonSearchItem
+import com.develop.food.base.data.model.CommonSearchModel
+import com.develop.food.base.data.model.FilterSortModel
+import com.develop.food.base.data.model.FoodContentModel
+import com.develop.food.base.data.model.HomeBannerListModel
+import com.develop.food.base.data.model.HomeBannerModel
+import com.develop.food.base.data.model.LanguageModel
+import com.develop.food.base.data.model.ModelsModel
+import com.develop.food.base.data.model.NewsModel
+import com.develop.food.base.data.model.SettingModel
 import com.develop.food.base.repo.entity.DevRecipe
 import com.develop.food.base.repo.entity.UserFavoriteRecipes
-import java.util.Collections
+import com.develop.food.base.utils.MmkvUtils
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import java.lang.reflect.Type
+import java.util.*
+import kotlin.Comparator
 
 object DataFactory {
 
@@ -17,21 +31,18 @@ object DataFactory {
         val languageList = mutableListOf<LanguageModel>()
 //        val strList = mutableListOf<String>(
 //            resource.getString(R.string.english),
-//            resource.getString(R.string.pl),
 ////            resource.getString(R.string.chinese),
 ////            resource.getString(R.string.france),
 ////            resource.getString(R.string.japan)
 //        )
 //        val iconList = mutableListOf<Int>(
 //            R.drawable.ic_english,
-//                R.drawable.ic_pl,
 ////            R.drawable.ic_chinese,
 ////            R.drawable.ic_france,
 ////            R.drawable.ic_japan
 //        )
 //        val typeList = mutableListOf<LanguageType>(
 //            LanguageType.English,
-//            LanguageType.PL,
 ////            LanguageType.Chinese,
 ////            LanguageType.France,
 ////            LanguageType.Japan
@@ -48,7 +59,6 @@ object DataFactory {
         return ConfigUtils.loadLangConfig()?.langs?.filter {  it.show == true } ?: Collections.emptyList();
     }
 
-
     fun genNetRecipesData(
         categoryName: String,
         recipesList: MutableList<DevRecipe>,
@@ -322,13 +332,27 @@ object DataFactory {
     fun genTestSearchDataList(): MutableList<Any> {
         val result = mutableListOf<Any>()
         result.add(FilterSortModel(""))
-        val searchNameList =
-            mutableListOf("Guacamole", "Aioli", "Popular", "Chinese food", "Healthy")
-        val searchModelList = mutableListOf<CommonSearchItem>()
-        searchNameList.forEach {
-            searchModelList.add(CommonSearchItem(it))
+        var historyDataList: MutableList<CommonSearchItem> = mutableListOf()
+        val hotWordJson = MmkvUtils.getString("CommonWords") ?: ""
+        if (hotWordJson.isNotEmpty()) {
+            val type: Type = object : TypeToken<List<CommonSearchItem>>() {}.type
+            historyDataList = Gson().fromJson(hotWordJson, type)
         }
-        result.add(CommonSearchModel(searchModelList))
+        historyDataList.sortWith(Comparator { t, t2 ->
+            if (t.count > (t2.count ?: 0)) {
+                return@Comparator -1
+            } else if ((t.count ?: 0) == (t2.count ?: 0)) {
+                return@Comparator 0
+            } else {
+                return@Comparator 1
+            }
+        })
+        val searchModel = if (historyDataList.size > 12) {
+            CommonSearchModel(historyDataList.subList(0, 12))
+        } else {
+            CommonSearchModel(historyDataList)
+        }
+        result.add(searchModel)
         return result
     }
 
@@ -337,7 +361,7 @@ object DataFactory {
         result.add(FilterSortModel(""))
         val searchModelList = mutableListOf<CommonSearchItem>()
         hotTags.forEach {
-            searchModelList.add(CommonSearchItem(it))
+            searchModelList.add(CommonSearchItem(it,1))
         }
         result.add(CommonSearchModel(searchModelList))
         return result
@@ -418,4 +442,16 @@ enum class SortedType {
     Popular,
     Newest,
     Score
-}
+}
+
+
+
+fun getHistoryWords(): MutableList<String> {
+    var historyDataList: MutableList<String> = mutableListOf()
+    val hotWordJson = MmkvUtils.getString("HistoryWords") ?: ""
+    if (hotWordJson.isNotEmpty()) {
+        val type: Type = object : TypeToken<List<String>>() {}.type
+        historyDataList = Gson().fromJson(hotWordJson, type)
+    }
+    return historyDataList
+}

+ 1 - 1
libBase/src/main/java/com/develop/food/base/data/model/CommonSearchModel.kt

@@ -1,4 +1,4 @@
 package com.develop.food.base.data.model
 
 data class CommonSearchModel(var data: MutableList<CommonSearchItem>)
-data class CommonSearchItem(var name: String)
+data class CommonSearchItem(var name: String,var count: Int)

+ 1 - 1
libBase/src/main/java/com/develop/food/base/repo/FoodDataProvider.kt

@@ -195,4 +195,4 @@ object FoodDataProvider {
     }
 }
 
-val CURRENT_USER_ID = MmkvUtils.getLong(CURRENT_USER_ID_TAG) ?: 10001L
+val CURRENT_USER_ID get() = MmkvUtils.getLong(CURRENT_USER_ID_TAG) ?: 10001L

+ 48 - 6
libBase/src/main/java/com/develop/food/base/widgets/CommonSearchLayout.kt

@@ -4,19 +4,20 @@ import android.content.Context
 import android.graphics.Rect
 import android.util.AttributeSet
 import android.view.View
-import android.view.ViewGroup
 import android.widget.LinearLayout
-import android.widget.PopupWindow
-import android.widget.RelativeLayout
 import androidx.recyclerview.widget.RecyclerView
 import com.develop.base.R
 import com.develop.base.databinding.CommonSearchViewBinding
-import com.develop.base.databinding.PopFilterViewBinding
 import com.develop.food.base.adapter.CommonSearchAdapter
+import com.develop.food.base.adapter.HistoryHotWordsAdapter
 import com.develop.food.base.data.model.CommonSearchItem
 import com.develop.food.base.data.model.CommonSearchModel
 import com.develop.food.base.utils.ResDimension
-import com.google.android.flexbox.*
+import com.google.android.flexbox.AlignItems
+import com.google.android.flexbox.FlexDirection
+import com.google.android.flexbox.FlexWrap
+import com.google.android.flexbox.FlexboxLayoutManager
+import com.google.android.flexbox.JustifyContent
 
 class CommonSearchLayout : LinearLayout {
 
@@ -32,8 +33,9 @@ class CommonSearchLayout : LinearLayout {
     }
 
     private var commonSearchAdapter = CommonSearchAdapter()
-
+    private var historyAdapter = HistoryHotWordsAdapter()
     private var dataList = mutableListOf<CommonSearchItem>()
+    private var historyDataList = mutableListOf<String>()
 
     var onHotWordsSelectedListener: OnHotWordsSelectedListener? = null
 
@@ -45,6 +47,14 @@ class CommonSearchLayout : LinearLayout {
         flexboxLayoutManager.flexDirection = FlexDirection.ROW
         flexboxLayoutManager.alignItems = AlignItems.STRETCH
         flexboxLayoutManager.justifyContent = JustifyContent.FLEX_START
+
+
+        val flexboxLayoutManager1 = FlexboxLayoutManager(context)
+        flexboxLayoutManager1.flexWrap = FlexWrap.WRAP
+        flexboxLayoutManager1.flexDirection = FlexDirection.ROW
+        flexboxLayoutManager1.alignItems = AlignItems.STRETCH
+        flexboxLayoutManager1.justifyContent = JustifyContent.FLEX_START
+
         binding.searchRecycler.apply {
             layoutManager = flexboxLayoutManager
             addItemDecoration(object : RecyclerView.ItemDecoration() {
@@ -59,10 +69,30 @@ class CommonSearchLayout : LinearLayout {
             })
             adapter = commonSearchAdapter
         }
+
+
+        binding.historySearchRecycle.apply {
+            layoutManager = flexboxLayoutManager1
+            addItemDecoration(object : RecyclerView.ItemDecoration() {
+                override fun getItemOffsets(
+                    outRect: Rect,
+                    view: View,
+                    parent: RecyclerView,
+                    state: RecyclerView.State
+                ) {
+                    outRect.bottom = ResDimension(R.dimen.convert_47px).toInt()
+                }
+            })
+            adapter = commonSearchAdapter
+        }
         commonSearchAdapter.setOnItemClickListener { adapter, view, position ->
             onHotWordsSelectedListener?.onHotWordsSelected(dataList[position].name)
         }
 
+        historyAdapter.setOnItemClickListener { adapter, view, position ->
+            onHotWordsSelectedListener?.onHotWordsSelected(dataList[position].name)
+        }
+
     }
 
     fun updateData(model: CommonSearchModel) {
@@ -71,6 +101,18 @@ class CommonSearchLayout : LinearLayout {
         commonSearchAdapter.setList(dataList)
     }
 
+    fun updateHistoryData(historyList: MutableList<String>) {
+        historyDataList.clear()
+        historyDataList.addAll(historyList)
+        historyDataList.reverse()
+        if (historyDataList.size > 12) {
+            historyAdapter.setList(historyDataList.subList(0, 12))
+        } else {
+            historyAdapter.setList(historyDataList)
+        }
+    }
+
+
     interface OnHotWordsSelectedListener {
         fun onHotWordsSelected(hotWord: String)
     }

+ 1 - 0
libBase/src/main/java/com/develop/food/base/widgets/HomeFilterSortSearchView.kt

@@ -30,6 +30,7 @@ class HomeFilterSortSearchView : RelativeLayout {
             binding.cardLayout.visibility = View.VISIBLE
             binding.searchLayout.visibility = View.GONE
             KeyboardUtils.hideSoftInput(context as Activity)
+            binding.etSearch.setText("")
             onFunctionCallback?.onBackClick()
         }
         binding.searchCardView.setOnClickListener {

+ 7 - 0
libBase/src/main/res/drawable/bg_left_conner.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <solid android:color="#FFA627"/>
+    <corners android:topLeftRadius="@dimen/convert_40px"/>
+
+</shape>

+ 7 - 0
libBase/src/main/res/drawable/bg_right_conner.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <solid android:color="#FFA627"/>
+    <corners android:bottomRightRadius="@dimen/convert_40px"/>
+
+</shape>

+ 19 - 2
libBase/src/main/res/layout/common_search_view.xml

@@ -10,9 +10,16 @@
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginTop="@dimen/convert_24px"
-        android:text="@string/the_most_commonly_searched"
+        android:text="@string/historical_search"
         android:textColor="@color/color_6B6B6B"
-        android:textSize="54px" />
+        android:textSize="@dimen/convert_36px" />
+
+    <androidx.recyclerview.widget.RecyclerView
+        android:layout_marginStart="@dimen/convert_24px"
+        android:layout_marginTop="@dimen/convert_25px"
+        android:id="@+id/history_search_recycle"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content" />
 
     <View
         android:layout_marginStart="@dimen/convert_45px"
@@ -22,6 +29,16 @@
         android:layout_marginTop="@dimen/convert_66px"
         android:background="@color/color_E5E5E5" />
 
+    <androidx.appcompat.widget.AppCompatTextView
+        android:id="@+id/tv_search_title"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="@dimen/convert_45px"
+        android:layout_marginTop="@dimen/convert_36px"
+        android:text="@string/the_most_commonly_searched"
+        android:textColor="@color/color_6B6B6B"
+        android:textSize="@dimen/convert_36px" />
+
     <androidx.recyclerview.widget.RecyclerView
         android:id="@+id/search_recycler"
         android:layout_width="match_parent"

+ 1 - 0
libBase/src/main/res/values-en/strings.xml

@@ -211,6 +211,7 @@ Nanfang plus client is an online information platform developed and operated by
     <string name="running_block_tips">Please stop the running program and start new programs.</string>
     <string name="unset_target_time">Time has not been set.</string>
     <string name="empty_notice">Empty Notice</string>
+    <string name="historical_search">historical search</string>
 
 
 </resources>

+ 1 - 0
libBase/src/main/res/values-fr/strings.xml

@@ -132,4 +132,5 @@
     <string name="start_download">开始下载</string>
     <string name="screen_saver_title">是否进入息屏状态?</string>
     <string name="empty_notice">Empty Notice</string>
+    <string name="historical_search">Historique de recherche</string>
 </resources>

+ 1 - 0
libBase/src/main/res/values-ja/strings.xml

@@ -132,4 +132,5 @@
     <string name="start_download">开始下载</string>
     <string name="screen_saver_title">是否进入息屏状态?</string>
     <string name="empty_notice">Empty Notice</string>
+    <string name="historical_search">historical search</string>
 </resources>

+ 1 - 0
libBase/src/main/res/values-zh-rCN/strings.xml

@@ -132,4 +132,5 @@
     <string name="start_download">开始下载</string>
     <string name="screen_saver_title">是否进入息屏状态?</string>
     <string name="empty_notice">Empty Notice</string>
+    <string name="historical_search">historical_search</string>
 </resources>

+ 1 - 0
libBase/src/main/res/values/strings.xml

@@ -223,6 +223,7 @@ Nanfang plus client is an online information platform developed and operated by
     <string name="zhuan_su_fan_kui_yi_chan">Abnormal speed feedback</string>
     <string name="ntc_yi_chan">NTC anomaly</string>
     <string name="mei_fang_guo_yi_chan">No pot is abnormal</string>
+    <string name="historical_search">historical search</string>
 
 
 </resources>