mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-07-14 02:01:56 +00:00
Fix intro screens
This commit is contained in:
parent
66199eefbe
commit
e72cc072f1
12 changed files with 101 additions and 80 deletions
|
|
@ -64,7 +64,7 @@ dependencies {
|
||||||
compileOnly 'com.github.pengrad:jdk9-deps:1.0'
|
compileOnly 'com.github.pengrad:jdk9-deps:1.0'
|
||||||
//App Compatibility and Material Design
|
//App Compatibility and Material Design
|
||||||
implementation 'androidx.appcompat:appcompat:1.1.0'
|
implementation 'androidx.appcompat:appcompat:1.1.0'
|
||||||
implementation 'com.google.android.material:material:1.0.0'
|
implementation 'com.google.android.material:material:1.1.0'
|
||||||
implementation 'androidx.recyclerview:recyclerview:1.1.0'
|
implementation 'androidx.recyclerview:recyclerview:1.1.0'
|
||||||
implementation 'androidx.legacy:legacy-preference-v14:1.0.0'
|
implementation 'androidx.legacy:legacy-preference-v14:1.0.0'
|
||||||
// Emojis
|
// Emojis
|
||||||
|
|
@ -132,9 +132,9 @@ dependencies {
|
||||||
implementation 'androidx.core:core-ktx:1.2.0'
|
implementation 'androidx.core:core-ktx:1.2.0'
|
||||||
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
|
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
|
||||||
implementation "androidx.lifecycle:lifecycle-common-java8:2.2.0"
|
implementation "androidx.lifecycle:lifecycle-common-java8:2.2.0"
|
||||||
implementation 'androidx.navigation:navigation-fragment-ktx:2.2.1'
|
implementation 'androidx.navigation:navigation-fragment-ktx:2.2.2'
|
||||||
implementation 'androidx.navigation:navigation-ui-ktx:2.2.1'
|
implementation 'androidx.navigation:navigation-ui-ktx:2.2.2'
|
||||||
implementation "androidx.paging:paging-runtime-ktx:2.1.1"
|
implementation "androidx.paging:paging-runtime-ktx:2.1.2"
|
||||||
implementation 'com.plattysoft.leonids:LeonidsLib:1.3.2'
|
implementation 'com.plattysoft.leonids:LeonidsLib:1.3.2'
|
||||||
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.3'
|
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.3'
|
||||||
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.3'
|
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.3'
|
||||||
|
|
@ -162,7 +162,7 @@ android {
|
||||||
multiDexEnabled true
|
multiDexEnabled true
|
||||||
resConfigs "en", "bg", "de", "en-rGB", "es", "fr", "hr-rHR", "in", "it", "iw", "ja", "ko", "lt", "nl", "pl", "pt-rBR", "pt-rPT", "ru", "tr", "zh", "zh-rTW"
|
resConfigs "en", "bg", "de", "en-rGB", "es", "fr", "hr-rHR", "in", "it", "iw", "ja", "ko", "lt", "nl", "pl", "pt-rBR", "pt-rPT", "ru", "tr", "zh", "zh-rTW"
|
||||||
|
|
||||||
versionCode 2407
|
versionCode 2408
|
||||||
versionName "2.6"
|
versionName "2.6"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,12 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent">
|
||||||
|
<LinearLayout
|
||||||
android:orientation="vertical" android:layout_width="match_parent"
|
android:orientation="vertical" android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:background="@color/white">
|
android:background="@color/white"
|
||||||
|
android:layout_marginBottom="@dimen/spacing_large">
|
||||||
<TextView
|
<TextView
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
|
@ -108,3 +112,4 @@
|
||||||
android:layout_marginStart="@dimen/spacing_large"
|
android:layout_marginStart="@dimen/spacing_large"
|
||||||
android:layout_marginEnd="@dimen/spacing_large" />
|
android:layout_marginEnd="@dimen/spacing_large" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
</androidx.core.widget.NestedScrollView>
|
||||||
|
|
@ -1,4 +1,8 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent">
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
|
|
@ -174,3 +178,4 @@
|
||||||
android:text="@string/reset_walkthrough"
|
android:text="@string/reset_walkthrough"
|
||||||
android:layout_margin="@dimen/spacing_large"/>
|
android:layout_margin="@dimen/spacing_large"/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
</androidx.core.widget.NestedScrollView>
|
||||||
|
|
@ -24,7 +24,6 @@ import com.habitrpg.android.habitica.ui.helpers.dismissKeyboard
|
||||||
import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar
|
import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar
|
||||||
import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar.Companion.showSnackbar
|
import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar.Companion.showSnackbar
|
||||||
import io.reactivex.functions.Consumer
|
import io.reactivex.functions.Consumer
|
||||||
import kotlinx.android.synthetic.main.activity_prefs.*
|
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.TimeUnit
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
@ -54,7 +53,7 @@ class GroupInviteActivity : BaseActivity() {
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
setupToolbar(toolbar)
|
setupToolbar(findViewById(R.id.toolbar))
|
||||||
viewPager.currentItem = 0
|
viewPager.currentItem = 0
|
||||||
|
|
||||||
supportActionBar?.title = null
|
supportActionBar?.title = null
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,6 @@ import android.widget.TextView
|
||||||
import com.habitrpg.android.habitica.R
|
import com.habitrpg.android.habitica.R
|
||||||
import com.habitrpg.android.habitica.components.UserComponent
|
import com.habitrpg.android.habitica.components.UserComponent
|
||||||
import com.habitrpg.android.habitica.ui.helpers.setMarkdown
|
import com.habitrpg.android.habitica.ui.helpers.setMarkdown
|
||||||
import kotlinx.android.synthetic.main.activity_prefs.*
|
|
||||||
import okhttp3.*
|
import okhttp3.*
|
||||||
import java.io.BufferedReader
|
import java.io.BufferedReader
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
|
|
@ -20,7 +19,7 @@ class GuidelinesActivity: BaseActivity() {
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
setupToolbar(toolbar)
|
setupToolbar(findViewById(R.id.toolbar))
|
||||||
|
|
||||||
val client = OkHttpClient()
|
val client = OkHttpClient()
|
||||||
val request = Request.Builder().url("https://s3.amazonaws.com/habitica-assets/mobileApp/endpoint/community-guidelines.md").build()
|
val request = Request.Builder().url("https://s3.amazonaws.com/habitica-assets/mobileApp/endpoint/community-guidelines.md").build()
|
||||||
|
|
|
||||||
|
|
@ -3,46 +3,47 @@ package com.habitrpg.android.habitica.ui.activities
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.Button
|
import android.view.ViewGroup
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.core.content.res.ResourcesCompat
|
import androidx.core.content.res.ResourcesCompat
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.fragment.app.FragmentManager
|
import androidx.fragment.app.FragmentManager
|
||||||
import androidx.fragment.app.FragmentPagerAdapter
|
import androidx.fragment.app.FragmentStatePagerAdapter
|
||||||
import androidx.viewpager.widget.ViewPager
|
import androidx.viewpager.widget.ViewPager
|
||||||
import com.habitrpg.android.habitica.R
|
import com.habitrpg.android.habitica.R
|
||||||
import com.habitrpg.android.habitica.components.UserComponent
|
import com.habitrpg.android.habitica.components.UserComponent
|
||||||
import com.habitrpg.android.habitica.data.ContentRepository
|
import com.habitrpg.android.habitica.data.ContentRepository
|
||||||
|
import com.habitrpg.android.habitica.databinding.ActivityIntroBinding
|
||||||
import com.habitrpg.android.habitica.helpers.RxErrorHandler
|
import com.habitrpg.android.habitica.helpers.RxErrorHandler
|
||||||
import com.habitrpg.android.habitica.ui.fragments.setup.IntroFragment
|
import com.habitrpg.android.habitica.ui.fragments.setup.IntroFragment
|
||||||
import com.habitrpg.android.habitica.ui.helpers.bindView
|
|
||||||
import com.viewpagerindicator.IconPageIndicator
|
|
||||||
import com.viewpagerindicator.IconPagerAdapter
|
import com.viewpagerindicator.IconPagerAdapter
|
||||||
import io.reactivex.functions.Consumer
|
import io.reactivex.functions.Consumer
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
|
||||||
class IntroActivity : BaseActivity(), View.OnClickListener, ViewPager.OnPageChangeListener {
|
class IntroActivity : BaseActivity(), View.OnClickListener, ViewPager.OnPageChangeListener {
|
||||||
|
|
||||||
|
private lateinit var binding: ActivityIntroBinding
|
||||||
@Inject
|
@Inject
|
||||||
lateinit var contentRepository: ContentRepository
|
lateinit var contentRepository: ContentRepository
|
||||||
|
|
||||||
private val pager: ViewPager by bindView(R.id.viewPager)
|
|
||||||
private val indicator: IconPageIndicator by bindView(R.id.view_pager_indicator)
|
|
||||||
private val skipButton: Button by bindView(R.id.skipButton)
|
|
||||||
private val finishButton: Button by bindView(R.id.finishButton)
|
|
||||||
|
|
||||||
override fun getLayoutResId(): Int {
|
override fun getLayoutResId(): Int {
|
||||||
return R.layout.activity_intro
|
return R.layout.activity_intro
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun getContentView(): View {
|
||||||
|
binding = ActivityIntroBinding.inflate(layoutInflater)
|
||||||
|
return binding.root
|
||||||
|
}
|
||||||
|
|
||||||
public override fun onCreate(savedInstanceState: Bundle?) {
|
public override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
|
||||||
setupIntro()
|
setupIntro()
|
||||||
indicator.setViewPager(pager)
|
//binding.viewPagerIndicator.setViewPager(binding.viewPager)
|
||||||
|
|
||||||
this.skipButton.setOnClickListener(this)
|
binding.skipButton.setOnClickListener(this)
|
||||||
this.finishButton.setOnClickListener(this)
|
binding.finishButton.setOnClickListener(this)
|
||||||
|
|
||||||
compositeSubscription.add(contentRepository.retrieveContent(this).subscribe(Consumer { }, RxErrorHandler.handleEmptyError()))
|
compositeSubscription.add(contentRepository.retrieveContent(this).subscribe(Consumer { }, RxErrorHandler.handleEmptyError()))
|
||||||
}
|
}
|
||||||
|
|
@ -52,11 +53,9 @@ class IntroActivity : BaseActivity(), View.OnClickListener, ViewPager.OnPageChan
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setupIntro() {
|
private fun setupIntro() {
|
||||||
val fragmentManager = supportFragmentManager
|
binding.viewPager.adapter = PagerAdapter(supportFragmentManager)
|
||||||
|
|
||||||
pager.adapter = PagerAdapter(fragmentManager)
|
binding.viewPager.addOnPageChangeListener(this)
|
||||||
|
|
||||||
pager.addOnPageChangeListener(this)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onClick(v: View) {
|
override fun onClick(v: View) {
|
||||||
|
|
@ -76,43 +75,19 @@ class IntroActivity : BaseActivity(), View.OnClickListener, ViewPager.OnPageChan
|
||||||
|
|
||||||
override fun onPageSelected(position: Int) {
|
override fun onPageSelected(position: Int) {
|
||||||
if (position == 2) {
|
if (position == 2) {
|
||||||
this.finishButton.visibility = View.VISIBLE
|
binding.finishButton.visibility = View.VISIBLE
|
||||||
} else {
|
} else {
|
||||||
this.finishButton.visibility = View.GONE
|
binding.finishButton.visibility = View.GONE
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onPageScrollStateChanged(state: Int) { /* no-on */ }
|
override fun onPageScrollStateChanged(state: Int) { /* no-on */ }
|
||||||
|
|
||||||
private inner class PagerAdapter(fm: FragmentManager) : FragmentPagerAdapter(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT), IconPagerAdapter {
|
private inner class PagerAdapter(fm: FragmentManager) : FragmentStatePagerAdapter(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT), IconPagerAdapter {
|
||||||
|
|
||||||
override fun getItem(position: Int): Fragment {
|
override fun getItem(position: Int): Fragment {
|
||||||
val fragment = IntroFragment()
|
val fragment = IntroFragment()
|
||||||
|
configureFragment(fragment, position)
|
||||||
when (position) {
|
|
||||||
0 -> {
|
|
||||||
fragment.setImage(ResourcesCompat.getDrawable(resources, R.drawable.intro_1, null))
|
|
||||||
fragment.setSubtitle(getString(R.string.intro_1_subtitle))
|
|
||||||
fragment.setTitleImage(ResourcesCompat.getDrawable(resources, R.drawable.intro_1_title, null))
|
|
||||||
fragment.setDescription(getString(R.string.intro_1_description, getString(R.string.habitica_user_count)))
|
|
||||||
fragment.setBackgroundColor(ContextCompat.getColor(this@IntroActivity, R.color.brand_300))
|
|
||||||
}
|
|
||||||
1 -> {
|
|
||||||
fragment.setImage(ResourcesCompat.getDrawable(resources, R.drawable.intro_2, null))
|
|
||||||
fragment.setSubtitle(getString(R.string.intro_2_subtitle))
|
|
||||||
fragment.setTitle(getString(R.string.intro_2_title))
|
|
||||||
fragment.setDescription(getString(R.string.intro_2_description))
|
|
||||||
fragment.setBackgroundColor(ContextCompat.getColor(this@IntroActivity, R.color.blue_10))
|
|
||||||
}
|
|
||||||
2 -> {
|
|
||||||
fragment.setImage(ResourcesCompat.getDrawable(resources, R.drawable.intro_3, null))
|
|
||||||
fragment.setSubtitle(getString(R.string.intro_3_subtitle))
|
|
||||||
fragment.setTitle(getString(R.string.intro_3_title))
|
|
||||||
fragment.setDescription(getString(R.string.intro_3_description))
|
|
||||||
fragment.setBackgroundColor(ContextCompat.getColor(this@IntroActivity, R.color.red_100))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return fragment
|
return fragment
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -123,5 +98,39 @@ class IntroActivity : BaseActivity(), View.OnClickListener, ViewPager.OnPageChan
|
||||||
override fun getCount(): Int {
|
override fun getCount(): Int {
|
||||||
return 3
|
return 3
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun instantiateItem(container: ViewGroup, position: Int): Any {
|
||||||
|
val item = super.instantiateItem(container, position)
|
||||||
|
if (item is IntroFragment) {
|
||||||
|
configureFragment(item, position)
|
||||||
|
}
|
||||||
|
return item
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun configureFragment(fragment: IntroFragment, position: Int) {
|
||||||
|
when (position) {
|
||||||
|
0 -> {
|
||||||
|
fragment.setImage(ResourcesCompat.getDrawable(resources, R.drawable.intro_1, null))
|
||||||
|
fragment.setSubtitle(getString(R.string.intro_1_subtitle))
|
||||||
|
fragment.setTitleImage(ResourcesCompat.getDrawable(resources, R.drawable.intro_1_title, null))
|
||||||
|
fragment.setDescription(getString(R.string.intro_1_description, getString(R.string.habitica_user_count)))
|
||||||
|
fragment.setBackgroundColor(ContextCompat.getColor(this@IntroActivity, R.color.brand_300))
|
||||||
|
}
|
||||||
|
1 -> {
|
||||||
|
fragment.setImage(ResourcesCompat.getDrawable(resources, R.drawable.intro_2, null))
|
||||||
|
fragment.setSubtitle(getString(R.string.intro_2_subtitle))
|
||||||
|
fragment.setTitle(getString(R.string.intro_2_title))
|
||||||
|
fragment.setDescription(getString(R.string.intro_2_description))
|
||||||
|
fragment.setBackgroundColor(ContextCompat.getColor(this@IntroActivity, R.color.blue_10))
|
||||||
|
}
|
||||||
|
2 -> {
|
||||||
|
fragment.setImage(ResourcesCompat.getDrawable(resources, R.drawable.intro_3, null))
|
||||||
|
fragment.setSubtitle(getString(R.string.intro_3_subtitle))
|
||||||
|
fragment.setTitle(getString(R.string.intro_3_title))
|
||||||
|
fragment.setDescription(getString(R.string.intro_3_description))
|
||||||
|
fragment.setBackgroundColor(ContextCompat.getColor(this@IntroActivity, R.color.red_100))
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,8 @@ import com.habitrpg.android.habitica.R
|
||||||
import com.habitrpg.android.habitica.components.UserComponent
|
import com.habitrpg.android.habitica.components.UserComponent
|
||||||
import com.habitrpg.android.habitica.data.InventoryRepository
|
import com.habitrpg.android.habitica.data.InventoryRepository
|
||||||
import com.habitrpg.android.habitica.data.SocialRepository
|
import com.habitrpg.android.habitica.data.SocialRepository
|
||||||
|
import com.habitrpg.android.habitica.databinding.ActivityIntroBinding
|
||||||
|
import com.habitrpg.android.habitica.databinding.ActivityNotificationsBinding
|
||||||
import com.habitrpg.android.habitica.helpers.RxErrorHandler
|
import com.habitrpg.android.habitica.helpers.RxErrorHandler
|
||||||
import com.habitrpg.android.habitica.models.Notification
|
import com.habitrpg.android.habitica.models.Notification
|
||||||
import com.habitrpg.android.habitica.models.inventory.QuestContent
|
import com.habitrpg.android.habitica.models.inventory.QuestContent
|
||||||
|
|
@ -20,11 +22,11 @@ import com.habitrpg.android.habitica.models.notifications.*
|
||||||
import com.habitrpg.android.habitica.ui.activities.MainActivity.Companion.NOTIFICATION_CLICK
|
import com.habitrpg.android.habitica.ui.activities.MainActivity.Companion.NOTIFICATION_CLICK
|
||||||
import com.habitrpg.android.habitica.ui.viewmodels.NotificationsViewModel
|
import com.habitrpg.android.habitica.ui.viewmodels.NotificationsViewModel
|
||||||
import io.reactivex.functions.Consumer
|
import io.reactivex.functions.Consumer
|
||||||
import kotlinx.android.synthetic.main.activity_notifications.*
|
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
class NotificationsActivity : BaseActivity(), androidx.swiperefreshlayout.widget.SwipeRefreshLayout.OnRefreshListener {
|
class NotificationsActivity : BaseActivity(), androidx.swiperefreshlayout.widget.SwipeRefreshLayout.OnRefreshListener {
|
||||||
|
|
||||||
|
private lateinit var binding: ActivityNotificationsBinding
|
||||||
@Inject
|
@Inject
|
||||||
lateinit var inventoryRepository: InventoryRepository
|
lateinit var inventoryRepository: InventoryRepository
|
||||||
@Inject
|
@Inject
|
||||||
|
|
@ -36,12 +38,17 @@ class NotificationsActivity : BaseActivity(), androidx.swiperefreshlayout.widget
|
||||||
|
|
||||||
override fun getLayoutResId(): Int = R.layout.activity_notifications
|
override fun getLayoutResId(): Int = R.layout.activity_notifications
|
||||||
|
|
||||||
|
override fun getContentView(): View {
|
||||||
|
binding = ActivityNotificationsBinding.inflate(layoutInflater)
|
||||||
|
return binding.root
|
||||||
|
}
|
||||||
|
|
||||||
private var notifications: List<Notification> = emptyList()
|
private var notifications: List<Notification> = emptyList()
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
|
||||||
setupToolbar(toolbar)
|
setupToolbar(binding.toolbar)
|
||||||
|
|
||||||
inflater = getSystemService(Context.LAYOUT_INFLATER_SERVICE) as? LayoutInflater
|
inflater = getSystemService(Context.LAYOUT_INFLATER_SERVICE) as? LayoutInflater
|
||||||
|
|
||||||
|
|
@ -53,7 +60,7 @@ class NotificationsActivity : BaseActivity(), androidx.swiperefreshlayout.widget
|
||||||
viewModel.markNotificationsAsSeen(it)
|
viewModel.markNotificationsAsSeen(it)
|
||||||
}, RxErrorHandler.handleEmptyError()))
|
}, RxErrorHandler.handleEmptyError()))
|
||||||
|
|
||||||
notifications_refresh_layout?.setOnRefreshListener(this)
|
binding.notificationsRefreshLayout.setOnRefreshListener(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun injectActivity(component: UserComponent?) {
|
override fun injectActivity(component: UserComponent?) {
|
||||||
|
|
@ -69,21 +76,21 @@ class NotificationsActivity : BaseActivity(), androidx.swiperefreshlayout.widget
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onRefresh() {
|
override fun onRefresh() {
|
||||||
notifications_refresh_layout.isRefreshing = true
|
binding.notificationsRefreshLayout.isRefreshing = true
|
||||||
|
|
||||||
compositeSubscription.add(viewModel.refreshNotifications().subscribe(Consumer {
|
compositeSubscription.add(viewModel.refreshNotifications().subscribe(Consumer {
|
||||||
notifications_refresh_layout.isRefreshing = false
|
binding.notificationsRefreshLayout.isRefreshing = false
|
||||||
}, RxErrorHandler.handleEmptyError()))
|
}, RxErrorHandler.handleEmptyError()))
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setNotifications(notifications: List<Notification>) {
|
private fun setNotifications(notifications: List<Notification>) {
|
||||||
this.notifications = notifications
|
this.notifications = notifications
|
||||||
|
|
||||||
if (notification_items == null) {
|
if (binding.notificationItems == null) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
notification_items.removeAllViewsInLayout()
|
binding.notificationItems.removeAllViewsInLayout()
|
||||||
|
|
||||||
if (notifications.isEmpty()) {
|
if (notifications.isEmpty()) {
|
||||||
displayNoNotificationsView()
|
displayNoNotificationsView()
|
||||||
|
|
@ -93,15 +100,15 @@ class NotificationsActivity : BaseActivity(), androidx.swiperefreshlayout.widget
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun displayNoNotificationsView() {
|
private fun displayNoNotificationsView() {
|
||||||
notification_items.showDividers = LinearLayout.SHOW_DIVIDER_NONE
|
binding.notificationItems.showDividers = LinearLayout.SHOW_DIVIDER_NONE
|
||||||
|
|
||||||
notification_items.addView(inflater?.inflate(R.layout.no_notifications, notification_items, false))
|
binding.notificationItems.addView(inflater?.inflate(R.layout.no_notifications, binding.notificationItems, false))
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun displayNotificationsListView(notifications: List<Notification>) {
|
private fun displayNotificationsListView(notifications: List<Notification>) {
|
||||||
notification_items.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE or LinearLayout.SHOW_DIVIDER_END
|
binding.notificationItems.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE or LinearLayout.SHOW_DIVIDER_END
|
||||||
|
|
||||||
notification_items.addView(
|
binding.notificationItems.addView(
|
||||||
createNotificationsHeaderView(notifications.count())
|
createNotificationsHeaderView(notifications.count())
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -121,13 +128,13 @@ class NotificationsActivity : BaseActivity(), androidx.swiperefreshlayout.widget
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item != null) {
|
if (item != null) {
|
||||||
notification_items.addView(item)
|
binding.notificationItems.addView(item)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun createNotificationsHeaderView(notificationCount: Int): View? {
|
private fun createNotificationsHeaderView(notificationCount: Int): View? {
|
||||||
val header = inflater?.inflate(R.layout.notifications_header, notification_items, false)
|
val header = inflater?.inflate(R.layout.notifications_header, binding.notificationItems, false)
|
||||||
|
|
||||||
val badge = header?.findViewById(R.id.notifications_title_badge) as? TextView
|
val badge = header?.findViewById(R.id.notifications_title_badge) as? TextView
|
||||||
badge?.text = notificationCount.toString()
|
badge?.text = notificationCount.toString()
|
||||||
|
|
@ -237,7 +244,7 @@ class NotificationsActivity : BaseActivity(), androidx.swiperefreshlayout.widget
|
||||||
imageResourceId: Int? = null,
|
imageResourceId: Int? = null,
|
||||||
textColor: Int? = null
|
textColor: Int? = null
|
||||||
): View? {
|
): View? {
|
||||||
val item = inflater?.inflate(R.layout.notification_item, notification_items, false)
|
val item = inflater?.inflate(R.layout.notification_item, binding.notificationItems, false)
|
||||||
|
|
||||||
val container = item?.findViewById(R.id.notification_item) as? View
|
val container = item?.findViewById(R.id.notification_item) as? View
|
||||||
container?.setOnClickListener {
|
container?.setOnClickListener {
|
||||||
|
|
@ -337,7 +344,7 @@ class NotificationsActivity : BaseActivity(), androidx.swiperefreshlayout.widget
|
||||||
notification: Notification,
|
notification: Notification,
|
||||||
messageText: CharSequence,
|
messageText: CharSequence,
|
||||||
openable: Boolean = false): View? {
|
openable: Boolean = false): View? {
|
||||||
val item = inflater?.inflate(R.layout.notification_item_actionable, notification_items, false)
|
val item = inflater?.inflate(R.layout.notification_item_actionable, binding.notificationItems, false)
|
||||||
|
|
||||||
if (openable) {
|
if (openable) {
|
||||||
val container = item?.findViewById(R.id.notification_item) as? View
|
val container = item?.findViewById(R.id.notification_item) as? View
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,6 @@ import androidx.preference.PreferenceScreen
|
||||||
import com.habitrpg.android.habitica.R
|
import com.habitrpg.android.habitica.R
|
||||||
import com.habitrpg.android.habitica.components.UserComponent
|
import com.habitrpg.android.habitica.components.UserComponent
|
||||||
import com.habitrpg.android.habitica.ui.fragments.preferences.*
|
import com.habitrpg.android.habitica.ui.fragments.preferences.*
|
||||||
import kotlinx.android.synthetic.main.activity_prefs.*
|
|
||||||
|
|
||||||
class PrefsActivity : BaseActivity(), PreferenceFragmentCompat.OnPreferenceStartScreenCallback {
|
class PrefsActivity : BaseActivity(), PreferenceFragmentCompat.OnPreferenceStartScreenCallback {
|
||||||
|
|
||||||
|
|
@ -15,7 +14,7 @@ class PrefsActivity : BaseActivity(), PreferenceFragmentCompat.OnPreferenceStart
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
|
||||||
setupToolbar(toolbar)
|
setupToolbar(findViewById(R.id.toolbar))
|
||||||
|
|
||||||
supportFragmentManager.beginTransaction()
|
supportFragmentManager.beginTransaction()
|
||||||
.add(R.id.fragment_container, PreferencesFragment())
|
.add(R.id.fragment_container, PreferencesFragment())
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,6 @@ import com.habitrpg.android.habitica.helpers.RxErrorHandler
|
||||||
import com.habitrpg.android.habitica.ui.adapter.social.PartyMemberRecyclerViewAdapter
|
import com.habitrpg.android.habitica.ui.adapter.social.PartyMemberRecyclerViewAdapter
|
||||||
import com.habitrpg.android.habitica.ui.helpers.bindView
|
import com.habitrpg.android.habitica.ui.helpers.bindView
|
||||||
import io.reactivex.functions.Consumer
|
import io.reactivex.functions.Consumer
|
||||||
import kotlinx.android.synthetic.main.activity_prefs.*
|
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
class SkillMemberActivity : BaseActivity() {
|
class SkillMemberActivity : BaseActivity() {
|
||||||
|
|
@ -36,7 +35,7 @@ class SkillMemberActivity : BaseActivity() {
|
||||||
|
|
||||||
public override fun onCreate(savedInstanceState: Bundle?) {
|
public override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
setupToolbar(toolbar)
|
setupToolbar(findViewById(R.id.toolbar))
|
||||||
loadMemberList()
|
loadMemberList()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,6 @@ import com.habitrpg.android.habitica.modules.AppModule
|
||||||
import com.habitrpg.android.habitica.ui.fragments.skills.SkillTasksRecyclerViewFragment
|
import com.habitrpg.android.habitica.ui.fragments.skills.SkillTasksRecyclerViewFragment
|
||||||
import com.habitrpg.android.habitica.ui.helpers.bindView
|
import com.habitrpg.android.habitica.ui.helpers.bindView
|
||||||
import io.reactivex.functions.Consumer
|
import io.reactivex.functions.Consumer
|
||||||
import kotlinx.android.synthetic.main.activity_prefs.*
|
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import javax.inject.Named
|
import javax.inject.Named
|
||||||
|
|
||||||
|
|
@ -40,7 +39,7 @@ class SkillTasksActivity : BaseActivity() {
|
||||||
|
|
||||||
public override fun onCreate(savedInstanceState: Bundle?) {
|
public override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
setupToolbar(toolbar)
|
setupToolbar(findViewById(R.id.toolbar))
|
||||||
loadTaskLists()
|
loadTaskLists()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -100,7 +100,7 @@ class BugFixFragment: BaseMainFragment() {
|
||||||
activity?.let {
|
activity?.let {
|
||||||
val emailIntent = Intent(Intent.ACTION_SENDTO)
|
val emailIntent = Intent(Intent.ACTION_SENDTO)
|
||||||
val mailto = "mailto:" + appConfigManager.supportEmail() +
|
val mailto = "mailto:" + appConfigManager.supportEmail() +
|
||||||
"&subject=" + Uri.encode(subject) +
|
"?subject=" + Uri.encode(subject) +
|
||||||
"&body=" + Uri.encode(bodyOfEmail)
|
"&body=" + Uri.encode(bodyOfEmail)
|
||||||
emailIntent.data = Uri.parse(mailto);
|
emailIntent.data = Uri.parse(mailto);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -118,7 +118,7 @@ class SupportMainFragment : BaseMainFragment() {
|
||||||
activity?.let {
|
activity?.let {
|
||||||
val emailIntent = Intent(Intent.ACTION_SENDTO)
|
val emailIntent = Intent(Intent.ACTION_SENDTO)
|
||||||
val mailto = "mailto:" + appConfigManager.supportEmail() +
|
val mailto = "mailto:" + appConfigManager.supportEmail() +
|
||||||
"&subject=" + Uri.encode(subject) +
|
"?subject=" + Uri.encode(subject) +
|
||||||
"&body=" + Uri.encode(bodyOfEmail)
|
"&body=" + Uri.encode(bodyOfEmail)
|
||||||
emailIntent.data = Uri.parse(mailto);
|
emailIntent.data = Uri.parse(mailto);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue