Revision control
Copy as Markdown
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
package org.mozilla.focus.firstrun
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import android.widget.ImageView
import android.widget.TextView
import androidx.viewpager.widget.PagerAdapter
import androidx.viewpager.widget.ViewPager
import org.mozilla.focus.R
class FirstrunPagerAdapter(
private val context: Context,
private val listener: View.OnClickListener,
) : PagerAdapter() {
private data class FirstrunPage(val title: String, val text: String, val imageResource: Int) {
val contentDescription = title + text
}
private val pages: Array<FirstrunPage>
init {
val appName = context.getString(R.string.app_name)
pages = arrayOf(
FirstrunPage(
context.getString(R.string.firstrun_defaultbrowser_title),
context.getString(R.string.firstrun_defaultbrowser_text2),
R.drawable.onboarding_img1,
),
FirstrunPage(
context.getString(R.string.firstrun_search_title),
context.getString(R.string.firstrun_search_text),
R.drawable.onboarding_img4,
),
FirstrunPage(
context.getString(R.string.firstrun_shortcut_title),
context.getString(R.string.firstrun_shortcut_text, appName),
R.drawable.onboarding_img3,
),
FirstrunPage(
context.getString(R.string.firstrun_privacy_title),
context.getString(R.string.firstrun_privacy_text, appName),
R.drawable.onboarding_img2,
),
)
}
private fun getView(position: Int, pager: ViewPager): View {
val view = LayoutInflater.from(context).inflate(R.layout.firstrun_page, pager, false)
val page = pages[position]
val titleView: TextView = view.findViewById(R.id.title)
titleView.text = page.title
val textView: TextView = view.findViewById(R.id.text)
textView.text = page.text
val imageView: ImageView = view.findViewById(R.id.image)
imageView.setImageResource(page.imageResource)
val buttonView: Button = view.findViewById(R.id.button)
buttonView.setOnClickListener(listener)
if (position == pages.size - 1) {
buttonView.setText(R.string.firstrun_close_button)
buttonView.id = R.id.finish
buttonView.contentDescription = buttonView.text.toString().lowercase()
} else {
buttonView.setText(R.string.firstrun_next_button)
buttonView.id = R.id.next
}
return view
}
fun getPageAccessibilityDescription(position: Int): String =
pages[position].contentDescription
override fun isViewFromObject(view: View, any: Any) = view === any
override fun getCount() = pages.size
override fun instantiateItem(container: ViewGroup, position: Int): Any {
container as ViewPager
val view = getView(position, container)
container.addView(view)
return view
}
override fun destroyItem(container: ViewGroup, position: Int, view: Any) {
view as View
container.removeView(view)
}
}