Commit dc25fd17 authored by wanglei's avatar wanglei

...搜索

parent b32d8bd5
......@@ -46,6 +46,13 @@
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity
android:name=".ui.search.SearchActivity"
android:exported="true"
android:launchMode="singleTop"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-3940256099942544~3347511713" />
......
package com.base.pdfoneread.ui.main
import android.annotation.SuppressLint
import android.content.Intent
import android.graphics.Color
import androidx.activity.addCallback
import androidx.core.view.updatePadding
......@@ -14,6 +15,7 @@ import com.base.pdfoneread.ui.BaseActivity
import com.base.pdfoneread.bean.HomeUIBean.Companion.UI_TYPE_GRID
import com.base.pdfoneread.bean.HomeUIBean.Companion.UI_TYPE_LIST
import com.base.pdfoneread.ui.document.getAllDocument
import com.base.pdfoneread.ui.search.SearchActivity
import com.base.pdfoneread.ui.views.MainDialog.showAppExitDialog
import com.base.pdfoneread.ui.views.MainDialog.showStoragePermission
import com.base.pdfoneread.utils.BarUtils
......@@ -84,6 +86,9 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
currentFragment.changeUIByMain()
}
}
binding.flSearch.setOnClickListener {
startActivity(Intent(this, SearchActivity::class.java))
}
}
private fun changeHomeRvIcon() {
......
package com.base.pdfoneread.ui.search
import android.graphics.Color
import android.view.View
import android.view.inputmethod.EditorInfo
import androidx.activity.addCallback
import androidx.core.view.updatePadding
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
import androidx.viewpager2.adapter.FragmentStateAdapter
import androidx.viewpager2.widget.ViewPager2
import com.angcyo.tablayout.delegate2.ViewPager2Delegate
import com.base.pdfoneread.bean.DocumentBean
import com.base.pdfoneread.bean.DocumentBean.Companion.TYPE_ALL
import com.base.pdfoneread.databinding.ActivitySearchBinding
import com.base.pdfoneread.ui.BaseActivity
import com.base.pdfoneread.utils.BarUtils
import com.base.pdfoneread.utils.LogEx
import java.io.File
class SearchActivity : BaseActivity<ActivitySearchBinding>() {
private val TAG = "SearchActivity"
private lateinit var searchViewModel: SearchViewModel
override val binding: ActivitySearchBinding by lazy {
ActivitySearchBinding.inflate(layoutInflater)
}
private val allPage: SearchPageFragment by lazy {
SearchPageFragment(TYPE_ALL)
}
private val pdfPage: SearchPageFragment by lazy {
SearchPageFragment(DocumentBean.TYPE_PDF)
}
private val wordPage: SearchPageFragment by lazy {
SearchPageFragment(DocumentBean.TYPE_WORD)
}
private val excelPage: SearchPageFragment by lazy {
SearchPageFragment(DocumentBean.TYPE_EXCEL)
}
private val pptPage: SearchPageFragment by lazy {
SearchPageFragment(DocumentBean.TYPE_PPT)
}
private val fragments by lazy {
mutableListOf(allPage, pdfPage, wordPage, excelPage, pptPage)
}
override fun initView() {
BarUtils.setStatusBarLightMode(this, true)
BarUtils.setStatusBarColor(this, Color.WHITE)
binding.root.updatePadding(top = BarUtils.getStatusBarHeight())
searchViewModel = ViewModelProvider(this)[SearchViewModel::class.java]
initViewPager2()
initTabLayout()
binding.edit.setOnEditorActionListener { v, actionId, event ->
if (actionId == EditorInfo.IME_ACTION_DONE) {
LogEx.logDebug(TAG, "actionDone")
if (binding.edit.text.isNotEmpty()) {
searchDocument()
}
}
false
}
searchDocument()
}
private var pageAdapter: FragmentStateAdapter? = null
private fun initViewPager2() {
pageAdapter = object : FragmentStateAdapter(this) {
override fun getItemCount(): Int {
return fragments.size
}
override fun createFragment(position: Int): Fragment {
return fragments[position]
}
}
binding.viewPager2.run {
isUserInputEnabled = true
//https://www.jianshu.com/p/f69bd30cf5b0
//FragmentStateAdapter 这里必须传人fragment
adapter = pageAdapter
}
binding.viewPager2.registerOnPageChangeCallback(object :
ViewPager2.OnPageChangeCallback() {
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {
super.onPageScrolled(position, positionOffset, positionOffsetPixels)
}
override fun onPageSelected(position: Int) {
}
})
}
private fun initTabLayout() {
val allColor = Color.parseColor("#2287FE")
val pdfColor = Color.parseColor("#F40000")
val wordColor = Color.parseColor("#2287FE")
val excelColor = Color.parseColor("#1ABE5D")
val pptColor = Color.parseColor("#FF9E0E")
val deselectColor = Color.parseColor("#8F8F8F")
binding.tabLayoutDocument.apply {
configTabLayoutConfig {
tabDeselectColor = deselectColor
onSelectIndexChange = { fromIndex, selectIndexList, reselect, fromUser ->
val toIndex = selectIndexList.first()
binding.viewPager2.currentItem = toIndex
when (toIndex) {
0 -> {
tabSelectColor = allColor
tabIndicator.indicatorColor = allColor
}
1 -> {
tabSelectColor = pdfColor
tabIndicator.indicatorColor = pdfColor
}
2 -> {
tabSelectColor = wordColor
tabIndicator.indicatorColor = wordColor
}
3 -> {
tabSelectColor = excelColor
tabIndicator.indicatorColor = excelColor
}
4 -> {
tabSelectColor = pptColor
tabIndicator.indicatorColor = pptColor
}
}
dslSelector.updateStyle()
}
}
}
ViewPager2Delegate.install(binding.viewPager2, binding.tabLayoutDocument)
}
override fun initListener() {
super.initListener()
onBackPressedDispatcher.addCallback {
finishToMain()
}
binding.flFanhui.setOnClickListener {
onBackPressedDispatcher.onBackPressed()
}
}
private fun searchDocument() {
}
companion object {
var SEARCH_MODE_ALL = "search_mode_all"
var SEARCH_MODE_PDF = "search_mode_pdf"
var SEARCH_MODE_WORD = "search_mode_word"
var SEARCH_MODE_EXCEL = "search_mode_excel"
var SEARCH_MODE_PPT = "search_mode_ppt"
}
}
\ No newline at end of file
package com.base.pdfoneread.ui.search
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.lifecycle.lifecycleScope
import com.base.pdfoneread.R
import com.base.pdfoneread.ads.AdmobHelper
import com.base.pdfoneread.ads.admob.AdmobNativeUtils
import com.base.pdfoneread.bean.DocumentBean
import com.base.pdfoneread.bean.DocumentBean.Companion.TYPE_EXCEL
import com.base.pdfoneread.bean.DocumentBean.Companion.TYPE_PDF
import com.base.pdfoneread.bean.DocumentBean.Companion.TYPE_PPT
import com.base.pdfoneread.bean.DocumentBean.Companion.TYPE_WORD
import com.base.pdfoneread.databinding.FragmentSearchPageBinding
import com.base.pdfoneread.ui.document.DocumentAdapter
import com.base.pdfoneread.ui.document.getAllDocument
import com.base.pdfoneread.ui.document.getExcelDocument
import com.base.pdfoneread.ui.document.getPdfDocument
import com.base.pdfoneread.ui.document.getPptDocument
import com.base.pdfoneread.ui.document.getWordDocument
import com.base.pdfoneread.utils.updateMediaStore
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
class SearchPageFragment() : Fragment() {
private var type = TYPE_PDF
private var adapter: DocumentAdapter? = null
private lateinit var binding: FragmentSearchPageBinding
constructor(type: String) : this() {
this.type = type
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
binding = FragmentSearchPageBinding.inflate(layoutInflater)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
adapter = DocumentAdapter(requireActivity())
adapter?.itemClick = { item: DocumentBean ->
// if (item.type == TYPE_PDF) {
// PdfActivity.jumpPdfActivity(requireActivity(), item)
// } else {
// requireActivity().jumpOtherDocument(item)
// }
}
adapter?.moreAction = { item: DocumentBean ->
// if (item.type == TYPE_PDF) {
// requireActivity().showPdfHomeMoreDialog(item, this)
// } else {
// requireContext().showDocumentHomeMoreDialog(item, this)
// }
}
binding.rv.adapter = adapter
initData()
}
private fun initData() {
lifecycleScope.launch(Dispatchers.IO) {
requireContext().updateMediaStore()
val list: List<DocumentBean>
when (type) {
TYPE_PDF -> {
list = getPdfDocument(requireContext())
}
TYPE_WORD -> {
list = getWordDocument(requireContext())
}
TYPE_EXCEL -> {
list = getExcelDocument(requireContext())
}
TYPE_PPT -> {
list = getPptDocument(requireContext())
}
else -> {
list = getAllDocument(requireContext())
}
}
launch(Dispatchers.Main) {
if (list.isEmpty()) {
binding.llEmpty.visibility = View.VISIBLE
adapter?.submitList(listOf())
val flag = AdmobHelper.isShowRvNativeAd()
if (flag) {
binding.flAd.visibility = View.VISIBLE
AdmobNativeUtils.showNativeAd(requireActivity(), binding.flAd, R.layout.layout_admob_document)
}
} else {
binding.llEmpty.visibility = View.GONE
binding.flAd.visibility = View.GONE
adapter?.submitList(getRvAdList(list))
}
}
}
}
private fun getRvAdList(list: List<DocumentBean>): List<DocumentBean> {
val flag = AdmobHelper.isShowRvNativeAd()
if (flag) {
val arrayList = arrayListOf<DocumentBean>()
arrayList.addAll(list)
arrayList.add(1, DocumentBean().apply { isAd = true })
return arrayList
}
return list
}
}
\ No newline at end of file
package com.base.pdfoneread.ui.search
import android.content.Context
import androidx.lifecycle.ViewModel
import com.base.pdfoneread.bean.DocumentBean
import com.base.pdfoneread.bean.DocumentBean.Companion.TYPE_EXCEL
import com.base.pdfoneread.bean.DocumentBean.Companion.TYPE_PDF
import com.base.pdfoneread.bean.DocumentBean.Companion.TYPE_PPT
import com.base.pdfoneread.bean.DocumentBean.Companion.TYPE_WORD
import com.base.pdfoneread.ui.document.getAllDocument
import com.base.pdfoneread.ui.search.SearchActivity.Companion.SEARCH_MODE_ALL
import com.base.pdfoneread.ui.search.SearchActivity.Companion.SEARCH_MODE_PDF
import com.base.pdfoneread.ui.search.SearchActivity.Companion.SEARCH_MODE_PPT
import com.base.pdfoneread.ui.search.SearchActivity.Companion.SEARCH_MODE_WORD
import com.base.pdfoneread.ui.search.SearchActivity.Companion.SEARCH_MODE_EXCEL
import java.io.File
import java.util.Locale
class SearchViewModel : ViewModel() {
var searchMode = SEARCH_MODE_ALL
fun getSearchDocument(context: Context, search: String): List<DocumentBean> {
val all = getAllDocument(context)
val typeList: List<DocumentBean>
when (searchMode) {
SEARCH_MODE_PDF -> {
typeList = all.filter { it.type == TYPE_PDF }
}
SEARCH_MODE_WORD -> {
typeList = all.filter { it.type == TYPE_WORD }
}
SEARCH_MODE_EXCEL -> {
typeList = all.filter { it.type == TYPE_EXCEL }
}
SEARCH_MODE_PPT -> {
typeList = all.filter { it.type == TYPE_PPT }
}
else -> typeList = all
}
return typeList.filter { File(it.path).name.lowercase(Locale.ENGLISH).contains(search.lowercase(Locale.ENGLISH)) }
}
}
\ No newline at end of file
package com.base.pdfoneread.ui.views
import com.base.pdfoneread.bean.DocumentBean
import java.io.File
interface DialogCallBack {
fun changeBookmark(path: String, isBookmarked: Boolean) = Unit
fun deleteDocument(item: DocumentBean) = Unit
fun changePdfLock(item: DocumentBean) = Unit
fun renameDocumentBean(file: File, newName: String) = Unit
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#00B8DE" />
<corners android:radius="10dp" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#EEEEEE" />
<corners android:radius="15dp" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke
android:width="0.5dp"
android:color="#E5E5E5" />
<solid android:color="@color/white" />
<corners android:radius="10dp" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="2dp" />
<solid android:color="@color/white" />
<!-- <gradient-->
<!-- android:endColor="#FAF8D1"-->
<!-- android:startColor="#FAD4E7"-->
<!-- android:type="linear" />-->
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#20000000">
</ripple>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
tools:context=".ui.search.SearchActivity">
<FrameLayout
android:id="@+id/fl_fanhui"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:layout_marginTop="24dp"
android:padding="15dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@mipmap/pdf_left"
tools:ignore="ContentDescription" />
</FrameLayout>
<EditText
android:id="@+id/edit"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_marginStart="5dp"
android:layout_marginEnd="15dp"
android:background="@drawable/bg_eeeeee_15"
android:hint="@string/search"
android:imeOptions="actionDone"
android:paddingStart="27dp"
android:singleLine="true"
android:textSize="15sp"
app:layout_constraintBottom_toBottomOf="@id/fl_fanhui"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/fl_fanhui"
app:layout_constraintTop_toTopOf="@id/fl_fanhui"
tools:ignore="Autofill,RtlSymmetry,TextFields,TouchTargetSizeCheck" />
<FrameLayout
android:id="@+id/fl_tab"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:background="@color/white"
app:layout_constraintTop_toBottomOf="@id/fl_fanhui">
<com.angcyo.tablayout.DslTabLayout
android:id="@+id/tabLayout_document"
android:layout_width="match_parent"
android:layout_height="50dp"
app:tab_badge_gravity="center"
app:tab_badge_offset_x="20dp"
app:tab_draw_indicator="true"
app:tab_enable_text_color="true"
app:tab_indicator_anim="true"
app:tab_indicator_drawable="@drawable/indicator_bottom_line"
app:tab_indicator_height="3dp"
app:tab_indicator_width="30dp"
app:tab_item_is_equ_width="true">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/ripple_select"
android:clipChildren="false"
android:clipToPadding="false"
android:gravity="center"
android:text="All"
android:textSize="16sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/ripple_select"
android:clipChildren="false"
android:clipToPadding="false"
android:gravity="center"
android:text="PDF"
android:textSize="16sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/ripple_select"
android:clipChildren="false"
android:clipToPadding="false"
android:gravity="center"
android:paddingVertical="5dp"
android:text="Word"
android:textSize="16sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/ripple_select"
android:clipChildren="false"
android:clipToPadding="false"
android:gravity="center"
android:text="Excel"
android:textSize="16sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/ripple_select"
android:clipChildren="false"
android:clipToPadding="false"
android:gravity="center"
android:text="PPT"
android:textSize="16sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
</com.angcyo.tablayout.DslTabLayout>
</FrameLayout>
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewPager2"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginVertical="18dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/fl_tab" />
<LinearLayout
android:id="@+id/ll_empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/fl_tab"
tools:ignore="UseCompoundDrawables">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:src="@mipmap/no_empty"
tools:ignore="ContentDescription" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="8dp"
android:text="@string/no_files_yet"
android:textColor="#2A2A2A"
android:textSize="15sp"
android:textStyle="bold" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<FrameLayout
android:id="@+id/fl_ad"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginVertical="16dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_document" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical"
android:visibility="gone"
tools:ignore="UseCompoundDrawables">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:src="@mipmap/no_search_result"
tools:ignore="ContentDescription" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="8dp"
android:text="@string/not_result"
android:textColor="#2A2A2A"
android:textSize="15sp"
android:textStyle="bold" />
</LinearLayout>
</FrameLayout>
\ No newline at end of file
<com.google.android.gms.ads.nativead.NativeAdView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#F4F5FA">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="99dp"
android:layout_gravity="center"
android:layout_marginHorizontal="10dp"
android:layout_marginVertical="10dp"
android:background="@drawable/bg_stroke_ffffff_10"
android:baselineAligned="false"
tools:ignore="UselessParent">
<com.google.android.gms.ads.nativead.MediaView
android:id="@+id/ad_media"
android:layout_width="86dp"
android:layout_height="64dp"
android:layout_gravity="center_vertical"
android:layout_marginStart="8dp" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginHorizontal="8dp"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/ad_headline"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="2"
android:singleLine="true"
android:textColor="@color/black"
android:textSize="13sp"
android:textStyle="bold"
tools:text="Your Dlgital Bible Guide Hold The Complete Bible In Your Hand a" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingVertical="5dp">
<ImageView
android:id="@+id/ad_app_icon"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_gravity="center_vertical"
tools:ignore="ContentDescription" />
<TextView
android:id="@+id/ad_body"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:ellipsize="end"
android:maxLines="2"
android:singleLine="true"
android:textColor="#999999"
android:textSize="13sp"
tools:ignore="TextContrastCheck"
tools:text="wuyunbooster" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="| AD"
android:textColor="#999999"
android:textSize="13sp"
tools:ignore="HardcodedText,TextContrastCheck" />
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/ad_call_to_action"
android:layout_width="82dp"
android:layout_height="30dp"
android:layout_gravity="center_vertical"
android:layout_marginHorizontal="12dp"
android:background="@drawable/bg_00b8de_10"
android:gravity="center"
android:maxHeight="28dp"
android:textColor="@color/white"
android:textSize="15sp"
tools:ignore="SpeakableTextPresentCheck,TouchTargetSizeCheck" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</FrameLayout>
</com.google.android.gms.ads.nativead.NativeAdView>
\ No newline at end of file
......@@ -24,5 +24,7 @@
<string name="_0_selected">0 Selected</string>
<string name="share">Share</string>
<string name="delete">Delete</string>
<string name="search">Search…</string>
<string name="not_result">Not Result</string>
</resources>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment