Skip to content

Commit db7d806

Browse files
committed
adding a page counter at the pdf viewer
1 parent a84ccc2 commit db7d806

File tree

2 files changed

+48
-15
lines changed

2 files changed

+48
-15
lines changed

app/src/main/kotlin/com/simplemobiletools/filemanager/pro/activities/PDFViewerActivity.kt

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@ import android.print.PrintAttributes
88
import android.print.PrintManager
99
import android.view.View
1010
import android.view.WindowManager
11-
import android.widget.RelativeLayout
11+
import androidx.constraintlayout.widget.ConstraintLayout
1212
import androidx.viewpager2.widget.ViewPager2
13+
import androidx.viewpager2.widget.ViewPager2.OnPageChangeCallback
1314
import com.simplemobiletools.commons.extensions.*
1415
import com.simplemobiletools.commons.helpers.REAL_FILE_PATH
1516
import com.simplemobiletools.commons.helpers.isPiePlus
@@ -58,7 +59,6 @@ class PDFViewerActivity : SimpleActivity() {
5859
}
5960

6061
private fun setupMenu() {
61-
(pdf_viewer_appbar.layoutParams as RelativeLayout.LayoutParams).topMargin = statusBarHeight
6262
pdf_viewer_toolbar.menu.apply {
6363
findItem(R.id.menu_print).isVisible = realFilePath.isNotEmpty()
6464
findItem(R.id.menu_print).setOnMenuItemClickListener {
@@ -71,21 +71,30 @@ class PDFViewerActivity : SimpleActivity() {
7171
finish()
7272
}
7373

74-
if (!portrait && navigationBarOnSide && navigationBarWidth > 0) {
75-
pdf_viewer_appbar.setPadding(0, 0, navigationBarWidth, 0)
76-
} else {
77-
pdf_viewer_appbar.setPadding(0, 0, 0, 0)
78-
}
74+
setupViewOffsets()
75+
val primaryColor = getProperPrimaryColor()
76+
page_counter.background?.applyColorFilter(primaryColor)
77+
page_counter.setTextColor(primaryColor.getContrastColor())
7978
}
8079

8180
override fun onConfigurationChanged(newConfig: Configuration) {
8281
super.onConfigurationChanged(newConfig)
83-
(pdf_viewer_appbar.layoutParams as RelativeLayout.LayoutParams).topMargin = statusBarHeight
82+
setupViewOffsets()
83+
}
84+
85+
private fun setupViewOffsets() {
86+
val pageCounterMargin = resources.getDimension(R.dimen.normal_margin).toInt()
87+
(pdf_viewer_appbar.layoutParams as ConstraintLayout.LayoutParams).topMargin = statusBarHeight
8488
if (!portrait && navigationBarOnSide && navigationBarWidth > 0) {
8589
pdf_viewer_appbar.setPadding(0, 0, navigationBarWidth, 0)
8690
} else {
8791
pdf_viewer_appbar.setPadding(0, 0, 0, 0)
8892
}
93+
94+
(page_counter.layoutParams as ConstraintLayout.LayoutParams).apply {
95+
rightMargin = navigationBarWidth + pageCounterMargin
96+
bottomMargin = navigationBarHeight + pageCounterMargin
97+
}
8998
}
9099

91100
private fun checkIntent() {
@@ -103,6 +112,14 @@ class PDFViewerActivity : SimpleActivity() {
103112

104113
pdf_viewer.orientation = ViewPager2.ORIENTATION_VERTICAL
105114
pdf_viewer.adapter = PDFPagerAdapter(this, clickListener, errorHandler, uri.toString(), getProperBackgroundColor())
115+
pdf_viewer.registerOnPageChangeCallback(object : OnPageChangeCallback() {
116+
override fun onPageSelected(position: Int) {
117+
updatePageCounter(position)
118+
}
119+
})
120+
121+
updatePageCounter(0)
122+
page_counter.beVisible()
106123

107124
showSystemUI(true)
108125

@@ -112,6 +129,10 @@ class PDFViewerActivity : SimpleActivity() {
112129
}
113130
}
114131

132+
private fun updatePageCounter(position: Int) {
133+
page_counter.text = "${position + 1} / ${pdf_viewer.adapter?.itemCount}"
134+
}
135+
115136
private fun printText() {
116137
val adapter = PdfDocumentAdapter(this, realFilePath)
117138

@@ -131,6 +152,7 @@ class PDFViewerActivity : SimpleActivity() {
131152
showSystemUI(true)
132153
}
133154

155+
page_counter.animate().alpha(newAlpha).start()
134156
top_shadow.animate().alpha(newAlpha).start()
135157
pdf_viewer_appbar.animate().alpha(newAlpha).withStartAction {
136158
if (newAlpha == 1f) {
Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
2+
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
33
xmlns:app="http://schemas.android.com/apk/res-auto"
4+
xmlns:tools="http://schemas.android.com/tools"
45
android:id="@+id/pdf_viewer_wrapper"
56
android:layout_width="match_parent"
6-
android:layout_height="wrap_content"
7+
android:layout_height="match_parent"
78
app:layout_behavior="@string/appbar_scrolling_view_behavior">
89

910
<androidx.viewpager2.widget.ViewPager2
@@ -15,18 +16,28 @@
1516
android:id="@+id/top_shadow"
1617
android:layout_width="match_parent"
1718
android:layout_height="@dimen/top_shadow_height"
18-
android:layout_alignParentTop="true"
1919
android:background="@drawable/gradient_background_flipped"
20-
android:contentDescription="@null" />
20+
android:contentDescription="@null"
21+
app:layout_constraintTop_toTopOf="parent" />
22+
23+
<TextView
24+
android:id="@+id/page_counter"
25+
style="@style/ColoredButtonStyle"
26+
android:layout_width="wrap_content"
27+
android:layout_height="wrap_content"
28+
android:visibility="gone"
29+
app:layout_constraintBottom_toBottomOf="parent"
30+
app:layout_constraintEnd_toEndOf="parent"
31+
tools:text="1/3" />
2132

2233
<com.google.android.material.appbar.AppBarLayout
2334
android:id="@+id/pdf_viewer_appbar"
2435
android:layout_width="match_parent"
2536
android:layout_height="wrap_content"
26-
android:layout_alignParentTop="true"
2737
android:background="@android:color/transparent"
2838
android:elevation="0dp"
29-
app:elevation="0dp">
39+
app:elevation="0dp"
40+
app:layout_constraintTop_toTopOf="parent">
3041

3142
<com.google.android.material.appbar.MaterialToolbar
3243
android:id="@+id/pdf_viewer_toolbar"
@@ -36,4 +47,4 @@
3647
app:navigationIcon="@drawable/ic_arrow_left_vector" />
3748

3849
</com.google.android.material.appbar.AppBarLayout>
39-
</RelativeLayout>
50+
</androidx.constraintlayout.widget.ConstraintLayout>

0 commit comments

Comments
 (0)