Commit 2fa2ebf2 authored by wanglei's avatar wanglei

...

parent 684634b7
......@@ -25,6 +25,7 @@ data class HomeUIBean(
const val KEY_WORD = "key_word"
const val KEY_EXCEL = "key_excel"
const val KEY_PPT = "key_ppt"
const val KEY_FAVORITES= "key_favorites"
const val KEY_IMAGE_TO_PDF = "key_image_to_pdf"
const val KEY_MERGE_PDF = "key_merge_pdf"
......
......@@ -14,6 +14,7 @@ import com.base.pdfoneread.R
import com.base.pdfoneread.bean.DocumentBean
import com.base.pdfoneread.bean.DocumentBean.Companion.TYPE_ALL
import com.base.pdfoneread.bean.DocumentBean.Companion.TYPE_EXCEL
import com.base.pdfoneread.bean.DocumentBean.Companion.TYPE_FAVORITE
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
......@@ -128,7 +129,12 @@ class DocumentActivity : BaseActivity<ActivityDocumentBinding>(), DialogCallBack
TYPE_PPT -> {
binding.tvTittle.text = getString(R.string.ppt_files)
}
TYPE_FAVORITE -> {
binding.tvTittle.text = getString(R.string.favorite)
}
}
}
override fun initListener() {
......@@ -250,11 +256,15 @@ class DocumentActivity : BaseActivity<ActivityDocumentBinding>(), DialogCallBack
GlobalPptList
}
TYPE_FAVORITE -> {
getGlobalAllList().filter { it.isBookmarked }
}
else -> getGlobalAllList()
}
runOnUI(list, true)
runOnUI(list)
}
private fun initData() = lifecycleScope.launch(Dispatchers.IO) {
......@@ -265,15 +275,17 @@ class DocumentActivity : BaseActivity<ActivityDocumentBinding>(), DialogCallBack
TYPE_WORD -> getWordDocument(context)
TYPE_EXCEL -> getExcelDocument(context)
TYPE_PPT -> getPptDocument(context)
TYPE_FAVORITE -> getAllDocument(context).filter { it.isBookmarked }
else -> getAllDocument(context)
}
runOnUI(list)
}
private fun runOnUI(list: List<DocumentBean>, isPreload: Boolean = false) {
private fun runOnUI(list: List<DocumentBean>) {
LogEx.logDebug(TAG, "runOnUI list size=${list.size}")
lifecycleScope.launch(Dispatchers.Main) {
if (list.isEmpty()) {
if (isPreload) {
if (isDocumentRefreshing.get()) {
binding.swipeRefreshLayout.isRefreshing = true
} else {
binding.llEmpty.visibility = View.VISIBLE
......
......@@ -38,8 +38,12 @@ import java.io.IOException
import java.util.concurrent.CopyOnWriteArrayList
import java.util.concurrent.atomic.AtomicBoolean
//发送刷新结束
var isRefreshOver: MutableSharedFlow<Boolean> = MutableSharedFlow()
//标识刷新中
var isDocumentRefreshing = AtomicBoolean(false)
/**
* 全局数据数据
*/
......@@ -137,9 +141,11 @@ fun getPPtDemo(context: Context): DocumentBean {
return demoDocumentBean
}
@Synchronized
fun getAllDocument(context: Context): MutableList<DocumentBean> {
isDocumentRefreshing.set(true)
context.upDateDemoStore()
if (!ConstObject.haveSaveDemo) {
context.saveAssetsFile()
......@@ -159,12 +165,12 @@ fun getAllDocument(context: Context): MutableList<DocumentBean> {
)
val list = context.getMediaFile(selectionArgs = selectionArgs)
val bookList = SpStringUtils.getSpStringList(BOOKMARK_KEY)
val documentList = list.map {
val documentBean = DocumentBean(it.path, uri = it.uri, type = getDocumentType(it))
when (documentBean.type) {
TYPE_PDF -> {
context.pdfCheck(documentBean)
GlobalPdfList.add(deepCopy(documentBean))
}
......@@ -182,6 +188,7 @@ fun getAllDocument(context: Context): MutableList<DocumentBean> {
}
}
documentBean.isBookmarked = bookList.contains(it.path)
documentBean
}
......@@ -208,23 +215,13 @@ fun getAllDocument(context: Context): MutableList<DocumentBean> {
GlobalPdfList.add(0, pdfDemo)
}
appScope.launch { isRefreshOver.emit(true) }
isDocumentRefreshing.set(false)
return new
}
fun getPdfFastSize(context: Context): Int {
val selectionArgs = arrayOf(
MIME_TYPE_PDF
)
val list = context.getMediaFile(selectionArgs = selectionArgs)
var size = list.size
val pdfDemo = getPdfDemo(context)
if (File(pdfDemo.path).exists()) {
size += 1
}
return size
}
@Synchronized
fun getPdfDocument(context: Context): MutableList<DocumentBean> {
isDocumentRefreshing.set(true)
if (!ConstObject.haveSaveDemo) {
context.saveAssetsFile()
ConstObject.haveSaveDemo = true
......@@ -235,10 +232,12 @@ fun getPdfDocument(context: Context): MutableList<DocumentBean> {
MIME_TYPE_PDF
)
val list = context.getMediaFile(selectionArgs = selectionArgs)
val bookList = SpStringUtils.getSpStringList(BOOKMARK_KEY)
val documentList = list.map {
val documentBean = DocumentBean(it.path, uri = it.uri, type = TYPE_PDF)
context.pdfCheck(documentBean)
GlobalPdfList.add(deepCopy(documentBean))
documentBean.isBookmarked = bookList.contains(it.path)
documentBean
}
val new = documentList.toMutableList()
......@@ -248,10 +247,13 @@ fun getPdfDocument(context: Context): MutableList<DocumentBean> {
GlobalPdfList.add(0, deepCopy(pdfDemo))
}
appScope.launch { isRefreshOver.emit(true) }
isDocumentRefreshing.set(false)
return new
}
@Synchronized
fun getWordDocument(context: Context): MutableList<DocumentBean> {
isDocumentRefreshing.set(true)
if (!ConstObject.haveSaveDemo) {
context.saveAssetsFile()
ConstObject.haveSaveDemo = true
......@@ -262,10 +264,12 @@ fun getWordDocument(context: Context): MutableList<DocumentBean> {
MIME_TYPE_DOCX,
)
val list = context.getMediaFile(selectionArgs = selectionArgs)
val bookList = SpStringUtils.getSpStringList(BOOKMARK_KEY)
val documentList = list.map {
val document = DocumentBean(it.path, uri = it.uri, type = TYPE_WORD)
GlobalWordList.add(deepCopy(document))
document
val documentBean = DocumentBean(it.path, uri = it.uri, type = TYPE_WORD)
GlobalWordList.add(deepCopy(documentBean))
documentBean.isBookmarked = bookList.contains(it.path)
documentBean
}
val new = documentList.toMutableList()
val wordDemo = getWordDemo(context)
......@@ -274,10 +278,13 @@ fun getWordDocument(context: Context): MutableList<DocumentBean> {
GlobalWordList.add(0, deepCopy(wordDemo))
}
appScope.launch { isRefreshOver.emit(true) }
isDocumentRefreshing.set(false)
return new
}
@Synchronized
fun getExcelDocument(context: Context): MutableList<DocumentBean> {
isDocumentRefreshing.set(true)
if (!ConstObject.haveSaveDemo) {
context.saveAssetsFile()
ConstObject.haveSaveDemo = true
......@@ -289,10 +296,12 @@ fun getExcelDocument(context: Context): MutableList<DocumentBean> {
MIME_TYPE_XLSX,
)
val list = context.getMediaFile(selectionArgs = selectionArgs)
val bookList = SpStringUtils.getSpStringList(BOOKMARK_KEY)
val documentList = list.map {
val document = DocumentBean(it.path, uri = it.uri, type = TYPE_EXCEL)
GlobalExcelList.add(deepCopy(document))
document
val documentBean = DocumentBean(it.path, uri = it.uri, type = TYPE_EXCEL)
GlobalExcelList.add(deepCopy(documentBean))
documentBean.isBookmarked = bookList.contains(it.path)
documentBean
}
val new = documentList.toMutableList()
val excelDemo = getExcelDemo(context)
......@@ -301,10 +310,13 @@ fun getExcelDocument(context: Context): MutableList<DocumentBean> {
GlobalExcelList.add(0, deepCopy(excelDemo))
}
appScope.launch { isRefreshOver.emit(true) }
isDocumentRefreshing.set(false)
return new
}
@Synchronized
fun getPptDocument(context: Context): MutableList<DocumentBean> {
isDocumentRefreshing.set(true)
if (!ConstObject.haveSaveDemo) {
context.saveAssetsFile()
ConstObject.haveSaveDemo = true
......@@ -315,10 +327,12 @@ fun getPptDocument(context: Context): MutableList<DocumentBean> {
MIME_TYPE_PPTX,
)
val list = context.getMediaFile(selectionArgs = selectionArgs)
val bookList = SpStringUtils.getSpStringList(BOOKMARK_KEY)
val documentList = list.map {
val document = DocumentBean(it.path, uri = it.uri, type = TYPE_PPT)
GlobalPptList.add(deepCopy(document))
document
val documentBean = DocumentBean(it.path, uri = it.uri, type = TYPE_PPT)
GlobalPptList.add(deepCopy(documentBean))
documentBean.isBookmarked = bookList.contains(it.path)
documentBean
}
val new = documentList.toMutableList()
val pptDemo = getPPtDemo(context)
......@@ -327,10 +341,10 @@ fun getPptDocument(context: Context): MutableList<DocumentBean> {
GlobalPptList.add(0, deepCopy(pptDemo))
}
appScope.launch { isRefreshOver.emit(true) }
isDocumentRefreshing.set(false)
return new
}
fun recentFilter(recentList: List<String>, documentBean: DocumentBean) {
val findLastTime = recentList.filter { it.contains(documentBean.path) }.map {
it.split("_/_")[1].toLong()
......@@ -386,4 +400,17 @@ fun getRvAdList(list: List<DocumentBean>): List<DocumentBean> {
return arrayList
}
return list
}
fun getPdfFastSize(context: Context): Int {
val selectionArgs = arrayOf(
MIME_TYPE_PDF
)
val list = context.getMediaFile(selectionArgs = selectionArgs)
var size = list.size
val pdfDemo = getPdfDemo(context)
if (File(pdfDemo.path).exists()) {
size += 1
}
return size
}
\ No newline at end of file
......@@ -16,6 +16,7 @@ import com.base.pdfoneread.bean.ConstObject.DO_SPLIT_PDF
import com.base.pdfoneread.bean.ConstObject.DO_UNLOCK_PDF
import com.base.pdfoneread.bean.DocumentBean.Companion.TYPE_ALL
import com.base.pdfoneread.bean.DocumentBean.Companion.TYPE_EXCEL
import com.base.pdfoneread.bean.DocumentBean.Companion.TYPE_FAVORITE
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
......@@ -23,6 +24,7 @@ import com.base.pdfoneread.databinding.FragmentHomeBinding
import com.base.pdfoneread.bean.HomeUIBean
import com.base.pdfoneread.bean.HomeUIBean.Companion.KEY_ALL
import com.base.pdfoneread.bean.HomeUIBean.Companion.KEY_EXCEL
import com.base.pdfoneread.bean.HomeUIBean.Companion.KEY_FAVORITES
import com.base.pdfoneread.bean.HomeUIBean.Companion.KEY_IMAGE_PDF
import com.base.pdfoneread.bean.HomeUIBean.Companion.KEY_IMAGE_TO_PDF
import com.base.pdfoneread.bean.HomeUIBean.Companion.KEY_LOCK_PDF
......@@ -45,7 +47,6 @@ import com.base.pdfoneread.ui.document.GlobalWordList
import com.base.pdfoneread.ui.document.getAllDocument
import com.base.pdfoneread.ui.document.getDocumentAppDir
import com.base.pdfoneread.ui.document.getGlobalAllList
import com.base.pdfoneread.ui.pdf.PdfActivity
import com.base.pdfoneread.ui.pdf.PdfSelectActivity
import com.base.pdfoneread.ui.views.NameDialog.showDocumentRenameDialog
import com.base.pdfoneread.utils.LogEx
......@@ -151,6 +152,12 @@ class HomeFragment() : Fragment() {
activity?.let { viewModel.starGmsScan(it) }
}
KEY_FAVORITES -> {
requireContext().startActivity(Intent(requireContext(), DocumentActivity::class.java).apply {
putExtra("type", TYPE_FAVORITE)
})
}
KEY_MERGE_PDF -> {
activity?.let { PdfSelectActivity.jumpSelect(it, DO_MERGE_PDF) }
}
......@@ -269,6 +276,7 @@ class HomeFragment() : Fragment() {
HomeUIBean(KEY_WORD, R.mipmap.h_pdf_word, "Word"),
HomeUIBean(KEY_EXCEL, R.mipmap.h_pdf_excel, "Excel"),
HomeUIBean(KEY_PPT, R.mipmap.h_pdf_ppt, "PPT"),
HomeUIBean(KEY_FAVORITES, R.mipmap.h_pdf_favorites, "Favorites"),
HomeUIBean(uiType = UI_TYPE_TITTLE).apply {
isTittle = true
......
......@@ -154,6 +154,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
disSelectTab()
binding.ivRecent.isSelected = true
binding.tvRecent.isSelected = true
binding.flRvMode.visibility = View.INVISIBLE
binding.flSearch.visibility = View.VISIBLE
binding.tvTittle.text = resources.getString(R.string.recent)
......@@ -168,6 +170,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
disSelectTab()
binding.ivSetting.isSelected = true
binding.tvSetting.isSelected = true
binding.flRvMode.visibility = View.INVISIBLE
binding.flSearch.visibility = View.INVISIBLE
binding.tvTittle.text = resources.getString(R.string.settings)
if (getNavCurrentFragment() !is SettingFragment) {
......
......@@ -26,6 +26,8 @@
android:layout_marginVertical="24dp"
android:layout_marginStart="24dp"
android:textColor="@color/black"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
......
......@@ -75,5 +75,6 @@
<string name="thanks_feedback">Thanks for your feedback.</string>
<string name="rate_tip">We are working hard for a better\nuser experience.\nWe\'d greatly appreciate if you\ncan rate us.</string>
<string name="send">Send</string>
<string name="favorite">Favorite</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