Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
P
PDF Viewer Scanner White
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 Viewer Scanner White
Commits
a4d8ecd3
Commit
a4d8ecd3
authored
Sep 29, 2024
by
wanglei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
...
parent
fbfacf33
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
257 additions
and
99 deletions
+257
-99
ConstObject.kt
...n/java/com/base/pdfviewerscannerwhite/bean/ConstObject.kt
+1
-0
DocumentFragment.kt
...om/base/pdfviewerscannerwhite/ui/main/DocumentFragment.kt
+133
-44
DocumentPageFragment.kt
...ase/pdfviewerscannerwhite/ui/main/DocumentPageFragment.kt
+1
-36
MainActivity.kt
...va/com/base/pdfviewerscannerwhite/ui/main/MainActivity.kt
+77
-19
fragment_document.xml
app/src/main/res/layout/fragment_document.xml
+45
-0
No files found.
app/src/main/java/com/base/pdfviewerscannerwhite/bean/ConstObject.kt
View file @
a4d8ecd3
...
...
@@ -32,6 +32,7 @@ object ConstObject {
const
val
UI_MODE_NORMAL
=
"ui_mode_normal"
const
val
UI_MODE_SELECT
=
"ui_mode_select"
const
val
UI_MODE_SEARCH
=
"ui_mode_search"
var
ifAgreePrivacy
=
false
get
()
{
...
...
app/src/main/java/com/base/pdfviewerscannerwhite/ui/main/DocumentFragment.kt
View file @
a4d8ecd3
...
...
@@ -2,6 +2,7 @@ package com.base.pdfviewerscannerwhite.ui.main
import
android.annotation.SuppressLint
import
android.view.View
import
android.view.inputmethod.EditorInfo
import
androidx.core.content.ContextCompat
import
androidx.fragment.app.Fragment
import
androidx.viewpager2.adapter.FragmentStateAdapter
...
...
@@ -13,19 +14,26 @@ 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.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
type
:
String
=
""
)
:
BaseFragment
<
FragmentDocumentBinding
>()
{
private
val
TAG
=
"DocumentFragment"
private
val
pdfPage
:
DocumentPageFragment
by
lazy
{
DocumentPageFragment
(
DocumentBean
.
TYPE_PDF
)
}
private
val
wordPage
:
DocumentPageFragment
by
lazy
{
DocumentPageFragment
(
DocumentBean
.
TYPE_WORD
)
}
...
...
@@ -43,6 +51,8 @@ class DocumentFragment(
override
val
binding
:
FragmentDocumentBinding
by
lazy
{
FragmentDocumentBinding
.
inflate
(
layoutInflater
)
}
private
lateinit
var
searchAdapter
:
DocumentAdapter
var
uiMode
=
UI_MODE_NORMAL
@SuppressLint
(
"SetTextI18n"
)
...
...
@@ -64,6 +74,21 @@ class DocumentFragment(
}
initPageViewer
()
initTabLayout
()
initSearchAdapter
()
}
private
fun
initSearchAdapter
()
{
searchAdapter
=
DocumentAdapter
()
binding
.
rvSearch
.
adapter
=
searchAdapter
searchAdapter
.
moreAction
=
{
item
->
if
(
currentFragment
is
DocumentPageFragment
)
{
(
currentFragment
as
DocumentPageFragment
).
documentMoreAction
.
invoke
(
item
)
}
}
searchAdapter
.
itemClick
=
{
requireActivity
().
jumpDocument
(
it
)
}
}
override
fun
setListener
()
{
...
...
@@ -73,55 +98,22 @@ class DocumentFragment(
(
requireActivity
()
as
MainActivity
).
onBackPressedDispatcher
.
onBackPressed
()
}
binding
.
ivXuanze
.
setOnClickListener
{
changeSelectUI
()
changeSelectUI
(
true
)
}
binding
.
ivSearch
.
setOnClickListener
{
changeSearchUI
(
true
)
}
binding
.
ivAllSelector
.
setOnClickListener
{
binding
.
ivAllSelector
.
isSelected
=
!
binding
.
ivAllSelector
.
isSelected
changePageSelect
(
binding
.
ivAllSelector
.
isSelected
)
}
}
private
fun
changeSelectUI
()
{
binding
.
viewPager2
.
isUserInputEnabled
=
false
(
requireActivity
()
as
MainActivity
).
callback
.
isEnabled
=
true
uiMode
=
UI_MODE_SELECT
binding
.
ivPaixu
.
visibility
=
View
.
INVISIBLE
binding
.
ivXuanze
.
visibility
=
View
.
INVISIBLE
binding
.
ivSearch
.
visibility
=
View
.
INVISIBLE
binding
.
tvTittle
.
visibility
=
View
.
INVISIBLE
binding
.
flFanhui
.
visibility
=
View
.
VISIBLE
binding
.
ivAllSelector
.
visibility
=
View
.
VISIBLE
(
requireActivity
()
as
MainActivity
).
changeSelectUI
()
if
(
currentFragment
is
DocumentPageFragment
)
{
(
currentFragment
as
DocumentPageFragment
).
changeSelectUi
(
true
)
}
}
fun
cancelSelectUI
()
{
binding
.
viewPager2
.
isUserInputEnabled
=
true
(
requireActivity
()
as
MainActivity
).
callback
.
isEnabled
=
false
uiMode
=
UI_MODE_NORMAL
binding
.
flFanhui
.
visibility
=
View
.
INVISIBLE
binding
.
ivAllSelector
.
visibility
=
View
.
INVISIBLE
if
(
type
!=
RECENT_UI_TYPE
)
{
binding
.
ivPaixu
.
visibility
=
View
.
VISIBLE
}
binding
.
ivXuanze
.
visibility
=
View
.
VISIBLE
binding
.
ivSearch
.
visibility
=
View
.
VISIBLE
binding
.
tvTittle
.
visibility
=
View
.
VISIBLE
(
requireActivity
()
as
MainActivity
).
cancelSelectUI
()
}
binding
.
editSearch
.
setOnEditorActionListener
{
v
,
actionId
,
event
->
private
fun
changePageSelect
(
select
:
Boolean
)
{
if
(
currentFragment
is
DocumentPageFragment
)
{
(
currentFragment
as
DocumentPageFragment
).
changItemSelect
(
select
)
if
(
actionId
==
EditorInfo
.
IME_ACTION_DONE
)
{
LogEx
.
logDebug
(
TAG
,
"IME_ACTION_DONE"
)
searchDocument
()
}
false
}
}
...
...
@@ -205,5 +197,102 @@ class DocumentFragment(
ViewPager2Delegate
.
install
(
binding
.
viewPager2
,
binding
.
tabLayoutDocument
)
}
fun
changeSelectUI
(
show
:
Boolean
)
{
if
(
show
)
{
binding
.
viewPager2
.
isUserInputEnabled
=
false
(
requireActivity
()
as
MainActivity
).
callback
.
isEnabled
=
true
uiMode
=
UI_MODE_SELECT
binding
.
ivPaixu
.
visibility
=
View
.
INVISIBLE
binding
.
ivXuanze
.
visibility
=
View
.
INVISIBLE
binding
.
ivSearch
.
visibility
=
View
.
INVISIBLE
binding
.
tvTittle
.
visibility
=
View
.
INVISIBLE
binding
.
flFanhui
.
visibility
=
View
.
VISIBLE
binding
.
ivAllSelector
.
visibility
=
View
.
VISIBLE
(
requireActivity
()
as
MainActivity
).
changeSelectUI
(
true
)
if
(
currentFragment
is
DocumentPageFragment
)
{
(
currentFragment
as
DocumentPageFragment
).
changeSelectUi
(
true
)
}
}
else
{
binding
.
viewPager2
.
isUserInputEnabled
=
true
(
requireActivity
()
as
MainActivity
).
callback
.
isEnabled
=
false
uiMode
=
UI_MODE_NORMAL
binding
.
flFanhui
.
visibility
=
View
.
INVISIBLE
binding
.
ivAllSelector
.
visibility
=
View
.
INVISIBLE
if
(
type
!=
RECENT_UI_TYPE
)
{
binding
.
ivPaixu
.
visibility
=
View
.
VISIBLE
}
binding
.
ivXuanze
.
visibility
=
View
.
VISIBLE
binding
.
ivSearch
.
visibility
=
View
.
VISIBLE
binding
.
tvTittle
.
visibility
=
View
.
VISIBLE
(
requireActivity
()
as
MainActivity
).
changeSelectUI
(
false
)
}
}
private
fun
changePageSelect
(
select
:
Boolean
)
{
if
(
currentFragment
is
DocumentPageFragment
)
{
(
currentFragment
as
DocumentPageFragment
).
changItemSelect
(
select
)
}
}
fun
changeSearchUI
(
show
:
Boolean
)
{
if
(
show
)
{
uiMode
=
UI_MODE_SEARCH
(
requireActivity
()
as
MainActivity
).
callback
.
isEnabled
=
true
binding
.
tvTittle
.
visibility
=
View
.
INVISIBLE
binding
.
ivPaixu
.
visibility
=
View
.
INVISIBLE
binding
.
ivXuanze
.
visibility
=
View
.
INVISIBLE
binding
.
llMainContent
.
visibility
=
View
.
INVISIBLE
binding
.
flFanhui
.
visibility
=
View
.
VISIBLE
binding
.
editSearch
.
visibility
=
View
.
VISIBLE
(
requireActivity
()
as
MainActivity
).
changeSearchUI
(
true
)
requireContext
().
showKeyBoard
(
binding
.
editSearch
)
}
else
{
uiMode
=
UI_MODE_NORMAL
(
requireActivity
()
as
MainActivity
).
callback
.
isEnabled
=
false
binding
.
editSearch
.
visibility
=
View
.
INVISIBLE
binding
.
flFanhui
.
visibility
=
View
.
INVISIBLE
binding
.
tvTittle
.
visibility
=
View
.
VISIBLE
binding
.
ivPaixu
.
visibility
=
View
.
VISIBLE
binding
.
ivXuanze
.
visibility
=
View
.
VISIBLE
binding
.
llMainContent
.
visibility
=
View
.
VISIBLE
(
requireActivity
()
as
MainActivity
).
changeSearchUI
(
false
)
requireContext
().
hideKeyboard
(
binding
.
editSearch
)
}
}
private
fun
searchDocument
()
{
if
(
binding
.
editSearch
.
text
.
isNotEmpty
())
{
val
search
=
binding
.
editSearch
.
text
.
toString
()
if
(
currentFragment
is
DocumentPageFragment
)
{
val
item
=
(
currentFragment
as
DocumentPageFragment
).
getSearchItems
(
search
)
if
(
item
.
isNotEmpty
())
{
item
.
map
{
it
.
uiType
=
4
}
searchAdapter
.
submitList
(
item
)
}
else
{
binding
.
llEmpty
.
visibility
=
View
.
VISIBLE
}
}
}
}
}
\ No newline at end of file
app/src/main/java/com/base/pdfviewerscannerwhite/ui/main/DocumentPageFragment.kt
View file @
a4d8ecd3
...
...
@@ -20,6 +20,7 @@ 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
...
...
@@ -192,42 +193,6 @@ class DocumentPageFragment() : BaseFragment<FragmentDocumentPageBinding>(), Docu
}
}
companion
object
{
fun
Activity
.
jumpDocument
(
item
:
DocumentBean
)
{
if
(
item
.
type
==
TYPE_PDF
)
{
if
(
item
.
state
==
0
)
{
startActivity
(
Intent
(
this
,
PdfActivity
::
class
.
java
).
apply
{
putExtra
(
"path"
,
item
.
path
)
})
}
if
(
item
.
state
==
1
)
{
showPdfPwdDialog
(
state
=
item
.
state
,
path
=
item
.
path
,
isCheckPwd
=
true
,
verificationAction
=
{
pwd
->
startActivity
(
Intent
(
this
,
PdfActivity
::
class
.
java
).
apply
{
putExtra
(
"path"
,
item
.
path
)
putExtra
(
"pwd"
,
pwd
)
})
})
}
}
if
(
item
.
type
==
TYPE_WORD
)
{
WordActivity
.
wordDocumentBean
=
item
WordActivity
.
launchDocViewer
(
this
,
3
,
item
.
path
,
-
1
,
100
)
}
if
(
item
.
type
==
TYPE_EXCEL
)
{
ExcelActivity
.
excelDocumentBean
=
item
ExcelActivity
.
launchDocViewer
(
this
,
3
,
item
.
path
,
-
1
,
100
)
}
if
(
item
.
type
==
TYPE_PPT
)
{
PptActivity
.
pptDocumentBean
=
item
PptActivity
.
launchDocViewer
(
this
,
3
,
item
.
path
,
-
1
,
100
)
}
}
}
}
\ No newline at end of file
app/src/main/java/com/base/pdfviewerscannerwhite/ui/main/MainActivity.kt
View file @
a4d8ecd3
package
com.base.pdfviewerscannerwhite.ui.main
import
android.app.Activity
import
android.content.Intent
import
android.net.Uri
import
android.view.View
import
androidx.activity.OnBackPressedCallback
...
...
@@ -12,7 +14,12 @@ import com.base.pdfviewerscannerwhite.bean.ConstObject.RECENT_UI_TYPE
import
com.base.pdfviewerscannerwhite.bean.DocumentBean
import
com.base.pdfviewerscannerwhite.databinding.ActivityMain2Binding
import
com.base.pdfviewerscannerwhite.helper.BaseActivity
import
com.base.pdfviewerscannerwhite.ui.document.excel.ExcelActivity
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.PdfDialog.showPdfPwdDialog
import
com.base.pdfviewerscannerwhite.utils.IntentShareUtils.shareMutDocuments
class
MainActivity
:
BaseActivity
<
ActivityMain2Binding
>(),
MainView
{
...
...
@@ -54,7 +61,10 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView {
if
(
currentFragment
is
DocumentFragment
)
{
val
documentFragment
=
(
currentFragment
as
DocumentFragment
)
if
(
documentFragment
.
uiMode
==
ConstObject
.
UI_MODE_SELECT
)
{
documentFragment
.
cancelSelectUI
()
documentFragment
.
changeSelectUI
(
false
)
}
if
(
documentFragment
.
uiMode
==
ConstObject
.
UI_MODE_SEARCH
)
{
documentFragment
.
changeSearchUI
(
false
)
}
}
...
...
@@ -162,26 +172,26 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView {
}
fun
changeSelectUI
()
{
binding
.
ivScan
.
visibility
=
View
.
INVISIBLE
binding
.
llDocument
.
visibility
=
View
.
INVISIBLE
binding
.
llRecent
.
visibility
=
View
.
INVISIBLE
binding
.
llBookmark
.
visibility
=
View
.
INVISIBLE
binding
.
llTool
.
visibility
=
View
.
INVISIBLE
binding
.
llDelete
.
visibility
=
View
.
VISIBLE
binding
.
llShare
.
visibility
=
View
.
VISIBLE
}
fun
changeSelectUI
(
show
:
Boolean
)
{
if
(
show
)
{
binding
.
ivScan
.
visibility
=
View
.
INVISIBLE
binding
.
llDocument
.
visibility
=
View
.
INVISIBLE
binding
.
llRecent
.
visibility
=
View
.
INVISIBLE
binding
.
llBookmark
.
visibility
=
View
.
INVISIBLE
binding
.
llTool
.
visibility
=
View
.
INVISIBLE
fun
cancelSelectUI
()
{
binding
.
llDelete
.
visibility
=
View
.
INVISIBLE
binding
.
llShare
.
visibility
=
View
.
INVISIBLE
binding
.
llDelete
.
visibility
=
View
.
VISIBLE
binding
.
llShare
.
visibility
=
View
.
VISIBLE
}
else
{
binding
.
llDelete
.
visibility
=
View
.
INVISIBLE
binding
.
llShare
.
visibility
=
View
.
INVISIBLE
binding
.
ivScan
.
visibility
=
View
.
VISIBLE
binding
.
llDocument
.
visibility
=
View
.
VISIBLE
binding
.
llRecent
.
visibility
=
View
.
VISIBLE
binding
.
llBookmark
.
visibility
=
View
.
VISIBLE
binding
.
llTool
.
visibility
=
View
.
VISIBLE
binding
.
ivScan
.
visibility
=
View
.
VISIBLE
binding
.
llDocument
.
visibility
=
View
.
VISIBLE
binding
.
llRecent
.
visibility
=
View
.
VISIBLE
binding
.
llBookmark
.
visibility
=
View
.
VISIBLE
binding
.
llTool
.
visibility
=
View
.
VISIBLE
}
}
...
...
@@ -197,4 +207,52 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView {
}
fun
changeSearchUI
(
show
:
Boolean
)
{
if
(
show
)
{
binding
.
ivScan
.
visibility
=
View
.
INVISIBLE
binding
.
llBottom
.
visibility
=
View
.
INVISIBLE
}
else
{
binding
.
ivScan
.
visibility
=
View
.
VISIBLE
binding
.
llBottom
.
visibility
=
View
.
VISIBLE
}
}
companion
object
{
fun
Activity
.
jumpDocument
(
item
:
DocumentBean
)
{
if
(
item
.
type
==
DocumentBean
.
TYPE_PDF
)
{
if
(
item
.
state
==
0
)
{
startActivity
(
Intent
(
this
,
PdfActivity
::
class
.
java
).
apply
{
putExtra
(
"path"
,
item
.
path
)
})
}
if
(
item
.
state
==
1
)
{
showPdfPwdDialog
(
state
=
item
.
state
,
path
=
item
.
path
,
isCheckPwd
=
true
,
verificationAction
=
{
pwd
->
startActivity
(
Intent
(
this
,
PdfActivity
::
class
.
java
).
apply
{
putExtra
(
"path"
,
item
.
path
)
putExtra
(
"pwd"
,
pwd
)
})
})
}
}
if
(
item
.
type
==
DocumentBean
.
TYPE_WORD
)
{
WordActivity
.
wordDocumentBean
=
item
WordActivity
.
launchDocViewer
(
this
,
3
,
item
.
path
,
-
1
,
100
)
}
if
(
item
.
type
==
DocumentBean
.
TYPE_EXCEL
)
{
ExcelActivity
.
excelDocumentBean
=
item
ExcelActivity
.
launchDocViewer
(
this
,
3
,
item
.
path
,
-
1
,
100
)
}
if
(
item
.
type
==
DocumentBean
.
TYPE_PPT
)
{
PptActivity
.
pptDocumentBean
=
item
PptActivity
.
launchDocViewer
(
this
,
3
,
item
.
path
,
-
1
,
100
)
}
}
}
}
\ No newline at end of file
app/src/main/res/layout/fragment_document.xml
View file @
a4d8ecd3
...
...
@@ -207,5 +207,50 @@
</LinearLayout>
<FrameLayout
android:id=
"@+id/fl_search"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:background=
"@color/white"
android:visibility=
"gone"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/cl_top"
>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/rv_search"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
app:layoutManager=
"androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem=
"@layout/item_document"
/>
<LinearLayout
android:id=
"@+id/ll_empty"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:layout_marginBottom=
"60dp"
android:orientation=
"vertical"
android:visibility=
"gone"
tools:ignore=
"UseCompoundDrawables,UselessParent"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:src=
"@mipmap/empty"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"20dp"
android:text=
"Empty"
android:textColor=
"#B1B4B9"
android:textSize=
"16sp"
tools:ignore=
"HardcodedText"
/>
</LinearLayout>
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
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