Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
P
PDF Reader 2
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 Reader 2
Commits
ecbcbb0b
Commit
ecbcbb0b
authored
Oct 25, 2024
by
wanglei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
初始化
parent
7046b81c
Pipeline
#1289
canceled with stages
Changes
5
Pipelines
1
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
264 additions
and
11 deletions
+264
-11
DocumentFragment.kt
...main/java/com/base/pdfreader2/ui/main/DocumentFragment.kt
+12
-0
MainActivity.kt
...src/main/java/com/base/pdfreader2/ui/main/MainActivity.kt
+121
-2
bg_f8f9fe_10.xml
app/src/main/res/drawable/bg_f8f9fe_10.xml
+5
-0
activity_main.xml
app/src/main/res/layout/activity_main.xml
+125
-8
strings.xml
app/src/main/res/values/strings.xml
+1
-1
No files found.
app/src/main/java/com/base/pdfreader2/ui/main/DocumentFragment.kt
View file @
ecbcbb0b
...
...
@@ -4,12 +4,15 @@ import android.annotation.SuppressLint
import
androidx.core.view.isVisible
import
androidx.lifecycle.lifecycleScope
import
com.base.pdfreader2.bean.ConstObject
import
com.base.pdfreader2.bean.DocumentBean
import
com.base.pdfreader2.bean.DocumentBean.Companion.TYPE_PDF
import
com.base.pdfreader2.databinding.FragmentDocumentBinding
import
com.base.pdfreader2.helper.BaseFragment
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.delay
import
kotlinx.coroutines.launch
import
java.io.File
import
java.util.Locale
class
DocumentFragment
()
:
BaseFragment
<
FragmentDocumentBinding
>()
{
...
...
@@ -105,5 +108,14 @@ class DocumentFragment() : BaseFragment<FragmentDocumentBinding>() {
}
}
fun
getSearchItems
(
search
:
String
):
List
<
DocumentBean
>
{
if
(
isVisible
)
{
return
adapter
.
items
.
filter
{
File
(
it
.
path
).
name
.
lowercase
(
Locale
.
ENGLISH
).
contains
(
search
.
lowercase
(
Locale
.
ENGLISH
))
}
}
return
listOf
()
}
}
\ No newline at end of file
app/src/main/java/com/base/pdfreader2/ui/main/MainActivity.kt
View file @
ecbcbb0b
package
com.base.pdfreader2.ui.main
import
android.app.Activity
import
android.content.Intent
import
android.graphics.Color
import
android.view.View
import
android.view.inputmethod.EditorInfo
import
androidx.activity.OnBackPressedCallback
import
androidx.core.content.ContextCompat
import
androidx.fragment.app.Fragment
...
...
@@ -14,6 +17,7 @@ import com.base.pdfreader2.bean.ConstObject.BOOKMARK_DATA_TYPE
import
com.base.pdfreader2.bean.ConstObject.DOCUMENT_DATA_TYPE
import
com.base.pdfreader2.bean.ConstObject.RECENT_DATA_TYPE
import
com.base.pdfreader2.bean.DocumentBean
import
com.base.pdfreader2.bean.DocumentBean.Companion.TYPE_PDF
import
com.base.pdfreader2.databinding.ActivityMainBinding
import
com.base.pdfreader2.helper.BaseActivity
import
com.base.pdfreader2.ui.view.DialogView.showSortDialog
...
...
@@ -60,6 +64,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
private
lateinit
var
pageAdapter
:
FragmentStateAdapter
var
uiMode
=
UI_MODE_NORMAL
lateinit
var
searchAdapter
:
DocumentAdapter
override
fun
initView
()
{
BarUtils
.
setStatusBarLightMode
(
this
,
!
ConstObject
.
modeNight
)
if
(
ConstObject
.
modeNight
)
{
...
...
@@ -75,10 +81,11 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
}
initViewPager2
()
initTabLayout
()
initSearchUI
()
binding
.
llDocument
.
isSelected
=
true
}
//OnBackPressedCallback 并将 isEnabled 设置为 false 时,默认的返回键行为将被禁用。
lateinit
var
callback
:
OnBackPressedCallback
override
fun
initListener
()
{
...
...
@@ -93,7 +100,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
changeSelectUI
(
false
)
}
if
(
uiMode
==
UI_MODE_SEARCH
)
{
//
changeSearchUI(false)
changeSearchUI
(
false
)
}
}
}
...
...
@@ -101,6 +108,9 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
binding
.
flFanhui
.
setOnClickListener
{
onBackPressedDispatcher
.
onBackPressed
()
}
binding
.
flFanhui2
.
setOnClickListener
{
onBackPressedDispatcher
.
onBackPressed
()
}
binding
.
llDocument
.
setOnClickListener
{
dataType
=
DOCUMENT_DATA_TYPE
...
...
@@ -129,9 +139,13 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
binding
.
ivSelect
.
setOnClickListener
{
changeSelectUI
(
true
)
}
binding
.
ivSearch
.
setOnClickListener
{
changeSearchUI
(
true
)
}
}
private
fun
changeSelectUI
(
show
:
Boolean
)
{
if
(
show
)
{
uiMode
=
UI_MODE_SELECT
...
...
@@ -153,6 +167,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
currentPage
.
changeSelectUi
(
true
)
}
else
{
uiMode
=
UI_MODE_NORMAL
binding
.
viewPager2
.
isUserInputEnabled
=
true
callback
.
isEnabled
=
false
binding
.
ivPaixu
.
visibility
=
View
.
VISIBLE
...
...
@@ -174,6 +189,72 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
}
private
fun
initSearchUI
()
{
binding
.
editSearch
.
setOnEditorActionListener
{
v
,
actionId
,
event
->
if
(
actionId
==
EditorInfo
.
IME_ACTION_DONE
)
{
LogEx
.
logDebug
(
TAG
,
"IME_ACTION_DONE"
)
searchDocument
()
}
false
}
binding
.
ivSearch2
.
setOnClickListener
{
searchDocument
()
}
searchAdapter
=
DocumentAdapter
()
binding
.
rvSearch
.
adapter
=
searchAdapter
searchAdapter
.
moreAction
=
{
item
->
documentMoreAction
.
invoke
(
item
)
}
searchAdapter
.
itemClick
=
{
jumpDocument
(
it
)
}
}
private
fun
searchDocument
()
{
if
(
binding
.
editSearch
.
text
.
isNotEmpty
())
{
val
search
=
binding
.
editSearch
.
text
.
toString
()
val
items
=
currentPage
.
getSearchItems
(
search
.
trim
())
val
arrayList
=
arrayListOf
<
DocumentBean
>()
arrayList
.
addAll
(
items
)
if
(
arrayList
.
isNotEmpty
())
{
arrayList
.
map
{
it
.
uiType
=
4
}
searchAdapter
.
submitList
(
arrayList
)
binding
.
llEmpty
.
visibility
=
View
.
INVISIBLE
}
else
{
binding
.
llEmpty
.
visibility
=
View
.
VISIBLE
}
}
}
var
documentMoreAction
:
(
item
:
DocumentBean
)
->
Unit
=
{
item
->
if
(
item
.
type
==
TYPE_PDF
)
{
// showPdfHomeMoreDialog(
// item, mainActivity, documentFragment, this
// )
}
// if (item.type == TYPE_WORD || item.type == TYPE_EXCEL || item.type == TYPE_PPT) {
// requireContext().showDocumentHomeMoreDialog(item, mainActivity, documentFragment, this)
// }
}
fun
changeSearchUI
(
show
:
Boolean
)
{
binding
.
llSearch
.
setOnClickListener
{
}
if
(
show
)
{
uiMode
=
UI_MODE_SEARCH
callback
.
isEnabled
=
true
binding
.
llSearch
.
visibility
=
View
.
VISIBLE
}
else
{
uiMode
=
UI_MODE_NORMAL
callback
.
isEnabled
=
false
binding
.
llSearch
.
visibility
=
View
.
GONE
searchAdapter
.
submitList
(
listOf
())
binding
.
editSearch
.
setText
(
""
)
}
}
private
fun
disSelectBottomNav
()
{
binding
.
llDocument
.
isSelected
=
false
binding
.
llRecent
.
isSelected
=
false
...
...
@@ -183,6 +264,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
private
fun
changeDocumentUI
()
{
disSelectBottomNav
()
binding
.
tvTittle
.
text
=
resources
.
getString
(
R
.
string
.
document
)
binding
.
llDocument
.
isSelected
=
true
binding
.
flTool
.
visibility
=
View
.
INVISIBLE
binding
.
clDocument
.
visibility
=
View
.
VISIBLE
...
...
@@ -190,6 +272,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
private
fun
changeRecentUI
()
{
disSelectBottomNav
()
binding
.
tvTittle
.
text
=
resources
.
getString
(
R
.
string
.
recent
)
binding
.
llRecent
.
isSelected
=
true
binding
.
flTool
.
visibility
=
View
.
INVISIBLE
binding
.
clDocument
.
visibility
=
View
.
VISIBLE
...
...
@@ -197,6 +280,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
private
fun
changeBookmarkUI
()
{
disSelectBottomNav
()
binding
.
tvTittle
.
text
=
resources
.
getString
(
R
.
string
.
bookmark
)
binding
.
llBookmark
.
isSelected
=
true
binding
.
flTool
.
visibility
=
View
.
INVISIBLE
binding
.
clDocument
.
visibility
=
View
.
VISIBLE
...
...
@@ -284,5 +368,40 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
ViewPager2Delegate
.
install
(
binding
.
viewPager2
,
binding
.
tabLayoutDocument
)
}
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/drawable/bg_f8f9fe_10.xml
0 → 100644
View file @
ecbcbb0b
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<corners
android:radius=
"10dp"
/>
<solid
android:color=
"#F8F9FE"
/>
</shape>
\ No newline at end of file
app/src/main/res/layout/activity_main.xml
View file @
ecbcbb0b
...
...
@@ -8,10 +8,11 @@
tools:context=
".ui.main.MainActivity"
>
<
androidx.constraintlayout.widget.Constraint
Layout
<
Linear
Layout
android:id=
"@+id/cl_document"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:orientation=
"vertical"
app:layout_constraintBottom_toTopOf=
"@id/ll_bottom"
app:layout_constraintTop_toTopOf=
"parent"
>
...
...
@@ -19,14 +20,14 @@
android:id=
"@+id/card"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
app:cardElevation=
"0dp"
app:layout_constraintTop_toTopOf=
"parent"
>
app:cardElevation=
"0dp"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:id=
"@+id/cl_top"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
>
android:layout_height=
"wrap_content"
android:background=
"@color/white"
>
<FrameLayout
android:id=
"@+id/fl_fanhui"
...
...
@@ -51,11 +52,11 @@
android:layout_height=
"wrap_content"
android:layout_marginStart=
"20dp"
android:layout_marginTop=
"48dp"
android:text=
"@string/document"
android:textColor=
"@color/white"
android:textSize=
"19sp"
app:layout_constraintStart_toEndOf=
"@id/fl_fanhui"
app:layout_constraintTop_toTopOf=
"parent"
tools:text=
"Document"
/>
app:layout_constraintTop_toTopOf=
"parent"
/>
<ImageView
android:id=
"@+id/iv_search"
...
...
@@ -92,7 +93,7 @@
<!-- 外层FrameLayout设置背景用来限定水波纹大小-->
<FrameLayout
android:id=
"@+id/
c
l_tabLayout"
android:id=
"@+id/
f
l_tabLayout"
android:layout_width=
"match_parent"
android:layout_height=
"50dp"
android:layout_marginTop=
"24dp"
...
...
@@ -184,10 +185,11 @@
android:id=
"@+id/viewPager2"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_weight=
"1"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/card"
/>
</
androidx.constraintlayout.widget.Constraint
Layout>
</
Linear
Layout>
<FrameLayout
android:id=
"@+id/fl_tool"
...
...
@@ -197,6 +199,7 @@
app:layout_constraintBottom_toTopOf=
"@id/ll_bottom"
app:layout_constraintTop_toTopOf=
"parent"
>
<fragment
android:name=
"com.base.pdfreader2.ui.main.ToolFragment"
android:layout_width=
"match_parent"
...
...
@@ -427,4 +430,118 @@
</androidx.constraintlayout.widget.ConstraintLayout>
<LinearLayout
android:id=
"@+id/ll_search"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"#FAF8B9"
android:orientation=
"vertical"
android:visibility=
"gone"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"#FA1615"
>
<FrameLayout
android:id=
"@+id/fl_fanhui_2"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:padding=
"15dp"
app:layout_constraintBottom_toBottomOf=
"@id/edit_search"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"@id/edit_search"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:src=
"@mipmap/fanhui_w"
tools:ignore=
"ContentDescription"
/>
</FrameLayout>
<EditText
android:id=
"@+id/edit_search"
android:layout_width=
"0dp"
android:layout_height=
"40dp"
android:layout_marginStart=
"10dp"
android:layout_marginTop=
"42dp"
android:layout_marginEnd=
"20dp"
android:layout_marginBottom=
"16dp"
android:background=
"@drawable/bg_f8f9fe_10"
android:hint=
"Enter the file name to search for"
android:imeOptions=
"actionDone"
android:paddingHorizontal=
"18dp"
android:singleLine=
"true"
android:textColor=
"@color/black"
android:textColorHint=
"#B8B9BD"
android:textSize=
"14sp"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toStartOf=
"@id/iv_search_2"
app:layout_constraintStart_toEndOf=
"@id/fl_fanhui_2"
app:layout_constraintTop_toTopOf=
"parent"
tools:ignore=
"Autofill,HardcodedText,RtlSymmetry,TextFields"
/>
<ImageView
android:id=
"@+id/iv_search_2"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginEnd=
"16dp"
android:src=
"@mipmap/h_sousuo"
app:layout_constraintBottom_toBottomOf=
"@id/edit_search"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toTopOf=
"@id/edit_search"
tools:ignore=
"ContentDescription"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
<FrameLayout
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
>
<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>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
app/src/main/res/values/strings.xml
View file @
ecbcbb0b
...
...
@@ -4,7 +4,7 @@
<string
name=
"next"
>
Next
</string>
<string
name=
"previous"
>
Previous
</string>
<string
name=
"merge_pdf"
>
Merge PDF
</string>
<string
name=
"document"
>
d
ocument
</string>
<string
name=
"document"
>
D
ocument
</string>
<string
name=
"add"
>
Add
</string>
<string
name=
"recent"
>
Recent
</string>
<string
name=
"rename"
>
Rename
</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