Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
P
PDF Viewer Scanner White ago
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
kuxulei
PDF Viewer Scanner White ago
Commits
fb4966ef
Commit
fb4966ef
authored
Sep 29, 2024
by
wanglei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
...
parent
a4d8ecd3
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
329 additions
and
132 deletions
+329
-132
ConstObject.kt
...n/java/com/base/pdfviewerscannerwhite/bean/ConstObject.kt
+3
-3
PdfSelectActivity.kt
...dfviewerscannerwhite/ui/document/pdf/PdfSelectActivity.kt
+1
-1
DocumentAdapter.kt
...com/base/pdfviewerscannerwhite/ui/main/DocumentAdapter.kt
+1
-1
DocumentFragment.kt
...om/base/pdfviewerscannerwhite/ui/main/DocumentFragment.kt
+33
-28
DocumentPageFragment.kt
...ase/pdfviewerscannerwhite/ui/main/DocumentPageFragment.kt
+13
-55
DocumentPresenter.kt
...m/base/pdfviewerscannerwhite/ui/main/DocumentPresenter.kt
+0
-4
MainActivity.kt
...va/com/base/pdfviewerscannerwhite/ui/main/MainActivity.kt
+28
-12
MainActivity3.kt
...a/com/base/pdfviewerscannerwhite/ui/main/MainActivity3.kt
+1
-1
MainPresenter.kt
...a/com/base/pdfviewerscannerwhite/ui/main/MainPresenter.kt
+226
-1
MainView.kt
...n/java/com/base/pdfviewerscannerwhite/ui/main/MainView.kt
+1
-3
DialogView.kt
...java/com/base/pdfviewerscannerwhite/ui/view/DialogView.kt
+9
-9
PdfDialog.kt
.../java/com/base/pdfviewerscannerwhite/ui/view/PdfDialog.kt
+13
-14
No files found.
app/src/main/java/com/base/pdfviewerscannerwhite/bean/ConstObject.kt
View file @
fb4966ef
...
...
@@ -26,9 +26,9 @@ object ConstObject {
const
val
DO_LOCK_PDF
=
"do_lock_pdf"
const
val
DO_UNLOCK_PDF
=
"do_unlock_pdf"
const
val
DOCUMENT_
UI
_TYPE
=
"document"
const
val
RECENT_
UI
_TYPE
=
"recent"
const
val
BOOKMARK_
UI
_TYPE
=
"bookmark"
const
val
DOCUMENT_
DATA
_TYPE
=
"document"
const
val
RECENT_
DATA
_TYPE
=
"recent"
const
val
BOOKMARK_
DATA
_TYPE
=
"bookmark"
const
val
UI_MODE_NORMAL
=
"ui_mode_normal"
const
val
UI_MODE_SELECT
=
"ui_mode_select"
...
...
app/src/main/java/com/base/pdfviewerscannerwhite/ui/document/pdf/PdfSelectActivity.kt
View file @
fb4966ef
...
...
@@ -12,7 +12,7 @@ import com.base.pdfviewerscannerwhite.bean.ConstObject.DO_UNLOCK_PDF
import
com.base.pdfviewerscannerwhite.bean.DocumentBean
import
com.base.pdfviewerscannerwhite.databinding.ActivityPdfSelectBinding
import
com.base.pdfviewerscannerwhite.helper.BaseActivity
import
com.base.pdfviewerscannerwhite.ui.
adapter
.DocumentAdapter
import
com.base.pdfviewerscannerwhite.ui.
main
.DocumentAdapter
import
com.base.pdfviewerscannerwhite.ui.main.DocumentPresenter
import
com.base.pdfviewerscannerwhite.ui.main.DocumentView
import
com.base.pdfviewerscannerwhite.ui.view.PdfDialog.showPdfPwdDialog
...
...
app/src/main/java/com/base/pdfviewerscannerwhite/ui/
adapter
/DocumentAdapter.kt
→
app/src/main/java/com/base/pdfviewerscannerwhite/ui/
main
/DocumentAdapter.kt
View file @
fb4966ef
package
com.base.pdfviewerscannerwhite.ui.
adapter
package
com.base.pdfviewerscannerwhite.ui.
main
import
android.annotation.SuppressLint
import
android.content.Context
...
...
app/src/main/java/com/base/pdfviewerscannerwhite/ui/main/DocumentFragment.kt
View file @
fb4966ef
...
...
@@ -10,64 +10,63 @@ import androidx.viewpager2.widget.ViewPager2
import
com.angcyo.tablayout.DslTabIndicator
import
com.angcyo.tablayout.delegate2.ViewPager2Delegate
import
com.base.pdfviewerscannerwhite.R
import
com.base.pdfviewerscannerwhite.bean.ConstObject.BOOKMARK_
UI
_TYPE
import
com.base.pdfviewerscannerwhite.bean.ConstObject.DOCUMENT_
UI
_TYPE
import
com.base.pdfviewerscannerwhite.bean.ConstObject.RECENT_
UI
_TYPE
import
com.base.pdfviewerscannerwhite.bean.ConstObject.BOOKMARK_
DATA
_TYPE
import
com.base.pdfviewerscannerwhite.bean.ConstObject.DOCUMENT_
DATA
_TYPE
import
com.base.pdfviewerscannerwhite.bean.ConstObject.RECENT_
DATA
_TYPE
import
com.base.pdfviewerscannerwhite.bean.ConstObject.UI_MODE_NORMAL
import
com.base.pdfviewerscannerwhite.bean.ConstObject.UI_MODE_SEARCH
import
com.base.pdfviewerscannerwhite.bean.ConstObject.UI_MODE_SELECT
import
com.base.pdfviewerscannerwhite.bean.DocumentBean
import
com.base.pdfviewerscannerwhite.databinding.FragmentDocumentBinding
import
com.base.pdfviewerscannerwhite.helper.BaseFragment
import
com.base.pdfviewerscannerwhite.ui.adapter.DocumentAdapter
import
com.base.pdfviewerscannerwhite.ui.main.MainActivity.Companion.jumpDocument
import
com.base.pdfviewerscannerwhite.utils.KeyBoardUtils.hideKeyboard
import
com.base.pdfviewerscannerwhite.utils.KeyBoardUtils.showKeyBoard
import
com.base.pdfviewerscannerwhite.utils.LogEx
class
DocumentFragment
(
val
t
ype
:
String
=
""
val
dataT
ype
:
String
=
""
)
:
BaseFragment
<
FragmentDocumentBinding
>()
{
private
val
TAG
=
"DocumentFragment"
private
val
pdfPage
:
DocumentPageFragment
by
lazy
{
DocumentPageFragment
(
DocumentBean
.
TYPE_PDF
)
DocumentPageFragment
(
DocumentBean
.
TYPE_PDF
,
dataType
)
}
private
val
wordPage
:
DocumentPageFragment
by
lazy
{
DocumentPageFragment
(
DocumentBean
.
TYPE_WORD
)
DocumentPageFragment
(
DocumentBean
.
TYPE_WORD
,
dataType
)
}
private
val
excelPage
:
DocumentPageFragment
by
lazy
{
DocumentPageFragment
(
DocumentBean
.
TYPE_EXCEL
)
DocumentPageFragment
(
DocumentBean
.
TYPE_EXCEL
,
dataType
)
}
private
val
pptPage
:
DocumentPageFragment
by
lazy
{
DocumentPageFragment
(
DocumentBean
.
TYPE_PPT
)
DocumentPageFragment
(
DocumentBean
.
TYPE_PPT
,
dataType
)
}
private
val
fragments
by
lazy
{
mutableListOf
(
pdfPage
,
wordPage
,
excelPage
,
pptPage
)
}
private
var
currentFragment
:
Fragment
=
pdfPage
var
currentPage
:
DocumentPage
Fragment
=
pdfPage
override
val
binding
:
FragmentDocumentBinding
by
lazy
{
FragmentDocumentBinding
.
inflate
(
layoutInflater
)
}
private
lateinit
var
searchAdapter
:
DocumentAdapter
lateinit
var
searchAdapter
:
DocumentAdapter
var
uiMode
=
UI_MODE_NORMAL
@SuppressLint
(
"SetTextI18n"
)
override
fun
setView
()
{
when
(
t
ype
)
{
DOCUMENT_
UI
_TYPE
->
{
when
(
dataT
ype
)
{
DOCUMENT_
DATA
_TYPE
->
{
binding
.
tvTittle
.
text
=
"Document"
}
RECENT_
UI
_TYPE
->
{
RECENT_
DATA
_TYPE
->
{
binding
.
tvTittle
.
text
=
"Recent"
binding
.
ivPaixu
.
visibility
=
View
.
INVISIBLE
}
BOOKMARK_
UI
_TYPE
->
{
BOOKMARK_
DATA
_TYPE
->
{
binding
.
tvTittle
.
text
=
"Bookmark"
}
...
...
@@ -81,9 +80,7 @@ class DocumentFragment(
searchAdapter
=
DocumentAdapter
()
binding
.
rvSearch
.
adapter
=
searchAdapter
searchAdapter
.
moreAction
=
{
item
->
if
(
currentFragment
is
DocumentPageFragment
)
{
(
currentFragment
as
DocumentPageFragment
).
documentMoreAction
.
invoke
(
item
)
}
currentPage
.
documentMoreAction
.
invoke
(
item
)
}
searchAdapter
.
itemClick
=
{
requireActivity
().
jumpDocument
(
it
)
...
...
@@ -117,7 +114,6 @@ class DocumentFragment(
}
}
private
fun
initPageViewer
()
{
binding
.
viewPager2
.
run
{
isUserInputEnabled
=
true
...
...
@@ -144,7 +140,7 @@ class DocumentFragment(
}
override
fun
onPageSelected
(
position
:
Int
)
{
current
Fragment
=
fragments
[
position
]
current
Page
=
fragments
[
position
]
}
})
}
...
...
@@ -213,8 +209,8 @@ class DocumentFragment(
(
requireActivity
()
as
MainActivity
).
changeSelectUI
(
true
)
if
(
current
Fragment
is
DocumentPageFragment
)
{
(
current
Fragment
as
DocumentPageFragment
).
changeSelectUi
(
true
)
if
(
current
Page
is
DocumentPageFragment
)
{
(
current
Page
as
DocumentPageFragment
).
changeSelectUi
(
true
)
}
}
else
{
binding
.
viewPager2
.
isUserInputEnabled
=
true
...
...
@@ -223,7 +219,7 @@ class DocumentFragment(
binding
.
flFanhui
.
visibility
=
View
.
INVISIBLE
binding
.
ivAllSelector
.
visibility
=
View
.
INVISIBLE
if
(
type
!=
RECENT_UI
_TYPE
)
{
if
(
dataType
!=
RECENT_DATA
_TYPE
)
{
binding
.
ivPaixu
.
visibility
=
View
.
VISIBLE
}
binding
.
ivXuanze
.
visibility
=
View
.
VISIBLE
...
...
@@ -237,8 +233,8 @@ class DocumentFragment(
}
private
fun
changePageSelect
(
select
:
Boolean
)
{
if
(
current
Fragment
is
DocumentPageFragment
)
{
(
current
Fragment
as
DocumentPageFragment
).
changItemSelect
(
select
)
if
(
current
Page
is
DocumentPageFragment
)
{
(
current
Page
as
DocumentPageFragment
).
changItemSelect
(
select
)
}
}
...
...
@@ -255,6 +251,7 @@ class DocumentFragment(
binding
.
flFanhui
.
visibility
=
View
.
VISIBLE
binding
.
editSearch
.
visibility
=
View
.
VISIBLE
binding
.
flSearch
.
visibility
=
View
.
VISIBLE
(
requireActivity
()
as
MainActivity
).
changeSearchUI
(
true
)
...
...
@@ -266,15 +263,19 @@ class DocumentFragment(
binding
.
editSearch
.
visibility
=
View
.
INVISIBLE
binding
.
flFanhui
.
visibility
=
View
.
INVISIBLE
binding
.
flSearch
.
visibility
=
View
.
INVISIBLE
binding
.
tvTittle
.
visibility
=
View
.
VISIBLE
if
(
dataType
!=
RECENT_DATA_TYPE
)
{
binding
.
ivPaixu
.
visibility
=
View
.
VISIBLE
}
binding
.
ivXuanze
.
visibility
=
View
.
VISIBLE
binding
.
llMainContent
.
visibility
=
View
.
VISIBLE
(
requireActivity
()
as
MainActivity
).
changeSearchUI
(
false
)
requireContext
().
hideKeyboard
(
binding
.
editSearch
)
searchAdapter
.
submitList
(
listOf
())
}
}
...
...
@@ -283,8 +284,8 @@ class DocumentFragment(
private
fun
searchDocument
()
{
if
(
binding
.
editSearch
.
text
.
isNotEmpty
())
{
val
search
=
binding
.
editSearch
.
text
.
toString
()
if
(
current
Fragment
is
DocumentPageFragment
)
{
val
item
=
(
current
Fragment
as
DocumentPageFragment
).
getSearchItems
(
search
)
if
(
current
Page
is
DocumentPageFragment
)
{
val
item
=
(
current
Page
as
DocumentPageFragment
).
getSearchItems
(
search
)
if
(
item
.
isNotEmpty
())
{
item
.
map
{
it
.
uiType
=
4
}
searchAdapter
.
submitList
(
item
)
...
...
@@ -295,4 +296,8 @@ class DocumentFragment(
}
}
fun
searchDeleteDocument
(
item
:
DocumentBean
)
{
searchAdapter
.
remove
(
item
)
}
}
\ No newline at end of file
app/src/main/java/com/base/pdfviewerscannerwhite/ui/main/DocumentPageFragment.kt
View file @
fb4966ef
package
com.base.pdfviewerscannerwhite.ui.main
import
android.annotation.SuppressLint
import
android.app.Activity
import
android.content.Intent
import
androidx.core.view.isVisible
import
androidx.lifecycle.lifecycleScope
...
...
@@ -13,19 +12,11 @@ import com.base.pdfviewerscannerwhite.bean.DocumentBean.Companion.TYPE_PPT
import
com.base.pdfviewerscannerwhite.bean.DocumentBean.Companion.TYPE_WORD
import
com.base.pdfviewerscannerwhite.databinding.FragmentDocumentPageBinding
import
com.base.pdfviewerscannerwhite.helper.BaseFragment
import
com.base.pdfviewerscannerwhite.ui.adapter.DocumentAdapter
import
com.base.pdfviewerscannerwhite.ui.document.excel.ExcelActivity
import
com.base.pdfviewerscannerwhite.ui.document.pdf.PdfActivity
import
com.base.pdfviewerscannerwhite.ui.document.pdf.PdfSelectActivity
import
com.base.pdfviewerscannerwhite.ui.document.pdf.PdfSplitActivity
import
com.base.pdfviewerscannerwhite.ui.document.ppt.PptActivity
import
com.base.pdfviewerscannerwhite.ui.document.word.WordActivity
import
com.base.pdfviewerscannerwhite.ui.main.MainActivity.Companion.jumpDocument
import
com.base.pdfviewerscannerwhite.ui.view.DialogView.showDocumentHomeMoreDialog
import
com.base.pdfviewerscannerwhite.ui.view.PdfDialog.showPdfHomeMoreDialog
import
com.base.pdfviewerscannerwhite.ui.view.PdfDialog.showPdfPwdDialog
import
com.base.pdfviewerscannerwhite.utils.LogEx
import
com.base.pdfviewerscannerwhite.utils.PermissionUtils.checkStorePermission
import
java.io.File
import
java.util.Locale
...
...
@@ -33,12 +24,14 @@ class DocumentPageFragment() : BaseFragment<FragmentDocumentPageBinding>(), Docu
private
val
TAG
=
"DocumentFragment"
var
type
=
TYPE_PDF
var
dataType
:
String
=
""
private
var
documentList
:
ArrayList
<
DocumentBean
>
=
arrayListOf
()
lateinit
var
adapter
:
DocumentAdapter
lateinit
var
documentPresenter
:
DocumentPresenter
constructor
(
type
:
String
)
:
this
()
{
constructor
(
type
:
String
,
dataType
:
String
)
:
this
()
{
this
.
type
=
type
this
.
dataType
=
dataType
}
override
val
binding
:
FragmentDocumentPageBinding
by
lazy
{
...
...
@@ -53,15 +46,18 @@ class DocumentPageFragment() : BaseFragment<FragmentDocumentPageBinding>(), Docu
override
fun
onResume
()
{
super
.
onResume
()
init
Data
()
refresh
Data
()
}
fun
initData
()
{
if
(
requireContext
().
checkStorePermission
())
{
documentPresenter
.
initData
()
fun
refreshData
()
{
if
(
isVisible
)
{
val
list
=
(
requireActivity
()
as
MainActivity
).
mainPresenter
.
getDataByType
(
type
,
dataType
)
adapter
.
submitList
(
list
)
binding
.
llEmpty
.
isVisible
=
list
.
isEmpty
()
}
}
override
fun
refreshDocumentRv
(
documentList
:
List
<
DocumentBean
>)
{
binding
.
llEmpty
.
isVisible
=
documentList
.
isEmpty
()
this
.
documentList
.
clear
()
...
...
@@ -84,15 +80,15 @@ class DocumentPageFragment() : BaseFragment<FragmentDocumentPageBinding>(), Docu
}
var
documentMoreAction
:
(
item
:
DocumentBean
)
->
Unit
=
{
item
->
val
mainActivity
=
(
requireActivity
()
as
MainActivity
)
val
documentFragment
=
parentFragment
as
DocumentFragment
if
(
item
.
type
==
TYPE_PDF
)
{
requireContext
().
showPdfHomeMoreDialog
(
item
,
adapter
,
this
,
mainActivity
item
,
adapter
,
this
,
documentFragment
)
}
if
(
item
.
type
==
TYPE_WORD
||
item
.
type
==
TYPE_EXCEL
||
item
.
type
==
TYPE_PPT
)
{
requireContext
().
showDocumentHomeMoreDialog
(
item
,
this
,
mainActivity
)
// requireContext().showDocumentHomeMoreDialog(item, this, documentFragment
)
}
}
...
...
@@ -117,34 +113,6 @@ class DocumentPageFragment() : BaseFragment<FragmentDocumentPageBinding>(), Docu
binding
.
llEmpty
.
isVisible
=
adapter
.
items
.
isEmpty
()
}
fun
setRecentList
()
{
if
(
isVisible
)
{
val
recentList
=
documentList
.
filter
{
(
System
.
currentTimeMillis
()
-
File
(
it
.
path
).
lastModified
())
<
300L
*
24
*
60
*
60
*
1000
}
binding
.
llEmpty
.
isVisible
=
recentList
.
isEmpty
()
adapter
.
submitList
(
recentList
)
}
}
fun
setAllList
()
{
if
(
isVisible
)
{
adapter
.
submitList
(
documentList
)
binding
.
llEmpty
.
isVisible
=
documentList
.
isEmpty
()
}
}
fun
setBookmarkList
()
{
if
(
isVisible
)
{
val
bookmarkList
=
documentList
.
filter
{
it
.
isBookmarked
}
binding
.
llEmpty
.
isVisible
=
bookmarkList
.
isEmpty
()
adapter
.
submitList
(
bookmarkList
)
}
}
@SuppressLint
(
"NotifyDataSetChanged"
)
fun
changeSelectUi
(
select
:
Boolean
)
{
if
(
isVisible
)
{
...
...
@@ -185,14 +153,4 @@ class DocumentPageFragment() : BaseFragment<FragmentDocumentPageBinding>(), Docu
return
listOf
()
}
@SuppressLint
(
"NotifyDataSetChanged"
)
fun
changeHomeUI
()
{
if
(
isVisible
)
{
adapter
.
items
.
map
{
it
.
uiType
==
0
}
adapter
.
notifyDataSetChanged
()
}
}
}
\ No newline at end of file
app/src/main/java/com/base/pdfviewerscannerwhite/ui/main/DocumentPresenter.kt
View file @
fb4966ef
...
...
@@ -6,10 +6,6 @@ import com.base.pdfviewerscannerwhite.bean.ConstObject
import
com.base.pdfviewerscannerwhite.bean.ConstObject.haveSaveDemo
import
com.base.pdfviewerscannerwhite.bean.DocumentBean
import
com.base.pdfviewerscannerwhite.ui.document.pdf.PdfBoxUtils
import
com.base.pdfviewerscannerwhite.utils.AssetUtils.getDemoDocx
import
com.base.pdfviewerscannerwhite.utils.AssetUtils.getDemoPdf
import
com.base.pdfviewerscannerwhite.utils.AssetUtils.getDemoPptx
import
com.base.pdfviewerscannerwhite.utils.AssetUtils.getDemoXlsx
import
com.base.pdfviewerscannerwhite.utils.AssetUtils.saveAssetsFile
import
com.base.pdfviewerscannerwhite.utils.LogEx
import
com.base.pdfviewerscannerwhite.utils.SpStringUtils
...
...
app/src/main/java/com/base/pdfviewerscannerwhite/ui/main/MainActivity.kt
View file @
fb4966ef
...
...
@@ -6,11 +6,12 @@ import android.net.Uri
import
android.view.View
import
androidx.activity.OnBackPressedCallback
import
androidx.fragment.app.Fragment
import
androidx.lifecycle.lifecycleScope
import
com.base.pdfviewerscannerwhite.R
import
com.base.pdfviewerscannerwhite.bean.ConstObject
import
com.base.pdfviewerscannerwhite.bean.ConstObject.BOOKMARK_
UI
_TYPE
import
com.base.pdfviewerscannerwhite.bean.ConstObject.DOCUMENT_
UI
_TYPE
import
com.base.pdfviewerscannerwhite.bean.ConstObject.RECENT_
UI
_TYPE
import
com.base.pdfviewerscannerwhite.bean.ConstObject.BOOKMARK_
DATA
_TYPE
import
com.base.pdfviewerscannerwhite.bean.ConstObject.DOCUMENT_
DATA
_TYPE
import
com.base.pdfviewerscannerwhite.bean.ConstObject.RECENT_
DATA
_TYPE
import
com.base.pdfviewerscannerwhite.bean.DocumentBean
import
com.base.pdfviewerscannerwhite.databinding.ActivityMain2Binding
import
com.base.pdfviewerscannerwhite.helper.BaseActivity
...
...
@@ -19,23 +20,25 @@ import com.base.pdfviewerscannerwhite.ui.document.pdf.PdfActivity
import
com.base.pdfviewerscannerwhite.ui.document.ppt.PptActivity
import
com.base.pdfviewerscannerwhite.ui.document.word.WordActivity
import
com.base.pdfviewerscannerwhite.ui.view.DialogView.showDeleteDialog
import
com.base.pdfviewerscannerwhite.ui.view.DialogView.showStoragePermission
import
com.base.pdfviewerscannerwhite.ui.view.PdfDialog.showPdfPwdDialog
import
com.base.pdfviewerscannerwhite.utils.IntentShareUtils.shareMutDocuments
import
com.base.pdfviewerscannerwhite.utils.PermissionUtils.checkStorePermission
class
MainActivity
:
BaseActivity
<
ActivityMain2Binding
>(),
MainView
{
private
lateinit
var
mainPresenter
:
MainPresenter
lateinit
var
mainPresenter
:
MainPresenter
override
val
binding
:
ActivityMain2Binding
by
lazy
{
ActivityMain2Binding
.
inflate
(
layoutInflater
)
}
private
val
documentFragment
:
DocumentFragment
by
lazy
{
DocumentFragment
(
DOCUMENT_
UI
_TYPE
)
DocumentFragment
(
DOCUMENT_
DATA
_TYPE
)
}
private
val
recentFragment
:
DocumentFragment
by
lazy
{
DocumentFragment
(
RECENT_
UI
_TYPE
)
DocumentFragment
(
RECENT_
DATA
_TYPE
)
}
private
val
bookmarkFragment
:
DocumentFragment
by
lazy
{
DocumentFragment
(
BOOKMARK_
UI
_TYPE
)
DocumentFragment
(
BOOKMARK_
DATA
_TYPE
)
}
private
val
toolFragment
:
Fragment
by
lazy
{
ToolFragment
()
...
...
@@ -43,7 +46,19 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView {
private
var
currentFragment
:
Fragment
=
documentFragment
override
fun
initView
()
{
mainPresenter
=
MainPresenter
(
this
,
this
)
mainPresenter
=
MainPresenter
(
this
,
this
,
lifecycleScope
)
}
override
fun
onResume
()
{
super
.
onResume
()
if
(
checkStorePermission
()
&&
needRefresh
)
{
mainPresenter
.
initAllDocumentData
()
}
else
{
showStoragePermission
(
launcher
,
allowAction
=
{
mainPresenter
.
initAllDocumentData
()
})
}
}
var
isDocumentAdd
:
Boolean
=
false
...
...
@@ -200,13 +215,13 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView {
}
override
fun
refreshSearchRv
()
{
override
fun
refreshPageList
()
{
if
(
currentFragment
is
DocumentFragment
)
{
(
currentFragment
as
DocumentFragment
).
currentPage
.
refreshData
()
}
override
fun
deleteDocument
(
item
:
DocumentBean
)
{
}
fun
changeSearchUI
(
show
:
Boolean
)
{
if
(
show
)
{
binding
.
ivScan
.
visibility
=
View
.
INVISIBLE
...
...
@@ -219,6 +234,7 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView {
}
companion
object
{
var
needRefresh
:
Boolean
=
true
fun
Activity
.
jumpDocument
(
item
:
DocumentBean
)
{
if
(
item
.
type
==
DocumentBean
.
TYPE_PDF
)
{
if
(
item
.
state
==
0
)
{
...
...
app/src/main/java/com/base/pdfviewerscannerwhite/ui/main/MainActivity3.kt
View file @
fb4966ef
...
...
@@ -17,7 +17,7 @@
//import com.base.pdfviewerscannerwhite.bean.DocumentBean
//import com.base.pdfviewerscannerwhite.databinding.ActivityMainBinding
//import com.base.pdfviewerscannerwhite.helper.BaseActivity
//import com.base.pdfviewerscannerwhite.ui.
adapter
.DocumentAdapter
//import com.base.pdfviewerscannerwhite.ui.
main
.DocumentAdapter
//import com.base.pdfviewerscannerwhite.ui.main.DocumentPageFragment.Companion.jumpDocument
//import com.base.pdfviewerscannerwhite.ui.view.DialogView.showDeleteDialog
//import com.base.pdfviewerscannerwhite.ui.view.DialogView.showDocumentRenameDialog
...
...
app/src/main/java/com/base/pdfviewerscannerwhite/ui/main/MainPresenter.kt
View file @
fb4966ef
...
...
@@ -8,8 +8,25 @@ import androidx.activity.result.ActivityResultLauncher
import
androidx.activity.result.IntentSenderRequest
import
androidx.activity.result.contract.ActivityResultContracts
import
androidx.appcompat.app.AppCompatActivity
import
androidx.lifecycle.LifecycleCoroutineScope
import
com.base.pdfviewerscannerwhite.bean.ConstObject
import
com.base.pdfviewerscannerwhite.bean.ConstObject.BOOKMARK_DATA_TYPE
import
com.base.pdfviewerscannerwhite.bean.ConstObject.DOCUMENT_DATA_TYPE
import
com.base.pdfviewerscannerwhite.bean.ConstObject.MIME_TYPE_DOC
import
com.base.pdfviewerscannerwhite.bean.ConstObject.MIME_TYPE_PDF
import
com.base.pdfviewerscannerwhite.bean.ConstObject.MIME_TYPE_PPT
import
com.base.pdfviewerscannerwhite.bean.ConstObject.MIME_TYPE_XLS
import
com.base.pdfviewerscannerwhite.bean.ConstObject.RECENT_DATA_TYPE
import
com.base.pdfviewerscannerwhite.bean.DocumentBean
import
com.base.pdfviewerscannerwhite.bean.DocumentBean.Companion.TYPE_EXCEL
import
com.base.pdfviewerscannerwhite.bean.DocumentBean.Companion.TYPE_PDF
import
com.base.pdfviewerscannerwhite.bean.DocumentBean.Companion.TYPE_PPT
import
com.base.pdfviewerscannerwhite.bean.DocumentBean.Companion.TYPE_WORD
import
com.base.pdfviewerscannerwhite.utils.AssetUtils.saveAssetsFile
import
com.base.pdfviewerscannerwhite.utils.SpStringUtils
import
com.base.pdfviewerscannerwhite.utils.ToastUtils.toast
import
com.base.pdfviewerscannerwhite.utils.getMediaFile
import
com.base.pdfviewerscannerwhite.utils.upDateDemoStore
import
com.base.pdfviewerscannerwhite.utils.updateMediaStore
import
com.google.mlkit.vision.documentscanner.GmsDocumentScannerOptions
import
com.google.mlkit.vision.documentscanner.GmsDocumentScanning
...
...
@@ -21,11 +38,219 @@ import java.io.File
class
MainPresenter
(
val
context
:
Context
,
val
mainView
:
MainView
val
mainView
:
MainView
,
val
lifecycleScope
:
LifecycleCoroutineScope
)
{
//所有fragment的数据,都从这里取
val
pdfDocuments
=
arrayListOf
<
DocumentBean
>()
val
wordDocuments
=
arrayListOf
<
DocumentBean
>()
val
excelDocuments
=
arrayListOf
<
DocumentBean
>()
val
pptDocuments
=
arrayListOf
<
DocumentBean
>()
private
lateinit
var
scannerLauncher
:
ActivityResultLauncher
<
IntentSenderRequest
>
fun
initAllDocumentData
()
=
lifecycleScope
.
launch
(
Dispatchers
.
IO
)
{
context
.
upDateDemoStore
()
if
(!
ConstObject
.
haveSaveDemo
)
{
context
.
saveAssetsFile
()
ConstObject
.
haveSaveDemo
=
true
}
pdfDocuments
.
addAll
(
initAllPdfData
())
lifecycleScope
.
launch
(
Dispatchers
.
Main
)
{
mainView
.
refreshPageList
()
}
wordDocuments
.
addAll
(
initAllWordData
())
lifecycleScope
.
launch
(
Dispatchers
.
Main
)
{
mainView
.
refreshPageList
()
}
excelDocuments
.
addAll
(
initAllExcelData
())
lifecycleScope
.
launch
(
Dispatchers
.
Main
)
{
mainView
.
refreshPageList
()
}
pptDocuments
.
addAll
(
initAllPptData
())
lifecycleScope
.
launch
(
Dispatchers
.
Main
)
{
mainView
.
refreshPageList
()
}
}
fun
getDataByType
(
documentType
:
String
,
dataType
:
String
):
List
<
DocumentBean
>
{
val
bookmarkList
=
SpStringUtils
.
getSpStringList
(
SpStringUtils
.
BOOKMARK_KEY
)
when
(
documentType
)
{
TYPE_PDF
->
{
when
(
dataType
)
{
DOCUMENT_DATA_TYPE
->
{
return
pdfDocuments
}
RECENT_DATA_TYPE
->
{
return
pdfDocuments
.
filter
{
recentFilter
(
it
)
}
}
BOOKMARK_DATA_TYPE
->
{
pdfDocuments
.
forEach
{
it
.
isBookmarked
=
bookmarkList
.
contains
(
it
.
path
)
}
return
pdfDocuments
.
filter
{
it
.
isBookmarked
}
}
}
}
TYPE_WORD
->
{
when
(
dataType
)
{
DOCUMENT_DATA_TYPE
->
{
return
wordDocuments
}
RECENT_DATA_TYPE
->
{
return
wordDocuments
.
filter
{
recentFilter
(
it
)
}
}
BOOKMARK_DATA_TYPE
->
{
wordDocuments
.
forEach
{
it
.
isBookmarked
=
bookmarkList
.
contains
(
it
.
path
)
}
return
wordDocuments
.
filter
{
it
.
isBookmarked
}
}
}
}
TYPE_EXCEL
->
{
when
(
dataType
)
{
DOCUMENT_DATA_TYPE
->
{
return
excelDocuments
}
RECENT_DATA_TYPE
->
{
return
excelDocuments
.
filter
{
recentFilter
(
it
)
}
}
BOOKMARK_DATA_TYPE
->
{
excelDocuments
.
forEach
{
it
.
isBookmarked
=
bookmarkList
.
contains
(
it
.
path
)
}
return
excelDocuments
.
filter
{
it
.
isBookmarked
}
}
}
}
TYPE_PPT
->
{
when
(
dataType
)
{
DOCUMENT_DATA_TYPE
->
{
return
pptDocuments
}
RECENT_DATA_TYPE
->
{
return
pptDocuments
.
filter
{
recentFilter
(
it
)
}
}
BOOKMARK_DATA_TYPE
->
{
pptDocuments
.
forEach
{
it
.
isBookmarked
=
bookmarkList
.
contains
(
it
.
path
)
}
return
pptDocuments
.
filter
{
it
.
isBookmarked
}
}
}
}
}
return
listOf
()
}
fun
recentFilter
(
documentBean
:
DocumentBean
):
Boolean
{
return
(
System
.
currentTimeMillis
()
-
File
(
documentBean
.
path
).
lastModified
())
<
300L
*
24
*
60
*
60
*
1000
}
private
fun
initAllPdfData
():
MutableList
<
DocumentBean
>
{
val
demoDocumentBean
=
DocumentBean
()
demoDocumentBean
.
type
=
TYPE_PDF
val
demoFile
=
File
(
context
.
filesDir
,
"demo"
)
val
selectionArgs
=
arrayOf
(
ConstObject
.
MIME_TYPE_PDF
)
demoDocumentBean
.
path
=
demoFile
.
listFiles
()
?.
find
{
it
.
name
.
contains
(
".pdf"
)
}
?.
absolutePath
?:
""
val
list
=
context
.
getMediaFile
(
selectionArgs
=
selectionArgs
)
val
documentList
=
list
.
map
{
DocumentBean
(
it
.
path
,
uri
=
it
.
uri
,
type
=
TYPE_PDF
)
}
val
new
=
documentList
.
toMutableList
()
if
(
File
(
demoDocumentBean
.
path
).
exists
())
{
new
.
add
(
0
,
demoDocumentBean
)
}
return
new
}
private
fun
initAllWordData
():
MutableList
<
DocumentBean
>
{
val
demoDocumentBean
=
DocumentBean
()
demoDocumentBean
.
type
=
TYPE_WORD
val
demoFile
=
File
(
context
.
filesDir
,
"demo"
)
val
selectionArgs
=
arrayOf
(
ConstObject
.
MIME_TYPE_DOC
,
ConstObject
.
MIME_TYPE_DOCX
)
demoDocumentBean
.
path
=
demoFile
.
listFiles
()
?.
find
{
it
.
name
.
contains
(
".docx"
)
}
?.
absolutePath
?:
""
val
list
=
context
.
getMediaFile
(
selectionArgs
=
selectionArgs
)
val
documentList
=
list
.
map
{
DocumentBean
(
it
.
path
,
uri
=
it
.
uri
,
type
=
TYPE_WORD
)
}
val
new
=
documentList
.
toMutableList
()
if
(
File
(
demoDocumentBean
.
path
).
exists
())
{
new
.
add
(
0
,
demoDocumentBean
)
}
return
new
}
private
fun
initAllExcelData
():
MutableList
<
DocumentBean
>
{
val
demoDocumentBean
=
DocumentBean
()
demoDocumentBean
.
type
=
TYPE_EXCEL
val
demoFile
=
File
(
context
.
filesDir
,
"demo"
)
val
selectionArgs
=
arrayOf
(
ConstObject
.
MIME_TYPE_XLS
,
ConstObject
.
MIME_TYPE_XLSX
)
demoDocumentBean
.
path
=
demoFile
.
listFiles
()
?.
find
{
it
.
name
.
contains
(
".xlsx"
)
}
?.
absolutePath
?:
""
val
list
=
context
.
getMediaFile
(
selectionArgs
=
selectionArgs
)
val
documentList
=
list
.
map
{
DocumentBean
(
it
.
path
,
uri
=
it
.
uri
,
type
=
TYPE_EXCEL
)
}
val
new
=
documentList
.
toMutableList
()
if
(
File
(
demoDocumentBean
.
path
).
exists
())
{
new
.
add
(
0
,
demoDocumentBean
)
}
return
new
}
private
fun
initAllPptData
():
MutableList
<
DocumentBean
>
{
val
demoDocumentBean
=
DocumentBean
()
demoDocumentBean
.
type
=
TYPE_PPT
val
demoFile
=
File
(
context
.
filesDir
,
"demo"
)
val
selectionArgs
=
arrayOf
(
ConstObject
.
MIME_TYPE_PPT
,
ConstObject
.
MIME_TYPE_PPTX
)
demoDocumentBean
.
path
=
demoFile
.
listFiles
()
?.
find
{
it
.
name
.
contains
(
".pptx"
)
}
?.
absolutePath
?:
""
val
list
=
context
.
getMediaFile
(
selectionArgs
=
selectionArgs
)
val
documentList
=
list
.
map
{
DocumentBean
(
it
.
path
,
uri
=
it
.
uri
,
type
=
TYPE_PPT
)
}
val
new
=
documentList
.
toMutableList
()
if
(
File
(
demoDocumentBean
.
path
).
exists
())
{
new
.
add
(
0
,
demoDocumentBean
)
}
return
new
}
fun
initScannerLauncher
(
appCompatActivity
:
AppCompatActivity
)
{
scannerLauncher
=
appCompatActivity
.
registerForActivityResult
(
ActivityResultContracts
.
StartIntentSenderForResult
())
{
activityResult
->
...
...
app/src/main/java/com/base/pdfviewerscannerwhite/ui/main/MainView.kt
View file @
fb4966ef
package
com.base.pdfviewerscannerwhite.ui.main
import
android.net.Uri
import
com.base.pdfviewerscannerwhite.bean.DocumentBean
interface
MainView
{
fun
handleActivityGmsScanResult
(
imageUri
:
Uri
,
pdfUri
:
Uri
)
fun
refreshSearchRv
()
fun
deleteDocument
(
item
:
DocumentBean
)
fun
refreshPageList
()
}
\ No newline at end of file
app/src/main/java/com/base/pdfviewerscannerwhite/ui/view/DialogView.kt
View file @
fb4966ef
...
...
@@ -20,8 +20,8 @@ import com.base.pdfviewerscannerwhite.databinding.DialogDocumentMoreBinding
import
com.base.pdfviewerscannerwhite.databinding.DialogDocumentRenameBinding
import
com.base.pdfviewerscannerwhite.databinding.DialogPageNumberBinding
import
com.base.pdfviewerscannerwhite.databinding.DialogStoragePermissionBinding
import
com.base.pdfviewerscannerwhite.ui.main.DocumentFragment
import
com.base.pdfviewerscannerwhite.ui.main.DocumentPageFragment
import
com.base.pdfviewerscannerwhite.ui.main.MainActivity
import
com.base.pdfviewerscannerwhite.utils.ActivityLauncher
import
com.base.pdfviewerscannerwhite.utils.IntentShareUtils.documentShare
import
com.base.pdfviewerscannerwhite.utils.KotlinExt.toFormatSize
...
...
@@ -101,8 +101,8 @@ object DialogView {
@SuppressLint
(
"SetTextI18n"
,
"NotifyDataSetChanged"
)
fun
Context
.
showDocumentHomeMoreDialog
(
item
:
DocumentBean
,
documentFragment
:
DocumentPageFragment
,
mainActivity
:
MainActivity
,
document
Page
Fragment
:
DocumentPageFragment
,
documentFragment
:
DocumentFragment
,
):
BottomSheetDialog
{
val
dialog
=
BottomSheetDialog
(
this
,
R
.
style
.
BottomSheetDialog
)
val
binding
=
DialogDocumentHomeMoreBinding
.
inflate
(
LayoutInflater
.
from
(
this
))
...
...
@@ -140,11 +140,11 @@ object DialogView {
binding
.
llRename
.
setOnClickListener
{
showDocumentRenameDialog
(
file
.
name
)
{
newName
->
dialog
.
dismiss
()
documentFragment
.
documentPresenter
.
renameDocumentBean
(
file
,
newName
)
{
newPath
->
document
Page
Fragment
.
documentPresenter
.
renameDocumentBean
(
file
,
newName
)
{
newPath
->
if
(
newPath
.
isNotEmpty
())
{
item
.
path
=
newPath
documentFragment
.
adapter
.
notifyDataSetChanged
()
mainActivity
.
refreshSearchRv
()
document
Page
Fragment
.
adapter
.
notifyDataSetChanged
()
documentFragment
.
searchAdapter
.
notifyDataSetChanged
()
}
}
}
...
...
@@ -160,9 +160,9 @@ object DialogView {
showDeleteDialog
{
runCatching
{
val
flag
=
File
(
item
.
path
).
delete
()
if
(
flag
){
documentFragment
.
deleteDocument
(
item
)
mainActivity
.
d
eleteDocument
(
item
)
if
(
flag
)
{
document
Page
Fragment
.
deleteDocument
(
item
)
documentFragment
.
searchD
eleteDocument
(
item
)
}
}
...
...
app/src/main/java/com/base/pdfviewerscannerwhite/ui/view/PdfDialog.kt
View file @
fb4966ef
...
...
@@ -15,11 +15,11 @@ import com.base.pdfviewerscannerwhite.bean.DocumentBean
import
com.base.pdfviewerscannerwhite.databinding.DialogPdfHomeMoreBinding
import
com.base.pdfviewerscannerwhite.databinding.DialogPdfMoreBinding
import
com.base.pdfviewerscannerwhite.databinding.DialogPdfPasswordBinding
import
com.base.pdfviewerscannerwhite.ui.
adapter
.DocumentAdapter
import
com.base.pdfviewerscannerwhite.ui.
main
.DocumentAdapter
import
com.base.pdfviewerscannerwhite.ui.document.pdf.PdfBoxUtils
import
com.base.pdfviewerscannerwhite.ui.document.pdf.PdfView
import
com.base.pdfviewerscannerwhite.ui.main.DocumentFragment
import
com.base.pdfviewerscannerwhite.ui.main.DocumentPageFragment
import
com.base.pdfviewerscannerwhite.ui.main.MainActivity
import
com.base.pdfviewerscannerwhite.ui.view.DialogView.showDeleteDialog
import
com.base.pdfviewerscannerwhite.ui.view.DialogView.showDocumentDetail
import
com.base.pdfviewerscannerwhite.ui.view.DialogView.showDocumentRenameDialog
...
...
@@ -40,8 +40,8 @@ object PdfDialog {
fun
Context
.
showPdfHomeMoreDialog
(
item
:
DocumentBean
,
adapter
:
DocumentAdapter
,
documentFragment
:
DocumentPageFragment
,
mainActivity
:
MainActivity
document
Page
Fragment
:
DocumentPageFragment
,
documentFragment
:
DocumentFragment
,
):
BottomSheetDialog
{
val
dialog
=
BottomSheetDialog
(
this
,
R
.
style
.
BottomSheetDialog
)
val
binding
=
DialogPdfHomeMoreBinding
.
inflate
(
LayoutInflater
.
from
(
this
))
...
...
@@ -75,11 +75,11 @@ object PdfDialog {
binding
.
llRename
.
setOnClickListener
{
showDocumentRenameDialog
(
file
.
name
)
{
newName
->
dialog
.
dismiss
()
documentFragment
.
documentPresenter
.
renameDocumentBean
(
file
,
newName
)
{
newPath
->
document
Page
Fragment
.
documentPresenter
.
renameDocumentBean
(
file
,
newName
)
{
newPath
->
if
(
newPath
.
isNotEmpty
())
{
item
.
path
=
newPath
documentFragment
.
adapter
.
notifyDataSetChanged
()
mainActivity
.
refreshSearchRv
()
document
Page
Fragment
.
adapter
.
notifyDataSetChanged
()
documentFragment
.
searchAdapter
.
notifyDataSetChanged
()
}
}
}
...
...
@@ -89,15 +89,15 @@ object PdfDialog {
if
(
item
.
state
==
1
)
{
showPdfPwdDialog
(
state
=
item
.
state
,
path
=
item
.
path
,
firstDialog
=
dialog
,
isCheckPwd
=
true
,
verificationAction
=
{
documentFragment
.
splitPdf
(
item
.
path
,
it
)
document
Page
Fragment
.
splitPdf
(
item
.
path
,
it
)
})
}
else
{
documentFragment
.
splitPdf
(
item
.
path
)
document
Page
Fragment
.
splitPdf
(
item
.
path
)
}
}
binding
.
llMerge
.
setOnClickListener
{
dialog
.
dismiss
()
documentFragment
.
mergePdf
(
item
.
path
)
document
Page
Fragment
.
mergePdf
(
item
.
path
)
}
binding
.
llDelete
.
setOnClickListener
{
dialog
.
dismiss
()
...
...
@@ -105,8 +105,8 @@ object PdfDialog {
runCatching
{
val
flag
=
File
(
item
.
path
).
delete
()
if
(
flag
)
{
documentFragment
.
deleteDocument
(
item
)
mainActivity
.
d
eleteDocument
(
item
)
document
Page
Fragment
.
deleteDocument
(
item
)
documentFragment
.
searchD
eleteDocument
(
item
)
}
}
...
...
@@ -130,8 +130,7 @@ object PdfDialog {
binding
.
llLock
.
setOnClickListener
{
showPdfPwdDialog
(
state
=
item
.
state
,
path
=
item
.
path
,
firstDialog
=
dialog
,
encryptionAction
=
{
dialog
.
dismiss
()
documentFragment
.
adapter
.
notifyDataSetChanged
()
mainActivity
.
refreshSearchRv
()
documentPageFragment
.
adapter
.
notifyDataSetChanged
()
})
}
dialog
.
setOnDismissListener
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment