Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
P
pdf all reader
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
wanglei
pdf all reader
Commits
6c31c182
Commit
6c31c182
authored
Nov 08, 2024
by
wanglei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
...
parent
cc472e48
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
323 additions
and
56 deletions
+323
-56
AndroidManifest.xml
app/src/main/AndroidManifest.xml
+11
-0
DocumentFragment.kt
...ase/pdfreaderallpdfreader/ui/document/DocumentFragment.kt
+30
-0
DocumentEx.kt
...java/com/base/pdfreaderallpdfreader/ui/main/DocumentEx.kt
+11
-2
MainActivity.kt
...va/com/base/pdfreaderallpdfreader/ui/main/MainActivity.kt
+49
-10
MainViewModel.kt
...a/com/base/pdfreaderallpdfreader/ui/main/MainViewModel.kt
+8
-0
HomeFragment.kt
...m/base/pdfreaderallpdfreader/ui/main/home/HomeFragment.kt
+64
-23
SearchActivity.kt
...om/base/pdfreaderallpdfreader/ui/search/SearchActivity.kt
+41
-1
SearchViewModel.kt
...m/base/pdfreaderallpdfreader/ui/search/SearchViewModel.kt
+1
-5
DocumentDialog.kt
.../com/base/pdfreaderallpdfreader/ui/view/DocumentDialog.kt
+18
-3
MainDialog.kt
...java/com/base/pdfreaderallpdfreader/ui/view/MainDialog.kt
+1
-0
PdfDialog.kt
.../java/com/base/pdfreaderallpdfreader/ui/view/PdfDialog.kt
+1
-0
ShortcutUtils.kt
...ava/com/base/pdfreaderallpdfreader/utils/ShortcutUtils.kt
+53
-0
activity_main.xml
app/src/main/res/layout/activity_main.xml
+13
-5
fragment_document.xml
app/src/main/res/layout/fragment_document.xml
+21
-6
pdf_merge_short.png
app/src/main/res/mipmap-hdpi/pdf_merge_short.png
+0
-0
pdf_scan_short.png
app/src/main/res/mipmap-xxhdpi/pdf_scan_short.png
+0
-0
pdf_split_short.png
app/src/main/res/mipmap-xxhdpi/pdf_split_short.png
+0
-0
pdf_top.png
app/src/main/res/mipmap-xxhdpi/pdf_top.png
+0
-0
strings.xml
app/src/main/res/values/strings.xml
+1
-1
No files found.
app/src/main/AndroidManifest.xml
View file @
6c31c182
...
...
@@ -25,6 +25,7 @@
android:icon=
"@mipmap/ic_launcher"
android:label=
"@string/app_name"
android:logo=
"@mipmap/logo"
android:requestLegacyExternalStorage=
"true"
android:roundIcon=
"@mipmap/ic_launcher_round"
android:supportsRtl=
"true"
android:theme=
"@style/Theme.PdfReaderAllPdfReader"
...
...
@@ -97,6 +98,16 @@
android:exported=
"false"
android:launchMode=
"singleTop"
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/>
<activity
android:name=
".ui.pdf.PdfLoadingActivity"
android:exported=
"false"
android:launchMode=
"singleTop"
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/>
<activity
android:name=
".ui.pdf.PdfMergeActivity"
android:exported=
"false"
android:launchMode=
"singleTop"
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/>
<provider
android:name=
"androidx.core.content.FileProvider"
...
...
app/src/main/java/com/base/pdfreaderallpdfreader/ui/document/DocumentFragment.kt
View file @
6c31c182
...
...
@@ -6,7 +6,9 @@ import androidx.fragment.app.Fragment
import
android.view.LayoutInflater
import
android.view.View
import
android.view.ViewGroup
import
androidx.core.view.isVisible
import
androidx.lifecycle.lifecycleScope
import
androidx.recyclerview.widget.LinearLayoutManager
import
com.base.pdfreaderallpdfreader.R
import
com.base.pdfreaderallpdfreader.ads.AdmobHelper
import
com.base.pdfreaderallpdfreader.ads.admob.AdmobNativeUtils
...
...
@@ -27,6 +29,7 @@ import com.base.pdfreaderallpdfreader.ui.pdf.PdfActivity
import
com.base.pdfreaderallpdfreader.ui.ppt.PptActivity
import
com.base.pdfreaderallpdfreader.ui.view.DocumentDialog.showDocumentHomeMoreDialog
import
com.base.pdfreaderallpdfreader.ui.word.WordActivity
import
com.base.pdfreaderallpdfreader.utils.updateMediaStore
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.launch
import
java.io.File
...
...
@@ -65,6 +68,30 @@ class DocumentFragment() : Fragment() {
requireContext
().
showDocumentHomeMoreDialog
(
item
,
this
)
}
binding
.
rv
.
adapter
=
adapter
binding
.
rv
.
setOnScrollChangeListener
{
v
,
scrollX
,
scrollY
,
oldScrollX
,
oldScrollY
->
// LogEx.logDebug(TAG, "scrollY=$scrollY oldScrollY=$oldScrollY")
// 检查当前滚动位置
val
firstVisibleItem
:
Int
=
(
binding
.
rv
.
layoutManager
as
LinearLayoutManager
).
findFirstVisibleItemPosition
()
if
(
firstVisibleItem
>
3
)
{
binding
.
ivTop
.
isVisible
=
true
}
if
(
firstVisibleItem
==
0
)
{
binding
.
ivTop
.
isVisible
=
false
}
}
binding
.
ivTop
.
setOnClickListener
{
binding
.
rv
.
scrollToPosition
(
0
)
binding
.
ivTop
.
isVisible
=
false
}
binding
.
swipeRefreshLayout
.
setOnRefreshListener
{
initData
()
}
}
override
fun
onResume
()
{
...
...
@@ -83,6 +110,9 @@ class DocumentFragment() : Fragment() {
binding
.
swipeRefreshLayout
.
isRefreshing
=
true
lifecycleScope
.
launch
(
Dispatchers
.
IO
)
{
requireContext
().
updateMediaStore
()
val
list
:
List
<
DocumentBean
>
when
(
type
)
{
TYPE_PDF
->
{
...
...
app/src/main/java/com/base/pdfreaderallpdfreader/ui/main/DocumentEx.kt
View file @
6c31c182
...
...
@@ -3,6 +3,7 @@ package com.base.pdfreaderallpdfreader.ui.main
import
android.content.Context
import
android.media.MediaScannerConnection
import
android.net.Uri
import
android.os.Environment
import
com.base.pdfreaderallpdfreader.bean.ConstObject
import
com.base.pdfreaderallpdfreader.bean.ConstObject.MIME_TYPE_DOC
import
com.base.pdfreaderallpdfreader.bean.ConstObject.MIME_TYPE_DOCX
...
...
@@ -17,6 +18,7 @@ import com.base.pdfreaderallpdfreader.bean.DocumentBean.Companion.TYPE_PDF
import
com.base.pdfreaderallpdfreader.bean.DocumentBean.Companion.TYPE_PPT
import
com.base.pdfreaderallpdfreader.bean.DocumentBean.Companion.TYPE_WORD
import
com.base.pdfreaderallpdfreader.bean.MediaBean
import
com.base.pdfreaderallpdfreader.helper.MyApplication.Companion.context
import
com.base.pdfreaderallpdfreader.utils.AssetUtils.readByteArrayFromAsset
import
com.base.pdfreaderallpdfreader.utils.PdfBoxUtils.checkPdfEncryption
import
com.base.pdfreaderallpdfreader.utils.SpStringUtils
...
...
@@ -33,6 +35,13 @@ fun Context.upDateDemoStore() {
)
{
path
:
String
?,
uri
:
Uri
?
->
}
}
fun
getDocumentAppDir
():
File
{
val
appDir
=
File
(
Environment
.
getExternalStoragePublicDirectory
(
Environment
.
DIRECTORY_DOCUMENTS
),
context
.
packageName
)
if
(!
appDir
.
exists
())
appDir
.
exists
()
return
appDir
}
fun
Context
.
saveAssetsFile
()
{
val
demoFile
=
File
(
filesDir
,
"demo"
)
demoFile
.
mkdirs
()
...
...
@@ -252,7 +261,7 @@ fun Context.pdfCheck(pdfDocumentBean: DocumentBean) {
fun
getDocumentType
(
mediaBean
:
MediaBean
):
String
{
return
if
(
mediaBean
.
path
.
endsWith
(
".pdf"
))
{
MIME_
TYPE_PDF
TYPE_PDF
}
else
if
(
mediaBean
.
path
.
endsWith
(
".doc"
)
||
mediaBean
.
path
.
endsWith
(
".docx"
))
{
TYPE_WORD
}
else
if
(
mediaBean
.
path
.
endsWith
(
".xls"
)
||
mediaBean
.
path
.
endsWith
(
".xlsx"
))
{
...
...
@@ -260,7 +269,7 @@ fun getDocumentType(mediaBean: MediaBean): String {
}
else
if
(
mediaBean
.
path
.
endsWith
(
".ppt"
)
||
mediaBean
.
path
.
endsWith
(
".pptx"
))
{
TYPE_PPT
}
else
{
TYPE_P
PT
TYPE_P
DF
}
}
...
...
app/src/main/java/com/base/pdfreaderallpdfreader/ui/main/MainActivity.kt
View file @
6c31c182
...
...
@@ -23,17 +23,23 @@ import com.base.pdfreaderallpdfreader.ui.language.LanguageActivity
import
com.base.pdfreaderallpdfreader.ui.pdf.PdfActivity
import
com.base.pdfreaderallpdfreader.ui.search.SearchActivity
import
com.base.pdfreaderallpdfreader.ui.view.MainDialog.showStoragePermission
import
com.base.pdfreaderallpdfreader.ui.view.NameDialog.showDocumentRenameDialog
import
com.base.pdfreaderallpdfreader.ui.view.PwdDialog.showPdfPwdDialog
import
com.base.pdfreaderallpdfreader.ui.view.RateDialog.showRateDialog
import
com.base.pdfreaderallpdfreader.utils.BarUtils
import
com.base.pdfreaderallpdfreader.utils.LogEx
import
com.base.pdfreaderallpdfreader.utils.PdfBoxUtils.checkPdfEncryption
import
com.base.pdfreaderallpdfreader.utils.PermissionUtils.checkStorePermission
import
com.base.pdfreaderallpdfreader.utils.ShortcutUtils.addDeskShortCut
import
com.base.pdfreaderallpdfreader.utils.updateMediaStore
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.launch
import
java.io.File
class
MainActivity
:
BaseActivity
<
ActivityMainBinding
>()
{
private
val
TAG
=
"MainActivity"
override
val
binding
:
ActivityMainBinding
by
lazy
{
ActivityMainBinding
.
inflate
(
layoutInflater
)
}
...
...
@@ -47,6 +53,23 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
mainViewModel
.
initScannerLauncher
(
this
)
mainViewModel
.
handleActivityGmsScanResult
=
{
imageUri
,
pdfUri
->
LogEx
.
logDebug
(
TAG
,
"pdfUri=$pdfUri"
)
val
file
=
File
(
pdfUri
.
toString
().
replace
(
"file://"
,
""
))
if
(
file
.
exists
())
{
showDocumentRenameDialog
(
file
.
name
,
okAction
=
{
val
child
=
if
(
it
.
endsWith
(
".pdf"
))
it
else
"$it.pdf"
val
newFile
=
File
(
getDocumentAppDir
(),
child
)
mainViewModel
.
copyFile
(
file
,
newFile
)
this
.
updateMediaStore
()
},
dismissAction
=
{
})
}
else
{
}
}
BarUtils
.
setStatusBarLightMode
(
this
,
true
)
...
...
@@ -63,6 +86,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
showStoragePermission
(
launcher
)
}
addDeskShortCut
()
}
override
fun
onResume
()
{
...
...
@@ -91,20 +115,32 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
startActivity
(
Intent
(
this
,
LanguageActivity
::
class
.
java
))
}
binding
.
includeMain
.
includeContentMain
.
ivScan
.
setOnClickListener
{
starAdGmsScan
()
if
(
checkStorePermission
())
{
starAdGmsScan
()
}
else
{
showStoragePermission
(
launcher
)
}
}
binding
.
includeMain
.
ivSearch
.
setOnClickListener
{
startActivity
(
Intent
(
this
,
SearchActivity
::
class
.
java
))
if
(
checkStorePermission
())
{
startActivity
(
Intent
(
this
,
SearchActivity
::
class
.
java
))
}
else
{
showStoragePermission
(
launcher
)
}
}
binding
.
llFileManager
.
setOnClickListener
{
val
intent
=
Intent
(
Intent
.
ACTION_OPEN_DOCUMENT
)
intent
.
addCategory
(
Intent
.
CATEGORY_OPENABLE
)
intent
.
setType
(
"application/pdf"
)
intent
.
flags
=
Intent
.
FLAG_GRANT_WRITE_URI_PERMISSION
launcher
.
launch
(
intent
)
{
val
uri
=
it
.
data
?.
data
?:
Uri
.
EMPTY
jumpUriPdf
(
uri
)
if
(
checkStorePermission
())
{
val
intent
=
Intent
(
Intent
.
ACTION_OPEN_DOCUMENT
)
intent
.
addCategory
(
Intent
.
CATEGORY_OPENABLE
)
intent
.
setType
(
"application/pdf"
)
intent
.
flags
=
Intent
.
FLAG_GRANT_WRITE_URI_PERMISSION
launcher
.
launch
(
intent
)
{
val
uri
=
it
.
data
?.
data
?:
Uri
.
EMPTY
jumpUriPdf
(
uri
)
}
}
else
{
showStoragePermission
(
launcher
)
}
}
binding
.
llRate
.
setOnClickListener
{
...
...
@@ -120,6 +156,9 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
binding
.
llFeedback
.
setOnClickListener
{
startActivity
(
Intent
(
this
,
FeedbackActivity
::
class
.
java
))
}
binding
.
llShare
.
setOnClickListener
{
}
}
...
...
app/src/main/java/com/base/pdfreaderallpdfreader/ui/main/MainViewModel.kt
View file @
6c31c182
...
...
@@ -11,6 +11,7 @@ import androidx.lifecycle.ViewModel
import
com.google.mlkit.vision.documentscanner.GmsDocumentScannerOptions
import
com.google.mlkit.vision.documentscanner.GmsDocumentScanning
import
com.google.mlkit.vision.documentscanner.GmsDocumentScanningResult
import
java.io.File
class
MainViewModel
:
ViewModel
()
{
...
...
@@ -68,4 +69,11 @@ class MainViewModel : ViewModel() {
}
}
}
fun
copyFile
(
file
:
File
,
newFile
:
File
)
{
runCatching
{
file
.
copyTo
(
newFile
,
true
)
}
}
}
\ No newline at end of file
app/src/main/java/com/base/pdfreaderallpdfreader/ui/main/home/HomeFragment.kt
View file @
6c31c182
...
...
@@ -13,10 +13,13 @@ import com.base.pdfreaderallpdfreader.bean.ConstObject.DO_LOCK_PDF
import
com.base.pdfreaderallpdfreader.bean.ConstObject.DO_SPLIT_PDF
import
com.base.pdfreaderallpdfreader.databinding.FragmentHomeBinding
import
com.base.pdfreaderallpdfreader.ui.document.DocumentActivity
import
com.base.pdfreaderallpdfreader.ui.main.MainActivity
import
com.base.pdfreaderallpdfreader.ui.main.getPdfFastSize
import
com.base.pdfreaderallpdfreader.ui.pdf.PdfActivity
import
com.base.pdfreaderallpdfreader.ui.pdf.PdfSelectActivity
import
com.base.pdfreaderallpdfreader.ui.view.MainDialog.showStoragePermission
import
com.base.pdfreaderallpdfreader.utils.PermissionUtils.checkStorePermission
import
com.base.pdfreaderallpdfreader.utils.PermissionUtils.requestStoragePermission
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.launch
...
...
@@ -46,48 +49,86 @@ class HomeFragment : Fragment() {
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
super
.
onViewCreated
(
view
,
savedInstanceState
)
val
launcher
=
(
requireActivity
()
as
MainActivity
).
launcher
binding
.
clPdfReader
.
setOnClickListener
{
startActivity
(
Intent
(
requireContext
(),
DocumentActivity
::
class
.
java
))
if
(!
requireContext
().
checkStorePermission
())
{
requireContext
().
showStoragePermission
(
launcher
)
}
else
{
startActivity
(
Intent
(
requireContext
(),
DocumentActivity
::
class
.
java
))
}
}
binding
.
llEditPdf
.
setOnClickListener
{
startActivity
(
Intent
(
requireContext
(),
DocumentActivity
::
class
.
java
).
apply
{
putExtra
(
"initTab"
,
1
)
})
if
(!
requireContext
().
checkStorePermission
())
{
requireContext
().
showStoragePermission
(
launcher
)
}
else
{
startActivity
(
Intent
(
requireContext
(),
DocumentActivity
::
class
.
java
).
apply
{
putExtra
(
"initTab"
,
1
)
})
}
}
binding
.
llMergePdf
.
setOnClickListener
{
PdfActivity
.
jumpMerge
(
requireActivity
())
if
(!
requireContext
().
checkStorePermission
())
{
requireContext
().
showStoragePermission
(
launcher
)
}
else
{
PdfActivity
.
jumpMerge
(
requireActivity
())
}
}
binding
.
llSplitPdf
.
setOnClickListener
{
startActivity
(
Intent
(
requireContext
(),
PdfSelectActivity
::
class
.
java
).
apply
{
putExtra
(
"doWhat"
,
DO_SPLIT_PDF
)
})
if
(!
requireContext
().
checkStorePermission
())
{
requireContext
().
showStoragePermission
(
launcher
)
}
else
{
startActivity
(
Intent
(
requireContext
(),
PdfSelectActivity
::
class
.
java
).
apply
{
putExtra
(
"doWhat"
,
DO_SPLIT_PDF
)
})
}
}
binding
.
llLockPdf
.
setOnClickListener
{
startActivity
(
Intent
(
requireContext
(),
PdfSelectActivity
::
class
.
java
).
apply
{
putExtra
(
"doWhat"
,
DO_LOCK_PDF
)
})
if
(!
requireContext
().
checkStorePermission
())
{
requireContext
().
showStoragePermission
(
launcher
)
}
else
{
startActivity
(
Intent
(
requireContext
(),
PdfSelectActivity
::
class
.
java
).
apply
{
putExtra
(
"doWhat"
,
DO_LOCK_PDF
)
})
}
}
binding
.
llWord
.
setOnClickListener
{
startActivity
(
Intent
(
requireContext
(),
DocumentActivity
::
class
.
java
).
apply
{
putExtra
(
"initTab"
,
2
)
})
if
(!
requireContext
().
checkStorePermission
())
{
requireContext
().
showStoragePermission
(
launcher
)
}
else
{
startActivity
(
Intent
(
requireContext
(),
DocumentActivity
::
class
.
java
).
apply
{
putExtra
(
"initTab"
,
2
)
})
}
}
binding
.
llExcel
.
setOnClickListener
{
startActivity
(
Intent
(
requireContext
(),
DocumentActivity
::
class
.
java
).
apply
{
putExtra
(
"initTab"
,
3
)
})
if
(!
requireContext
().
checkStorePermission
())
{
requireContext
().
showStoragePermission
(
launcher
)
}
else
{
startActivity
(
Intent
(
requireContext
(),
DocumentActivity
::
class
.
java
).
apply
{
putExtra
(
"initTab"
,
3
)
})
}
}
binding
.
llPpt
.
setOnClickListener
{
startActivity
(
Intent
(
requireContext
(),
DocumentActivity
::
class
.
java
).
apply
{
putExtra
(
"initTab"
,
4
)
})
if
(!
requireContext
().
checkStorePermission
())
{
requireContext
().
showStoragePermission
(
launcher
)
}
else
{
startActivity
(
Intent
(
requireContext
(),
DocumentActivity
::
class
.
java
).
apply
{
putExtra
(
"initTab"
,
4
)
})
}
}
binding
.
llOther
.
setOnClickListener
{
startActivity
(
Intent
(
requireContext
(),
DocumentActivity
::
class
.
java
).
apply
{
putExtra
(
"initTab"
,
0
)
})
if
(!
requireContext
().
checkStorePermission
())
{
requireContext
().
showStoragePermission
(
launcher
)
}
else
{
startActivity
(
Intent
(
requireContext
(),
DocumentActivity
::
class
.
java
).
apply
{
putExtra
(
"initTab"
,
0
)
})
}
}
...
...
app/src/main/java/com/base/pdfreaderallpdfreader/ui/search/SearchActivity.kt
View file @
6c31c182
...
...
@@ -8,15 +8,24 @@ import androidx.core.view.updatePadding
import
androidx.lifecycle.ViewModelProvider
import
androidx.lifecycle.lifecycleScope
import
com.base.pdfreaderallpdfreader.base.BaseActivity
import
com.base.pdfreaderallpdfreader.bean.DocumentBean
import
com.base.pdfreaderallpdfreader.bean.DocumentBean.Companion.TYPE_PDF
import
com.base.pdfreaderallpdfreader.databinding.ActivitySearchBinding
import
com.base.pdfreaderallpdfreader.databinding.ItemTabDocumentBinding
import
com.base.pdfreaderallpdfreader.ui.document.DocumentFragment.Companion.jumpOtherDocument
import
com.base.pdfreaderallpdfreader.ui.main.DocumentAdapter
import
com.base.pdfreaderallpdfreader.ui.pdf.PdfActivity
import
com.base.pdfreaderallpdfreader.ui.view.DocumentDialog.showDocumentHomeMoreDialog
import
com.base.pdfreaderallpdfreader.ui.view.DocumentHomeMoreCallBack
import
com.base.pdfreaderallpdfreader.utils.BarUtils
import
com.base.pdfreaderallpdfreader.utils.LogEx
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.launch
import
java.io.File
class
SearchActivity
:
BaseActivity
<
ActivitySearchBinding
>()
{
class
SearchActivity
:
BaseActivity
<
ActivitySearchBinding
>()
,
DocumentHomeMoreCallBack
{
private
val
TAG
=
"SearchActivity"
private
lateinit
var
searchViewModel
:
SearchViewModel
private
var
adapter
:
DocumentAdapter
?
=
null
...
...
@@ -32,6 +41,16 @@ class SearchActivity : BaseActivity<ActivitySearchBinding>() {
adapter
=
DocumentAdapter
()
binding
.
rv
.
adapter
=
adapter
adapter
?.
moreAction
=
{
item
:
DocumentBean
->
showDocumentHomeMoreDialog
(
item
,
null
,
this
)
}
adapter
?.
itemClickAction
=
{
item
:
DocumentBean
->
if
(
item
.
type
==
TYPE_PDF
)
{
PdfActivity
.
jumpPdfActivity
(
this
,
item
)
}
else
{
jumpOtherDocument
(
item
)
}
}
arrayOf
(
"All"
,
"PDF"
,
"Word"
,
"Excel"
,
"PPT"
).
forEach
{
tab
->
val
tabBinding
=
ItemTabDocumentBinding
.
inflate
(
layoutInflater
)
...
...
@@ -53,6 +72,7 @@ class SearchActivity : BaseActivity<ActivitySearchBinding>() {
binding
.
edit
.
setOnEditorActionListener
{
v
,
actionId
,
event
->
if
(
actionId
==
EditorInfo
.
IME_ACTION_DONE
)
{
LogEx
.
logDebug
(
TAG
,
"actionDone"
)
if
(
binding
.
edit
.
text
.
isNotEmpty
())
{
searchDocument
()
}
...
...
@@ -75,6 +95,7 @@ class SearchActivity : BaseActivity<ActivitySearchBinding>() {
}
private
fun
searchDocument
()
{
LogEx
.
logDebug
(
TAG
,
"searchDocument"
)
val
search
=
binding
.
edit
.
text
.
toString
()
lifecycleScope
.
launch
(
Dispatchers
.
IO
)
{
val
result
=
searchViewModel
.
getSearchDocument
(
this
@SearchActivity
,
search
)
...
...
@@ -98,4 +119,23 @@ class SearchActivity : BaseActivity<ActivitySearchBinding>() {
var
SEARCH_MODE_PPT
=
"search_mode_ppt"
}
override
fun
renameDocumentBean
(
file
:
File
,
newName
:
String
)
{
try
{
val
newFile
=
File
(
file
.
parentFile
,
newName
)
val
result
=
file
.
renameTo
(
newFile
)
if
(
result
)
{
searchDocument
()
}
}
catch
(
e
:
Exception
)
{
e
.
printStackTrace
()
}
}
override
fun
deleteDocument
(
item
:
DocumentBean
)
{
val
flag
=
File
(
item
.
path
).
delete
()
if
(
flag
)
{
adapter
?.
remove
(
item
)
}
}
}
\ No newline at end of file
app/src/main/java/com/base/pdfreaderallpdfreader/ui/search/SearchViewModel.kt
View file @
6c31c182
...
...
@@ -45,10 +45,6 @@ class SearchViewModel : ViewModel() {
else
->
typeList
=
all
}
typeList
.
filter
{
File
(
it
.
path
).
name
.
lowercase
(
Locale
.
ENGLISH
)
.
contains
(
search
.
lowercase
(
Locale
.
ENGLISH
))
}
return
typeList
return
typeList
.
filter
{
File
(
it
.
path
).
name
.
lowercase
(
Locale
.
ENGLISH
).
contains
(
search
.
lowercase
(
Locale
.
ENGLISH
))
}
}
}
\ No newline at end of file
app/src/main/java/com/base/pdfreaderallpdfreader/ui/view/DocumentDialog.kt
View file @
6c31c182
...
...
@@ -31,13 +31,26 @@ import com.google.android.material.bottomsheet.BottomSheetBehavior
import
com.google.android.material.bottomsheet.BottomSheetDialog
import
java.io.File
interface
DocumentHomeMoreCallBack
{
fun
renameDocumentBean
(
file
:
File
,
newName
:
String
)
{
}
fun
deleteDocument
(
item
:
DocumentBean
)
{
}
}
object
DocumentDialog
{
@SuppressLint
(
"SetTextI18n"
,
"NotifyDataSetChanged"
)
fun
Context
.
showDocumentHomeMoreDialog
(
item
:
DocumentBean
,
documentFragment
:
DocumentFragment
documentFragment
:
DocumentFragment
?
=
null
,
documentHomeMoreCallBack
:
DocumentHomeMoreCallBack
?
=
null
):
BottomSheetDialog
{
val
dialog
=
BottomSheetDialog
(
this
,
R
.
style
.
BottomSheetDialog
)
val
binding
=
DialogDocumentHomeMoreBinding
.
inflate
(
LayoutInflater
.
from
(
this
))
...
...
@@ -75,7 +88,8 @@ object DocumentDialog {
binding
.
llRename
.
setOnClickListener
{
showDocumentRenameDialog
(
file
.
name
,
okAction
=
{
newName
->
dialog
.
dismiss
()
documentFragment
.
renameDocumentBean
(
file
,
newName
)
documentFragment
?.
renameDocumentBean
(
file
,
newName
)
documentHomeMoreCallBack
?.
renameDocumentBean
(
file
,
newName
)
})
}
binding
.
llDetail
.
setOnClickListener
{
...
...
@@ -87,7 +101,8 @@ object DocumentDialog {
binding
.
llDelete
.
setOnClickListener
{
dialog
.
dismiss
()
showDeleteDialog
{
documentFragment
.
deleteDocument
(
item
)
documentFragment
?.
deleteDocument
(
item
)
documentHomeMoreCallBack
?.
deleteDocument
(
item
)
}
}
return
dialog
...
...
app/src/main/java/com/base/pdfreaderallpdfreader/ui/view/MainDialog.kt
View file @
6c31c182
...
...
@@ -16,6 +16,7 @@ import com.google.android.material.bottomsheet.BottomSheetDialog
object
MainDialog
{
fun
Context
.
showStoragePermission
(
launcher
:
ActivityLauncher
,
launcherAction
:
((
flag
:
Boolean
)
->
Unit
)?
=
null
,
...
...
app/src/main/java/com/base/pdfreaderallpdfreader/ui/view/PdfDialog.kt
View file @
6c31c182
...
...
@@ -23,6 +23,7 @@ import com.base.pdfreaderallpdfreader.ui.view.DocumentDialog.showDocumentDetail
import
com.base.pdfreaderallpdfreader.utils.IntentShareUtils
import
com.base.pdfreaderallpdfreader.utils.LogEx
import
com.base.pdfreaderallpdfreader.utils.NumberRangeFilter
import
com.base.pdfreaderallpdfreader.utils.PermissionUtils.checkStorePermission
import
com.base.pdfreaderallpdfreader.utils.SpStringUtils
import
com.base.pdfreaderallpdfreader.utils.SpStringUtils.BOOKMARK_KEY
import
com.base.pdfreaderallpdfreader.utils.ToastUtils.toast
...
...
app/src/main/java/com/base/pdfreaderallpdfreader/utils/ShortcutUtils.kt
0 → 100644
View file @
6c31c182
package
com.base.pdfreaderallpdfreader.utils
import
android.content.Context
import
android.content.Intent
import
android.content.pm.ShortcutInfo
import
android.content.pm.ShortcutManager
import
android.graphics.drawable.Icon
import
android.os.Build
import
com.base.pdfreaderallpdfreader.R
import
com.base.pdfreaderallpdfreader.bean.ConstObject
import
com.base.pdfreaderallpdfreader.ui.splash.SplashActivity
object
ShortcutUtils
{
fun
Context
.
addDeskShortCut
()
{
//获取ShortcutManager对象
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
N_MR1
)
{
val
shortcutManager
:
ShortcutManager
=
getSystemService
(
ShortcutManager
::
class
.
java
)
as
ShortcutManager
val
shortcut1
=
ShortcutInfo
.
Builder
(
this
,
"11111"
)
.
setShortLabel
(
"Scan Pdf"
)
.
setIcon
(
Icon
.
createWithResource
(
this
,
R
.
mipmap
.
pdf_scan_short
))
.
setIntent
(
Intent
(
Intent
.
ACTION_MAIN
,
null
,
this
,
SplashActivity
::
class
.
java
).
apply
{
putExtra
(
"actionId"
,
ConstObject
.
SHORTCUT_SCAN_PDF
)
})
.
build
()
val
shortcut2
=
ShortcutInfo
.
Builder
(
this
,
"22222"
)
.
setShortLabel
(
"Split Pdf"
)
.
setIcon
(
Icon
.
createWithResource
(
this
,
R
.
mipmap
.
pdf_split_short
))
.
setIntent
(
Intent
(
Intent
.
ACTION_MAIN
,
null
,
this
,
SplashActivity
::
class
.
java
).
apply
{
putExtra
(
"actionId"
,
ConstObject
.
SHORTCUT_SPLIT_PDF
)
})
.
build
()
val
shortcut3
=
ShortcutInfo
.
Builder
(
this
,
"33333"
)
.
setShortLabel
(
"Merge Pdf"
)
.
setIcon
(
Icon
.
createWithResource
(
this
,
R
.
mipmap
.
pdf_merge_short
))
.
setIntent
(
Intent
(
Intent
.
ACTION_MAIN
,
null
,
this
,
SplashActivity
::
class
.
java
).
apply
{
putExtra
(
"actionId"
,
ConstObject
.
SHORTCUT_MERGE_PDF
)
})
.
build
()
//setDynamicShortcuts()方法来设置快捷方式
shortcutManager
.
setDynamicShortcuts
(
listOf
(
shortcut1
,
shortcut2
,
shortcut3
))
}
}
}
\ No newline at end of file
app/src/main/res/layout/activity_main.xml
View file @
6c31c182
...
...
@@ -69,7 +69,9 @@
android:textColor=
"#B1B3B9"
android:textSize=
"13sp"
/>
<!-- 文件管理-->
<LinearLayout
android:id=
"@+id/ll_file_manager"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginVertical=
"10dp"
...
...
@@ -119,12 +121,14 @@
</LinearLayout>
<!-- 多语言 -->
<LinearLayout
android:id=
"@+id/ll_
file_manager
"
android:id=
"@+id/ll_
language
"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginVertical=
"10dp"
android:orientation=
"horizontal"
>
android:orientation=
"horizontal"
android:visibility=
"gone"
>
<ImageView
android:layout_width=
"wrap_content"
...
...
@@ -135,7 +139,6 @@
tools:ignore=
"ContentDescription"
/>
<LinearLayout
android:id=
"@+id/ll_language"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
...
...
@@ -171,7 +174,6 @@
</LinearLayout>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
...
...
@@ -181,6 +183,7 @@
android:textColor=
"#B1B3B9"
android:textSize=
"13sp"
/>
<!-- 评价 -->
<LinearLayout
android:id=
"@+id/ll_rate"
android:layout_width=
"match_parent"
...
...
@@ -223,11 +226,14 @@
</LinearLayout>
<!-- 分享 -->
<LinearLayout
android:id=
"@+id/ll_share"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginVertical=
"10dp"
android:orientation=
"horizontal"
>
android:orientation=
"horizontal"
android:visibility=
"gone"
>
<ImageView
android:layout_width=
"wrap_content"
...
...
@@ -265,6 +271,7 @@
</LinearLayout>
<!-- 隐私政策 -->
<LinearLayout
android:id=
"@+id/ll_privacy"
android:layout_width=
"match_parent"
...
...
@@ -307,6 +314,7 @@
</LinearLayout>
<!-- 反馈 -->
<LinearLayout
android:id=
"@+id/ll_feedback"
android:layout_width=
"match_parent"
...
...
app/src/main/res/layout/fragment_document.xml
View file @
6c31c182
...
...
@@ -21,13 +21,28 @@
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/rv"
<FrameLayout
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"
/>
android:layout_height=
"match_parent"
>
<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"
/>
<ImageView
android:id=
"@+id/iv_top"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal|bottom"
android:layout_marginBottom=
"100dp"
android:src=
"@mipmap/pdf_top"
android:visibility=
"gone"
/>
</FrameLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</LinearLayout>
...
...
app/src/main/res/mipmap-hdpi/pdf_merge_short.png
0 → 100644
View file @
6c31c182
6.26 KB
app/src/main/res/mipmap-xxhdpi/pdf_scan_short.png
0 → 100644
View file @
6c31c182
6.27 KB
app/src/main/res/mipmap-xxhdpi/pdf_split_short.png
0 → 100644
View file @
6c31c182
7.19 KB
app/src/main/res/mipmap-xxhdpi/pdf_top.png
0 → 100644
View file @
6c31c182
13.8 KB
app/src/main/res/values/strings.xml
View file @
6c31c182
<resources
xmlns:tools=
"http://schemas.android.com/tools"
>
<string
name=
"app_name"
>
P
df Reader All Pdf Reade
r
</string>
<string
name=
"app_name"
>
P
DF Reader
&
Edito
r
</string>
<string
name=
"facebook_app_id"
tools:ignore=
"MissingTranslation"
>
567688245803774
</string>
...
...
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