mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-04-14 19:56:32 +00:00
Begin implementing new navigation architecture
This commit is contained in:
parent
679c7eff16
commit
70e7b54cc1
44 changed files with 451 additions and 348 deletions
|
|
@ -30,6 +30,7 @@
|
|||
android:theme="@style/AppTheme.NoActionBar.Transparent"
|
||||
android:windowSoftInputMode="stateHidden|adjustResize"
|
||||
android:screenOrientation="portrait">
|
||||
<nav-graph android:value="@navigation/navigation" />
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ apply plugin: 'kotlin-kapt'
|
|||
apply plugin: 'io.fabric'
|
||||
apply plugin: 'com.noveogroup.android.check'
|
||||
apply plugin: 'realm-android'
|
||||
apply plugin: 'androidx.navigation.safeargs'
|
||||
|
||||
buildscript {
|
||||
repositories {
|
||||
|
|
@ -130,6 +131,8 @@ dependencies {
|
|||
implementation 'androidx.core:core-ktx:1.0.1'
|
||||
implementation "androidx.lifecycle:lifecycle-extensions:2.0.0"
|
||||
kapt "androidx.lifecycle:lifecycle-compiler:2.0.0"
|
||||
implementation 'android.arch.navigation:navigation-fragment-ktx:1.0.0-alpha07'
|
||||
implementation 'android.arch.navigation:navigation-ui-ktx:1.0.0-alpha07'
|
||||
implementation 'com.plattysoft.leonids:LeonidsLib:1.3.2'
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
<!-- view background color -->
|
||||
<solid
|
||||
android:color="@color/brand_200" >
|
||||
android:color="@color/brand_300" >
|
||||
</solid>
|
||||
|
||||
<!-- Here is the corner radius -->
|
||||
|
|
|
|||
7
Habitica/res/drawable/white_rounded_border.xml
Normal file
7
Habitica/res/drawable/white_rounded_border.xml
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<stroke
|
||||
android:width="1dp"
|
||||
android:color="@color/white"/>
|
||||
<corners android:radius="6dp" />
|
||||
</shape>
|
||||
|
|
@ -18,13 +18,14 @@
|
|||
android:layout_height="match_parent"
|
||||
tools:context=".ui.activities.MainActivity"
|
||||
android:fitsSystemWindows="false">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/fragment_container"
|
||||
<fragment
|
||||
android:id="@+id/nav_host_fragment"
|
||||
android:name="androidx.navigation.fragment.NavHostFragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
|
||||
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior"
|
||||
app:defaultNavHost="true"
|
||||
app:navGraph="@navigation/navigation" />
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:id="@+id/appbar"
|
||||
android:layout_width="match_parent"
|
||||
|
|
@ -132,7 +133,7 @@
|
|||
app:bb_badgesHideWhenActive="true"
|
||||
app:bb_badgeBackgroundColor="@color/brand_400"
|
||||
android:layout_gravity="bottom"
|
||||
android:layout_margin="0dp"
|
||||
android:layout_marginBottom="-5dp"
|
||||
/>
|
||||
|
||||
</LinearLayout>
|
||||
|
|
|
|||
199
Habitica/res/navigation/navigation.xml
Normal file
199
Habitica/res/navigation/navigation.xml
Normal file
|
|
@ -0,0 +1,199 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/navigation"
|
||||
app:startDestination="@id/tasksFragment">
|
||||
|
||||
<fragment
|
||||
android:id="@+id/equipmentOverviewFragment"
|
||||
android:name="com.habitrpg.android.habitica.ui.fragments.inventory.equipment.EquipmentOverviewFragment"
|
||||
android:label="@string/sidebar.equipment" >
|
||||
<action
|
||||
android:id="@+id/openEquipmentDetail"
|
||||
app:destination="@id/equipmentDetailFragment" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/equipmentDetailFragment"
|
||||
android:name="com.habitrpg.android.habitica.ui.fragments.inventory.equipment.EquipmentDetailFragment"
|
||||
android:label="@string/sidebar.equipment" >
|
||||
<argument
|
||||
android:name="type"
|
||||
app:argType="string" />
|
||||
<argument android:name="isCostume"
|
||||
app:argType="boolean"/>
|
||||
<argument
|
||||
android:name="equippedGear"
|
||||
app:argType="string" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/tasksFragment"
|
||||
android:name="com.habitrpg.android.habitica.ui.fragments.tasks.TasksFragment">
|
||||
<deepLink app:uri="habitica.com/tasks" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/partyFragment"
|
||||
android:name="com.habitrpg.android.habitica.ui.fragments.social.party.PartyFragment"
|
||||
android:label="@string/sidebar.party">
|
||||
<deepLink app:uri="habitica.com/party" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/skillsFragment"
|
||||
android:name="com.habitrpg.android.habitica.ui.fragments.skills.SkillsFragment"
|
||||
android:label="@string/sidebar.skills" />
|
||||
<fragment
|
||||
android:id="@+id/statsFragment"
|
||||
android:name="com.habitrpg.android.habitica.ui.fragments.StatsFragment"
|
||||
android:label="@string/stats" />
|
||||
<fragment
|
||||
android:id="@+id/tavernFragment"
|
||||
android:name="com.habitrpg.android.habitica.ui.fragments.social.TavernFragment"
|
||||
android:label="@string/sidebar.tavern" />
|
||||
<fragment
|
||||
android:id="@+id/guildsOverviewFragment"
|
||||
android:name="com.habitrpg.android.habitica.ui.fragments.social.GuildsOverviewFragment"
|
||||
android:label="@string/sidebar.guilds" >
|
||||
<action
|
||||
android:id="@+id/openGuildDetail"
|
||||
app:destination="@id/guildFragment" >
|
||||
<argument
|
||||
android:name="isMember"
|
||||
android:defaultValue="true" />
|
||||
</action>
|
||||
<action
|
||||
android:id="@+id/openPublicGuilds"
|
||||
app:destination="@id/publicGuildsFragment" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/challengesOverviewFragment"
|
||||
android:name="com.habitrpg.android.habitica.ui.fragments.social.challenges.ChallengesOverviewFragment"
|
||||
android:label="@string/sidebar.challenges" />
|
||||
<fragment
|
||||
android:id="@+id/shopsFragment"
|
||||
android:name="com.habitrpg.android.habitica.ui.fragments.inventory.shops.ShopsFragment"
|
||||
android:label="@string/sidebar_shops" />
|
||||
<fragment
|
||||
android:id="@+id/avatarOverviewFragment"
|
||||
android:name="com.habitrpg.android.habitica.ui.fragments.inventory.customization.AvatarOverviewFragment"
|
||||
android:label="@string/sidebar.avatar" >
|
||||
<action
|
||||
android:id="@+id/openAvatarDetail"
|
||||
app:destination="@id/avatarCustomizationFragment" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/itemsFragment"
|
||||
android:name="com.habitrpg.android.habitica.ui.fragments.inventory.items.ItemsFragment"
|
||||
android:label="@string/sidebar_items" />
|
||||
<fragment
|
||||
android:id="@+id/stableFragment"
|
||||
android:name="com.habitrpg.android.habitica.ui.fragments.inventory.stable.StableFragment"
|
||||
android:label="@string/sidebar.stable" >
|
||||
<action
|
||||
android:id="@+id/openPetDetail"
|
||||
app:destination="@id/petDetailRecyclerFragment" />
|
||||
<action
|
||||
android:id="@+id/openMountDetail"
|
||||
app:destination="@id/mountDetailRecyclerFragment" />
|
||||
</fragment>
|
||||
<activity
|
||||
android:id="@+id/gemPurchaseActivity"
|
||||
android:name="com.habitrpg.android.habitica.ui.activities.GemPurchaseActivity"
|
||||
android:label="GemPurchaseActivity" />
|
||||
<fragment
|
||||
android:id="@+id/newsFragment"
|
||||
android:name="com.habitrpg.android.habitica.ui.fragments.NewsFragment"
|
||||
android:label="@string/sidebar.news" />
|
||||
<fragment
|
||||
android:id="@+id/FAQOverviewFragment"
|
||||
android:name="com.habitrpg.android.habitica.ui.fragments.faq.FAQOverviewFragment"
|
||||
android:label="@string/sidebar_help" >
|
||||
<action
|
||||
android:id="@+id/openFAQDetail"
|
||||
app:destination="@id/FAQDetailFragment" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/aboutFragment"
|
||||
android:name="com.habitrpg.android.habitica.ui.fragments.AboutFragment"
|
||||
android:label="@string/sidebar.about" />
|
||||
<fragment
|
||||
android:id="@+id/inboxFragment"
|
||||
android:name="com.habitrpg.android.habitica.ui.fragments.social.InboxFragment"
|
||||
android:label="@string/sidebar.inbox" >
|
||||
<action
|
||||
android:id="@+id/action_inboxFragment_to_inboxMessageListFragment"
|
||||
app:destination="@id/inboxMessageListFragment" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/guildFragment"
|
||||
android:name="com.habitrpg.android.habitica.ui.fragments.social.GuildFragment"
|
||||
android:label="@string/guild" >
|
||||
<argument
|
||||
android:name="groupID"
|
||||
app:argType="string" />
|
||||
<argument
|
||||
android:name="isMember"
|
||||
app:argType="boolean" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/publicGuildsFragment"
|
||||
android:name="com.habitrpg.android.habitica.ui.fragments.social.PublicGuildsFragment"
|
||||
android:label="@string/public_guilds" >
|
||||
<action
|
||||
android:id="@+id/openGuildDetail"
|
||||
app:destination="@id/guildFragment" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/FAQDetailFragment"
|
||||
android:name="com.habitrpg.android.habitica.ui.fragments.faq.FAQDetailFragment"
|
||||
android:label="@string/sidebar_help" >
|
||||
<argument
|
||||
android:name="position"
|
||||
app:argType="integer" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/avatarCustomizationFragment"
|
||||
android:name="com.habitrpg.android.habitica.ui.fragments.inventory.customization.AvatarCustomizationFragment"
|
||||
android:label="@string/sidebar.avatar" >
|
||||
<argument
|
||||
android:name="type"
|
||||
app:argType="string" />
|
||||
<argument
|
||||
android:name="category"
|
||||
app:argType="string" />
|
||||
</fragment>
|
||||
<activity
|
||||
android:id="@+id/prefsActivity"
|
||||
android:name="com.habitrpg.android.habitica.ui.activities.PrefsActivity"
|
||||
android:label="activity_prefs"
|
||||
tools:layout="@layout/activity_prefs" />
|
||||
<fragment
|
||||
android:id="@+id/inboxMessageListFragment"
|
||||
android:name="com.habitrpg.android.habitica.ui.fragments.social.InboxMessageListFragment"
|
||||
android:label="InboxMessageListFragment" >
|
||||
<argument
|
||||
android:name="userID"
|
||||
app:argType="string" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/petDetailRecyclerFragment"
|
||||
android:name="com.habitrpg.android.habitica.ui.fragments.inventory.stable.PetDetailRecyclerFragment"
|
||||
android:label="PetDetailRecyclerFragment" >
|
||||
<argument
|
||||
android:name="type"
|
||||
app:argType="string" />
|
||||
<argument
|
||||
android:name="group"
|
||||
app:argType="string" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/mountDetailRecyclerFragment"
|
||||
android:name="com.habitrpg.android.habitica.ui.fragments.inventory.stable.MountDetailRecyclerFragment"
|
||||
android:label="MountDetailRecyclerFragment" >
|
||||
<argument
|
||||
android:name="type"
|
||||
app:argType="string" />
|
||||
<argument
|
||||
android:name="group"
|
||||
app:argType="string" />
|
||||
</fragment>
|
||||
</navigation>
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
<resources>
|
||||
|
||||
<style name="GemPurchaseListItem">
|
||||
<item name="android:textColor">@color/brand_100</item>
|
||||
<item name="android:textColor">@color/brand_300</item>
|
||||
<item name="android:gravity">center_horizontal</item>
|
||||
<item name="android:textSize">12sp</item>
|
||||
<item name="android:drawableLeft">@drawable/ic_check_purple</item>
|
||||
|
|
|
|||
|
|
@ -93,8 +93,8 @@
|
|||
<dimen name="task_icon_space">12dp</dimen>
|
||||
<dimen name="task_icon_size">18dp</dimen>
|
||||
<dimen name="task_info_bar_bottom_space">-8dp</dimen>
|
||||
<dimen name="pill_horizontal_padding">12dp</dimen>
|
||||
<dimen name="pill_vertical_padding">4dp</dimen>
|
||||
<dimen name="pill_horizontal_padding">10dp</dimen>
|
||||
<dimen name="pill_vertical_padding">2dp</dimen>
|
||||
<dimen name="button_padding">32dp</dimen>
|
||||
<dimen name="button_padding_small">16dp</dimen>
|
||||
<dimen name="button_padding_vertical_small">4dp</dimen>
|
||||
|
|
|
|||
|
|
@ -827,7 +827,7 @@
|
|||
<string name="username_not_confirmed">Username not confirmed</string>
|
||||
<string name="username_confirmed">Username Confirmed</string>
|
||||
<string name="username_level">\@%s ・Lvl %d</string>
|
||||
<string name="enter_recipient_username">Enter a Recipient\'s username</string>
|
||||
<string name="enter_recipient_username">Enter a Recipient\'s @ username</string>
|
||||
<string name="username_copied">Username copied to clipboard</string>
|
||||
<string name="verification_pet">One of these Veteran Pets will be waiting for you after you’ve finished confirming!</string>
|
||||
<string name="welcomeNameTitle">What should we call you?</string>
|
||||
|
|
@ -840,4 +840,9 @@
|
|||
<string name="equipment_con">CON:</string>
|
||||
<string name="equipment_int">INT:</string>
|
||||
<string name="equipment_per">PER:</string>
|
||||
<string name="visit_website">visit website</string>
|
||||
<string name="subscribe_gift_description">Want to give the benefits of a subscription to someone else?</string>
|
||||
<string name="gift_subscription">Gift a Subscription</string>
|
||||
<string name="gift_one_get_one_description">Gift a sub and get a sub free event going on now!</string>
|
||||
<string name="gift_title">Who would you like to gift to?</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -184,12 +184,12 @@
|
|||
</style>
|
||||
|
||||
<style name="GemPurchaseListItem">
|
||||
<item name="android:textColor">@color/brand_100</item>
|
||||
<item name="android:textColor">@color/brand_300</item>
|
||||
<item name="android:gravity">center_horizontal</item>
|
||||
<item name="android:textSize">12sp</item>
|
||||
<item name="android:drawableLeft">@drawable/ic_check_purple_24dp</item>
|
||||
<item name="android:layout_gravity">center</item>
|
||||
<item name="android:drawablePadding">4dp</item>
|
||||
<item name="android:drawablePadding">8dp</item>
|
||||
</style>
|
||||
|
||||
<style name="SubscriptionListTitle" parent="GemPurchaseListItem">
|
||||
|
|
@ -216,7 +216,7 @@
|
|||
</style>
|
||||
|
||||
<style name="Pill">
|
||||
<item name="android:textSize">11sp</item>
|
||||
<item name="android:textSize">10sp</item>
|
||||
<item name="android:background">@drawable/pill_bg_gray</item>
|
||||
<item name="android:paddingRight">@dimen/pill_horizontal_padding</item>
|
||||
<item name="android:paddingLeft">@dimen/pill_horizontal_padding</item>
|
||||
|
|
@ -249,8 +249,8 @@
|
|||
<item name="android:background">@color/habit_inactive_gray</item>
|
||||
<item name="android:paddingTop">8dp</item>
|
||||
<item name="android:paddingBottom">8dp</item>
|
||||
<item name="android:paddingLeft">12dp</item>
|
||||
<item name="android:paddingRight">12dp</item>
|
||||
<item name="android:paddingLeft">18dp</item>
|
||||
<item name="android:paddingRight">18dp</item>
|
||||
<item name="android:layout_marginBottom">8dp</item>
|
||||
</style>
|
||||
|
||||
|
|
@ -264,6 +264,10 @@
|
|||
|
||||
<style name="subscriptionBoxText.Subtitle">
|
||||
<item name="android:textSize">11sp</item>
|
||||
<item name="android:fontFamily" tools:targetApi="jelly_bean">
|
||||
@string/font_family_regular
|
||||
</item>
|
||||
<item name="android:textColor">@color/gray_50</item>
|
||||
</style>
|
||||
|
||||
<style name="subscriptionBoxText.Title.Red">
|
||||
|
|
|
|||
|
|
@ -7,5 +7,5 @@ import io.realm.RealmResults
|
|||
|
||||
interface FAQRepository : BaseRepository {
|
||||
fun getArticles(): Flowable<RealmResults<FAQArticle>>
|
||||
|
||||
fun getArticle(position: Int): Flowable<FAQArticle>
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,6 +10,9 @@ import io.realm.RealmResults
|
|||
|
||||
|
||||
class FAQRepositoryImpl(localRepository: FAQLocalRepository, apiClient: ApiClient, userID: String) : ContentRepositoryImpl<FAQLocalRepository>(localRepository, apiClient, userID), FAQRepository {
|
||||
override fun getArticle(position: Int): Flowable<FAQArticle> {
|
||||
return localRepository.getArticle(position)
|
||||
}
|
||||
|
||||
override fun getArticles(): Flowable<RealmResults<FAQArticle>> {
|
||||
return localRepository.articles
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import io.reactivex.Flowable
|
|||
import io.realm.RealmResults
|
||||
|
||||
interface FAQLocalRepository : ContentLocalRepository {
|
||||
fun getArticle(position: Int): Flowable<FAQArticle>
|
||||
|
||||
val articles: Flowable<RealmResults<FAQArticle>>
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,9 +4,18 @@ import com.habitrpg.android.habitica.data.local.FAQLocalRepository
|
|||
import com.habitrpg.android.habitica.models.FAQArticle
|
||||
import io.reactivex.Flowable
|
||||
import io.realm.Realm
|
||||
import io.realm.RealmObject.asFlowable
|
||||
import io.realm.RealmResults
|
||||
|
||||
class RealmFAQLocalRepository(realm: Realm) : RealmContentLocalRepository(realm), FAQLocalRepository {
|
||||
override fun getArticle(position: Int): Flowable<FAQArticle> {
|
||||
return realm.where(FAQArticle::class.java)
|
||||
.equalTo("position", position)
|
||||
.findAll()
|
||||
.asFlowable()
|
||||
.filter{ it.isLoaded && it.count() > 0 }
|
||||
.map { it.first() }
|
||||
}
|
||||
|
||||
override val articles: Flowable<RealmResults<FAQArticle>>
|
||||
get() = realm.where(FAQArticle::class.java)
|
||||
|
|
|
|||
|
|
@ -1,7 +0,0 @@
|
|||
package com.habitrpg.android.habitica.events.commands;
|
||||
|
||||
/**
|
||||
* Created by Negue on 29.11.2015.
|
||||
*/
|
||||
public class OpenGemPurchaseFragmentCommand {
|
||||
}
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
package com.habitrpg.android.habitica.events.commands;
|
||||
|
||||
/**
|
||||
* Created by viirus on 15/01/16.
|
||||
*/
|
||||
public class OpenMenuItemCommand {
|
||||
public String identifier;
|
||||
|
||||
public OpenMenuItemCommand(String identifier) {
|
||||
this.identifier = identifier;
|
||||
}
|
||||
|
||||
public OpenMenuItemCommand() {
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
package com.habitrpg.android.habitica.helpers
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.navigation.NavController
|
||||
import androidx.navigation.NavDirections
|
||||
import androidx.navigation.NavOptions
|
||||
import com.habitrpg.android.habitica.ui.fragments.social.PublicGuildsFragmentDirections
|
||||
import java.lang.ref.WeakReference
|
||||
|
||||
object MainNavigationController {
|
||||
|
||||
var navController: WeakReference<NavController>? = null
|
||||
|
||||
fun setup(navController: NavController) {
|
||||
this.navController = WeakReference(navController)
|
||||
}
|
||||
|
||||
fun navigate(transactionId: Int, args: Bundle? = null) {
|
||||
navController?.get()?.navigate(transactionId, args)
|
||||
}
|
||||
|
||||
fun navigate(directions: NavDirections) {
|
||||
navController?.get()?.navigate(directions)
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,9 @@
|
|||
package com.habitrpg.android.habitica.helpers
|
||||
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import androidx.core.os.bundleOf
|
||||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.helpers.notifications.PushNotificationManager
|
||||
import com.habitrpg.android.habitica.models.user.User
|
||||
import com.habitrpg.android.habitica.ui.activities.MainActivity
|
||||
|
|
@ -16,59 +19,47 @@ class NotificationOpenHandler {
|
|||
|
||||
companion object {
|
||||
|
||||
fun handleOpenedByNotification(identifier: String, intent: Intent, activity: MainActivity, user: User?) {
|
||||
fun handleOpenedByNotification(identifier: String, intent: Intent, user: User?) {
|
||||
when (identifier) {
|
||||
PushNotificationManager.PARTY_INVITE_PUSH_NOTIFICATION_KEY -> openPartyScreen(activity)
|
||||
PushNotificationManager.QUEST_BEGUN_PUSH_NOTIFICATION_KEY -> openQuestDetailSCreen(activity,
|
||||
user?.party?.id,
|
||||
PushNotificationManager.PARTY_INVITE_PUSH_NOTIFICATION_KEY -> openPartyScreen()
|
||||
PushNotificationManager.QUEST_BEGUN_PUSH_NOTIFICATION_KEY -> openQuestDetailSCreen(user?.party?.id,
|
||||
user?.party?.quest?.key)
|
||||
PushNotificationManager.QUEST_INVITE_PUSH_NOTIFICATION_KEY -> openQuestDetailSCreen(activity,
|
||||
user?.party?.id,
|
||||
PushNotificationManager.QUEST_INVITE_PUSH_NOTIFICATION_KEY -> openQuestDetailSCreen(user?.party?.id,
|
||||
user?.party?.quest?.key)
|
||||
PushNotificationManager.GUILD_INVITE_PUSH_NOTIFICATION_KEY -> openGuildDetailScreen(activity,
|
||||
intent.getStringExtra("groupID"))
|
||||
PushNotificationManager.RECEIVED_PRIVATE_MESSAGE_PUSH_NOTIFICATION_KEY -> openPrivateMessageScreen(activity,
|
||||
intent.getStringExtra("replyTo"))
|
||||
PushNotificationManager.CHANGE_USERNAME_PUSH_NOTIFICATION_KEY -> openSettingsScreen(activity)
|
||||
PushNotificationManager.GUILD_INVITE_PUSH_NOTIFICATION_KEY -> openGuildDetailScreen(intent.getStringExtra("groupID"))
|
||||
PushNotificationManager.RECEIVED_PRIVATE_MESSAGE_PUSH_NOTIFICATION_KEY -> openPrivateMessageScreen(intent.getStringExtra("replyTo"))
|
||||
PushNotificationManager.CHANGE_USERNAME_PUSH_NOTIFICATION_KEY -> openSettingsScreen()
|
||||
}
|
||||
}
|
||||
|
||||
private fun openPrivateMessageScreen(activity: MainActivity, userID: String?) {
|
||||
private fun openPrivateMessageScreen(userID: String?) {
|
||||
if (userID?.isNotEmpty() == true) {
|
||||
return
|
||||
}
|
||||
val fragment = InboxFragment()
|
||||
fragment.userId = userID ?: ""
|
||||
activity.displayFragment(fragment)
|
||||
MainNavigationController.navigate(R.id.inboxFragment, bundleOf("userId" to userID))
|
||||
}
|
||||
|
||||
private fun openPartyScreen(activity: MainActivity) {
|
||||
activity.selectMenuItem(NavigationDrawerFragment.SIDEBAR_PARTY)
|
||||
private fun openPartyScreen() {
|
||||
MainNavigationController.navigate(R.id.partyFragment)
|
||||
}
|
||||
|
||||
private fun openQuestDetailSCreen(activity: MainActivity, partyId: String?, questKey: String?) {
|
||||
private fun openQuestDetailSCreen(partyId: String?, questKey: String?) {
|
||||
if (partyId?.isNotEmpty() == true || questKey?.isNotEmpty() == true) {
|
||||
return
|
||||
}
|
||||
val fragment = QuestDetailFragment()
|
||||
fragment.partyId = partyId
|
||||
fragment.questKey = questKey
|
||||
activity.displayFragment(fragment)
|
||||
MainNavigationController.navigate(R.id.inboxFragment, bundleOf("partyId" to partyId, "questKey" to questKey))
|
||||
}
|
||||
|
||||
private fun openGuildDetailScreen(activity: MainActivity, groupID: String) {
|
||||
private fun openGuildDetailScreen(groupID: String) {
|
||||
if (groupID.isEmpty()) {
|
||||
return
|
||||
}
|
||||
val fragment = GuildFragment()
|
||||
fragment.setGuildId(groupID)
|
||||
activity.displayFragment(fragment)
|
||||
MainNavigationController.navigate(R.id.guildFragment, bundleOf("groupId" to groupID))
|
||||
|
||||
}
|
||||
|
||||
private fun openSettingsScreen(activity: MainActivity) {
|
||||
val passUserId = Intent(activity, PrefsActivity::class.java)
|
||||
passUserId.putExtra("userId", activity.userID)
|
||||
activity.startActivity(passUserId)
|
||||
private fun openSettingsScreen() {
|
||||
MainNavigationController.navigate(R.id.prefsActivity)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -10,19 +10,16 @@ import android.widget.TextView
|
|||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.data.UserRepository
|
||||
import com.habitrpg.android.habitica.events.BoughtGemsEvent
|
||||
import com.habitrpg.android.habitica.events.commands.OpenGemPurchaseFragmentCommand
|
||||
import com.habitrpg.android.habitica.events.commands.OpenMenuItemCommand
|
||||
import com.habitrpg.android.habitica.helpers.HealthFormatter
|
||||
import com.habitrpg.android.habitica.helpers.MainNavigationController
|
||||
import com.habitrpg.android.habitica.models.Avatar
|
||||
import com.habitrpg.android.habitica.models.user.Stats
|
||||
import com.habitrpg.android.habitica.models.user.User
|
||||
import com.habitrpg.android.habitica.ui.fragments.NavigationDrawerFragment
|
||||
import com.habitrpg.android.habitica.ui.helpers.bindView
|
||||
import com.habitrpg.android.habitica.ui.views.CurrencyViews
|
||||
import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper
|
||||
import com.habitrpg.android.habitica.ui.views.ValueBar
|
||||
import io.reactivex.disposables.Disposable
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
import org.greenrobot.eventbus.Subscribe
|
||||
import java.util.*
|
||||
|
||||
|
|
@ -99,12 +96,10 @@ class AvatarWithBarsViewModel(private val context: Context, view: View, userRepo
|
|||
}
|
||||
|
||||
currencyView.setOnClickListener {
|
||||
EventBus.getDefault().post(OpenGemPurchaseFragmentCommand())
|
||||
MainNavigationController.navigate(R.id.gemPurchaseActivity)
|
||||
}
|
||||
avatarView.setOnClickListener {
|
||||
val event = OpenMenuItemCommand()
|
||||
event.identifier = NavigationDrawerFragment.SIDEBAR_AVATAR
|
||||
EventBus.getDefault().post(event)
|
||||
MainNavigationController.navigate(R.id.avatarOverviewFragment)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -30,6 +30,8 @@ import android.view.*
|
|||
import android.widget.FrameLayout
|
||||
import android.widget.TextView
|
||||
import androidx.core.content.edit
|
||||
import androidx.navigation.findNavController
|
||||
import androidx.navigation.fragment.NavHostFragment
|
||||
import com.facebook.drawee.view.SimpleDraweeView
|
||||
import com.habitrpg.android.habitica.HabiticaBaseApplication
|
||||
import com.habitrpg.android.habitica.R
|
||||
|
|
@ -221,7 +223,6 @@ open class MainActivity : BaseActivity(), TutorialView.OnTutorialReaction {
|
|||
drawerFragment = supportFragmentManager.findFragmentById(R.id.navigation_drawer) as? NavigationDrawerFragment
|
||||
|
||||
drawerFragment?.setUp(R.id.navigation_drawer, drawerLayout)
|
||||
selectMenuItem(NavigationDrawerFragment.SIDEBAR_TASKS)
|
||||
|
||||
drawerToggle = object : ActionBarDrawerToggle(
|
||||
this, /* host Activity */
|
||||
|
|
@ -240,6 +241,17 @@ open class MainActivity : BaseActivity(), TutorialView.OnTutorialReaction {
|
|||
|
||||
keyboardUtil = KeyboardUtil(this, this.findViewById(android.R.id.content))
|
||||
this.keyboardUtil?.enable()
|
||||
|
||||
val navigationController = findNavController(R.id.nav_host_fragment)
|
||||
navigationController.addOnNavigatedListener { _, destination ->
|
||||
if (destination.label.isNullOrEmpty()) {
|
||||
toolbarTitleTextView.text = user?.profile?.name
|
||||
} else if (user?.profile != null) {
|
||||
toolbarTitleTextView.text = destination.label
|
||||
}
|
||||
drawerFragment?.setSelection(destination.id, false)
|
||||
}
|
||||
MainNavigationController.setup(navigationController)
|
||||
}
|
||||
|
||||
override fun onPostCreate(savedInstanceState: Bundle?) {
|
||||
|
|
@ -313,7 +325,7 @@ open class MainActivity : BaseActivity(), TutorialView.OnTutorialReaction {
|
|||
val additionalData = HashMap<String, Any>()
|
||||
additionalData["identifier"] = identifier
|
||||
AmplitudeManager.sendEvent("open notification", AmplitudeManager.EVENT_CATEGORY_BEHAVIOUR, AmplitudeManager.EVENT_HITTYPE_EVENT, additionalData)
|
||||
NotificationOpenHandler.handleOpenedByNotification(identifier, intent, this, user)
|
||||
NotificationOpenHandler.handleOpenedByNotification(identifier, intent, user)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -352,6 +364,21 @@ open class MainActivity : BaseActivity(), TutorialView.OnTutorialReaction {
|
|||
sendBroadcast(intent)
|
||||
}
|
||||
|
||||
public fun makeActiveFragment(fragment: BaseMainFragment) {
|
||||
this.activeFragment = WeakReference(fragment)
|
||||
fragment.user = user
|
||||
fragment.activity = this
|
||||
fragment.tabLayout = detailTabs
|
||||
fragment.toolbarAccessoryContainer = toolbarAccessoryContainer
|
||||
fragment.collapsingToolbar = collapsingToolbar
|
||||
fragment.bottomNavigation = bottomNavigation
|
||||
fragment.floatingMenuWrapper = floatingMenuWrapper
|
||||
}
|
||||
|
||||
fun navigate(transitionId: Int) {
|
||||
findNavController(R.id.nav_host_fragment).navigate(transitionId)
|
||||
}
|
||||
|
||||
@SuppressLint("ObsoleteSdkInt")
|
||||
fun displayFragment(fragment: BaseMainFragment) {
|
||||
if (fragment.javaClass == this.activeFragment?.get()?.javaClass) {
|
||||
|
|
@ -360,18 +387,10 @@ open class MainActivity : BaseActivity(), TutorialView.OnTutorialReaction {
|
|||
if (SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1 && this.isDestroyed) {
|
||||
return
|
||||
}
|
||||
this.activeFragment = WeakReference(fragment)
|
||||
fragment.arguments = intent.extras
|
||||
fragment.user = user
|
||||
fragment.activity = this
|
||||
fragment.tabLayout = detailTabs
|
||||
fragment.toolbarAccessoryContainer = toolbarAccessoryContainer
|
||||
fragment.collapsingToolbar = collapsingToolbar
|
||||
fragment.bottomNavigation = bottomNavigation
|
||||
fragment.floatingMenuWrapper = floatingMenuWrapper
|
||||
makeActiveFragment(fragment)
|
||||
|
||||
|
||||
if (supportFragmentManager.fragments == null) {
|
||||
/*if (supportFragmentManager.fragments == null) {
|
||||
supportFragmentManager.beginTransaction().add(R.id.fragment_container, fragment).commitAllowingStateLoss()
|
||||
} else {
|
||||
val transaction = supportFragmentManager.beginTransaction()
|
||||
|
|
@ -381,7 +400,7 @@ open class MainActivity : BaseActivity(), TutorialView.OnTutorialReaction {
|
|||
transaction.addToBackStack(null)
|
||||
}
|
||||
transaction.commitAllowingStateLoss()
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
private fun setUserData() {
|
||||
|
|
@ -392,11 +411,7 @@ open class MainActivity : BaseActivity(), TutorialView.OnTutorialReaction {
|
|||
preferences?.sound.notNull { soundManager.soundTheme = it }
|
||||
runOnUiThread {
|
||||
updateSidebar()
|
||||
if (activeFragment != null && activeFragment?.get() != null) {
|
||||
activeFragment?.get()?.updateUserData(user)
|
||||
} else {
|
||||
selectMenuItem(NavigationDrawerFragment.SIDEBAR_TASKS)
|
||||
}
|
||||
activeFragment?.get()?.updateUserData(user)
|
||||
}
|
||||
|
||||
displayDeathDialogIfNeeded()
|
||||
|
|
@ -455,26 +470,6 @@ open class MainActivity : BaseActivity(), TutorialView.OnTutorialReaction {
|
|||
}
|
||||
}
|
||||
|
||||
fun setActiveFragment(fragment: BaseMainFragment?) {
|
||||
this.activeFragment = WeakReference<BaseMainFragment>(fragment)
|
||||
setTranslatedFragmentTitle(fragment)
|
||||
val identifier = activeFragment?.get()?.fragmentSidebarIdentifier
|
||||
if (identifier != null) {
|
||||
selectMenuItem(identifier, false)
|
||||
}
|
||||
}
|
||||
|
||||
private fun setTranslatedFragmentTitle(fragment: BaseMainFragment?) {
|
||||
if (supportActionBar == null) {
|
||||
return
|
||||
}
|
||||
if (fragment?.customTitle()?.isNotEmpty() != true) {
|
||||
toolbarTitleTextView.text = user?.profile?.name
|
||||
} else if (user?.profile != null) {
|
||||
toolbarTitleTextView.text = fragment.customTitle()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onBackPressed() {
|
||||
if (this.activeTutorialView != null) {
|
||||
this.removeActiveTutorialView()
|
||||
|
|
@ -509,11 +504,6 @@ open class MainActivity : BaseActivity(), TutorialView.OnTutorialReaction {
|
|||
super.onDestroy()
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
fun onEvent(event: OpenMenuItemCommand) {
|
||||
drawerFragment?.setSelection(event.identifier, true)
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
@Suppress("ReturnCount")
|
||||
fun onEvent(event: BuyRewardCommand) {
|
||||
|
|
@ -572,11 +562,6 @@ open class MainActivity : BaseActivity(), TutorialView.OnTutorialReaction {
|
|||
.subscribe(Consumer { }, RxErrorHandler.handleEmptyError())
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
fun openGemPurchaseFragment(event: OpenGemPurchaseFragmentCommand?) {
|
||||
drawerFragment?.setSelection(NavigationDrawerFragment.SIDEBAR_PURCHASE, true)
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
fun onEvent(tutorialEvent: DisplayTutorialEvent) {
|
||||
if (tutorialEvent.tutorialText != null) {
|
||||
|
|
@ -586,11 +571,6 @@ open class MainActivity : BaseActivity(), TutorialView.OnTutorialReaction {
|
|||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
fun onEvent(event: DisplayFragmentEvent) {
|
||||
this.displayFragment(event.fragment)
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
fun onEvent(event: HatchingCommand) {
|
||||
if (event.usingEgg == null || event.usingHatchingPotion == null) {
|
||||
|
|
@ -936,7 +916,7 @@ open class MainActivity : BaseActivity(), TutorialView.OnTutorialReaction {
|
|||
}
|
||||
|
||||
public fun selectMenuItem(identifier: String, openSelection: Boolean = true) {
|
||||
drawerFragment?.setSelection(identifier, openSelection)
|
||||
//drawerFragment?.setSelection(identifier, openSelection)
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
|
|
|||
|
|
@ -3,26 +3,22 @@ package com.habitrpg.android.habitica.ui.adapter
|
|||
import android.content.Context
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import androidx.cardview.widget.CardView
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.*
|
||||
import com.facebook.drawee.view.SimpleDraweeView
|
||||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.events.commands.OpenMenuItemCommand
|
||||
import com.habitrpg.android.habitica.ui.helpers.bindView
|
||||
import com.habitrpg.android.habitica.extensions.notNull
|
||||
import com.habitrpg.android.habitica.helpers.MainNavigationController
|
||||
import com.habitrpg.android.habitica.models.inventory.Customization
|
||||
import com.habitrpg.android.habitica.models.inventory.CustomizationSet
|
||||
import com.habitrpg.android.habitica.ui.fragments.NavigationDrawerFragment
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
|
||||
import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper
|
||||
import io.reactivex.BackpressureStrategy
|
||||
import io.reactivex.Flowable
|
||||
import io.reactivex.subjects.PublishSubject
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
import java.util.*
|
||||
|
||||
class CustomizationRecyclerViewAdapter : androidx.recyclerview.widget.RecyclerView.Adapter<androidx.recyclerview.widget.RecyclerView.ViewHolder>() {
|
||||
|
|
@ -181,9 +177,7 @@ class CustomizationRecyclerViewAdapter : androidx.recyclerview.widget.RecyclerVi
|
|||
val dialog = AlertDialog.Builder(itemView.context)
|
||||
.setPositiveButton(R.string.purchase_button) { _, _ ->
|
||||
if (customization?.price ?: 0 > gemBalance) {
|
||||
val event = OpenMenuItemCommand()
|
||||
event.identifier = NavigationDrawerFragment.SIDEBAR_PURCHASE
|
||||
EventBus.getDefault().post(event)
|
||||
MainNavigationController.navigate(R.id.gemPurchaseActivity)
|
||||
return@setPositiveButton
|
||||
}
|
||||
|
||||
|
|
@ -239,9 +233,7 @@ class CustomizationRecyclerViewAdapter : androidx.recyclerview.widget.RecyclerVi
|
|||
val dialog = AlertDialog.Builder(context)
|
||||
.setPositiveButton(R.string.purchase_button) { _, _ ->
|
||||
if (set?.price ?: 0 > gemBalance) {
|
||||
val event = OpenMenuItemCommand()
|
||||
event.identifier = NavigationDrawerFragment.SIDEBAR_PURCHASE
|
||||
EventBus.getDefault().post(event)
|
||||
MainNavigationController.navigate(R.id.gemPurchaseActivity)
|
||||
return@setPositiveButton
|
||||
}
|
||||
set?.customizations = ArrayList()
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
package com.habitrpg.android.habitica.ui.adapter
|
||||
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
|
|
@ -8,9 +7,10 @@ import android.widget.Button
|
|||
import android.widget.TextView
|
||||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.extensions.notNull
|
||||
import com.habitrpg.android.habitica.helpers.MainNavigationController
|
||||
import com.habitrpg.android.habitica.models.FAQArticle
|
||||
import com.habitrpg.android.habitica.ui.activities.MainActivity
|
||||
import com.habitrpg.android.habitica.ui.fragments.faq.FAQDetailFragment
|
||||
import com.habitrpg.android.habitica.ui.fragments.faq.FAQOverviewFragmentDirections
|
||||
import com.habitrpg.android.habitica.ui.helpers.bindView
|
||||
import io.reactivex.BackpressureStrategy
|
||||
import io.reactivex.Flowable
|
||||
|
|
@ -77,11 +77,9 @@ class FAQOverviewRecyclerAdapter : androidx.recyclerview.widget.RecyclerView.Ada
|
|||
}
|
||||
|
||||
override fun onClick(v: View) {
|
||||
val fragment = FAQDetailFragment()
|
||||
article.notNull {
|
||||
fragment.setArticle(it)
|
||||
MainNavigationController.navigate(FAQOverviewFragmentDirections.openFAQDetail(it.position))
|
||||
}
|
||||
activity?.displayFragment(fragment)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -32,25 +32,29 @@ class NavigationDrawerAdapter(tintColor: Int, backgroundTintColor: Int): android
|
|||
|
||||
|
||||
internal val items: MutableList<HabiticaDrawerItem> = ArrayList()
|
||||
var selectedItem: String? = null
|
||||
var selectedItem: Int? = null
|
||||
set(value) {
|
||||
field = value
|
||||
notifyDataSetChanged()
|
||||
}
|
||||
|
||||
private val itemSelectedEvents = PublishSubject.create<String>()
|
||||
private val itemSelectedEvents = PublishSubject.create<Int>()
|
||||
|
||||
|
||||
fun getItemSelectionEvents(): Flowable<String> = itemSelectedEvents.toFlowable(BackpressureStrategy.DROP)
|
||||
fun getItemSelectionEvents(): Flowable<Int> = itemSelectedEvents.toFlowable(BackpressureStrategy.DROP)
|
||||
|
||||
fun getItemWithTransitionId(transitionId: Int): HabiticaDrawerItem? =
|
||||
items.find { it.transitionId == transitionId }
|
||||
fun getItemWithIdentifier(identifier: String): HabiticaDrawerItem? =
|
||||
items.find { it.identifier == identifier }
|
||||
|
||||
private fun getItemPosition(transitionId: Int): Int =
|
||||
items.indexOfFirst { it.transitionId == transitionId }
|
||||
private fun getItemPosition(identifier: String): Int =
|
||||
items.indexOfFirst { it.identifier == identifier }
|
||||
|
||||
fun updateItem(item: HabiticaDrawerItem) {
|
||||
val position = getItemPosition(item.identifier)
|
||||
val position = getItemPosition(item.transitionId)
|
||||
items[position] = item
|
||||
notifyDataSetChanged()
|
||||
}
|
||||
|
|
@ -64,13 +68,14 @@ class NavigationDrawerAdapter(tintColor: Int, backgroundTintColor: Int): android
|
|||
override fun onBindViewHolder(holder: androidx.recyclerview.widget.RecyclerView.ViewHolder, position: Int) {
|
||||
val drawerItem = getItem(position)
|
||||
if (getItemViewType(position) == 0) {
|
||||
(holder as DrawerItemViewHolder?)?.tintColor = tintColor
|
||||
holder.backgroundTintColor = backgroundTintColor
|
||||
holder.bind(drawerItem, drawerItem.identifier == selectedItem)
|
||||
holder.itemView.setOnClickListener { itemSelectedEvents.onNext(drawerItem.identifier) }
|
||||
val itemHolder = holder as? DrawerItemViewHolder
|
||||
itemHolder?.tintColor = tintColor
|
||||
itemHolder?.backgroundTintColor = backgroundTintColor
|
||||
itemHolder?.bind(drawerItem, drawerItem.transitionId == selectedItem)
|
||||
itemHolder?.itemView?.setOnClickListener { itemSelectedEvents.onNext(drawerItem.transitionId) }
|
||||
} else {
|
||||
(holder as SectionHeaderViewHolder?)?.backgroundTintColor = backgroundTintColor
|
||||
holder.bind(drawerItem)
|
||||
(holder as? SectionHeaderViewHolder)?.backgroundTintColor = backgroundTintColor
|
||||
(holder as? SectionHeaderViewHolder)?.bind(drawerItem)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package com.habitrpg.android.habitica.ui.adapter.inventory
|
||||
|
||||
import android.content.Context
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import android.text.Html
|
||||
import android.text.method.LinkMovementMethod
|
||||
import android.view.View
|
||||
|
|
@ -9,10 +8,10 @@ import android.view.ViewGroup
|
|||
import android.widget.Button
|
||||
import android.widget.TextView
|
||||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.events.commands.OpenGemPurchaseFragmentCommand
|
||||
import com.habitrpg.android.habitica.ui.helpers.bindView
|
||||
import com.habitrpg.android.habitica.extensions.inflate
|
||||
import com.habitrpg.android.habitica.extensions.notNull
|
||||
import com.habitrpg.android.habitica.helpers.MainNavigationController
|
||||
import com.habitrpg.android.habitica.models.inventory.Item
|
||||
import com.habitrpg.android.habitica.models.shops.Shop
|
||||
import com.habitrpg.android.habitica.models.shops.ShopCategory
|
||||
|
|
@ -21,7 +20,6 @@ import com.habitrpg.android.habitica.models.user.User
|
|||
import com.habitrpg.android.habitica.ui.viewHolders.SectionViewHolder
|
||||
import com.habitrpg.android.habitica.ui.viewHolders.ShopItemViewHolder
|
||||
import com.habitrpg.android.habitica.ui.views.NPCBannerView
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
|
||||
|
||||
class ShopRecyclerAdapter : androidx.recyclerview.widget.RecyclerView.Adapter<androidx.recyclerview.widget.RecyclerView.ViewHolder>() {
|
||||
|
|
@ -247,7 +245,7 @@ class ShopRecyclerAdapter : androidx.recyclerview.widget.RecyclerView.Adapter<an
|
|||
private val subscribeButton: Button? by bindView(itemView, R.id.subscribeButton)
|
||||
private val textView: TextView? by bindView(itemView, R.id.textView)
|
||||
init {
|
||||
subscribeButton?.setOnClickListener { EventBus.getDefault().post(OpenGemPurchaseFragmentCommand()) }
|
||||
subscribeButton?.setOnClickListener { MainNavigationController.navigate(R.id.gemPurchaseActivity) }
|
||||
}
|
||||
|
||||
var text: String? = null
|
||||
|
|
|
|||
|
|
@ -8,11 +8,13 @@ import android.widget.TextView
|
|||
import com.facebook.drawee.view.SimpleDraweeView
|
||||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.extensions.notNull
|
||||
import com.habitrpg.android.habitica.helpers.MainNavigationController
|
||||
import com.habitrpg.android.habitica.ui.helpers.bindView
|
||||
import com.habitrpg.android.habitica.models.inventory.Animal
|
||||
import com.habitrpg.android.habitica.ui.activities.MainActivity
|
||||
import com.habitrpg.android.habitica.ui.fragments.inventory.stable.MountDetailRecyclerFragment
|
||||
import com.habitrpg.android.habitica.ui.fragments.inventory.stable.PetDetailRecyclerFragment
|
||||
import com.habitrpg.android.habitica.ui.fragments.inventory.stable.StableFragmentDirections
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
|
||||
import com.habitrpg.android.habitica.ui.viewHolders.SectionViewHolder
|
||||
|
||||
|
|
@ -94,15 +96,13 @@ class StableRecyclerAdapter : androidx.recyclerview.widget.RecyclerView.Adapter<
|
|||
if (animal != null) {
|
||||
if (animal.numberOwned > 0) {
|
||||
if (itemType == "pets") {
|
||||
MainNavigationController.navigate(StableFragmentDirections.openPetDetail(animal.animal, animal.animalGroup))
|
||||
val fragment = PetDetailRecyclerFragment()
|
||||
fragment.animalType = animal.animal
|
||||
fragment.animalGroup = animal.animalGroup
|
||||
activity?.displayFragment(fragment)
|
||||
} else {
|
||||
val fragment = MountDetailRecyclerFragment()
|
||||
fragment.animalType = animal.animal
|
||||
fragment.animalGroup = animal.animalGroup
|
||||
activity?.displayFragment(fragment)
|
||||
MainNavigationController.navigate(StableFragmentDirections.openMountDetail(animal.animal, animal.animalGroup))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -135,6 +135,7 @@ class ChatRecyclerViewAdapter(data: OrderedRealmCollection<ChatMessage>?, autoUp
|
|||
messageText.setOnClickListener { _ -> expandMessage() }
|
||||
messageText.movementMethod = LinkMovementMethod.getInstance()
|
||||
userLabel.setOnClickListener { _ -> chatMessage?.uuid.notNull {userLabelClickEvents.onNext(it) } }
|
||||
avatarView.setOnClickListener { _ -> chatMessage?.uuid.notNull {userLabelClickEvents.onNext(it) } }
|
||||
replyButton.setOnClickListener { _ ->
|
||||
if (releasedUsernames && chatMessage?.username != null) {
|
||||
chatMessage?.username.notNull { replyMessageEvents.onNext(it) }
|
||||
|
|
|
|||
|
|
@ -12,9 +12,12 @@ import com.habitrpg.android.habitica.data.ApiClient
|
|||
import com.habitrpg.android.habitica.events.DisplayFragmentEvent
|
||||
import com.habitrpg.android.habitica.extensions.inflate
|
||||
import com.habitrpg.android.habitica.extensions.notNull
|
||||
import com.habitrpg.android.habitica.helpers.MainNavigationController
|
||||
import com.habitrpg.android.habitica.helpers.RxErrorHandler
|
||||
import com.habitrpg.android.habitica.models.social.Group
|
||||
import com.habitrpg.android.habitica.ui.fragments.social.GuildFragment
|
||||
import com.habitrpg.android.habitica.ui.fragments.social.GuildsOverviewFragmentDirections
|
||||
import com.habitrpg.android.habitica.ui.fragments.social.PublicGuildsFragmentDirections
|
||||
import com.habitrpg.android.habitica.ui.helpers.MarkdownParser
|
||||
import com.habitrpg.android.habitica.ui.helpers.bindView
|
||||
import io.reactivex.functions.Consumer
|
||||
|
|
@ -36,12 +39,7 @@ class PublicGuildsRecyclerViewAdapter(data: OrderedRealmCollection<Group>?, auto
|
|||
val guildViewHolder = GuildViewHolder(parent.inflate(R.layout.item_public_guild))
|
||||
guildViewHolder.itemView.setOnClickListener { v ->
|
||||
val guild = v.tag as? Group ?: return@setOnClickListener
|
||||
val guildFragment = GuildFragment()
|
||||
guildFragment.setGuildId(guild.id)
|
||||
guildFragment.isMember = isInGroup(guild)
|
||||
val event = DisplayFragmentEvent()
|
||||
event.fragment = guildFragment
|
||||
EventBus.getDefault().post(event)
|
||||
MainNavigationController.navigate(PublicGuildsFragmentDirections.openGuildDetail(guild.id, isInGroup(guild)))
|
||||
}
|
||||
guildViewHolder.joinLeaveButton.setOnClickListener { v ->
|
||||
val guild = v.tag as? Group ?: return@setOnClickListener
|
||||
|
|
|
|||
|
|
@ -50,6 +50,7 @@ abstract class BaseMainFragment : BaseFragment() {
|
|||
|
||||
if (getActivity()?.javaClass == MainActivity::class.java) {
|
||||
this.activity = getActivity() as? MainActivity
|
||||
activity?.makeActiveFragment(this)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -76,8 +77,6 @@ abstract class BaseMainFragment : BaseFragment() {
|
|||
|
||||
setHasOptionsMenu(true)
|
||||
|
||||
activity?.setActiveFragment(this)
|
||||
|
||||
updateTabLayoutVisibility()
|
||||
|
||||
return null
|
||||
|
|
|
|||
|
|
@ -3,18 +3,14 @@ package com.habitrpg.android.habitica.ui.fragments
|
|||
|
||||
import android.app.ActionBar
|
||||
import android.content.Intent
|
||||
import android.graphics.Rect
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.view.GravityCompat
|
||||
import androidx.drawerlayout.widget.DrawerLayout
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import android.view.Gravity
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.view.Window
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.view.GravityCompat
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import com.habitrpg.android.habitica.HabiticaBaseApplication
|
||||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.data.InventoryRepository
|
||||
|
|
@ -50,8 +46,6 @@ import io.reactivex.disposables.CompositeDisposable
|
|||
import io.reactivex.functions.Consumer
|
||||
import kotlinx.android.synthetic.main.drawer_main.*
|
||||
import javax.inject.Inject
|
||||
import android.view.Window.ID_ANDROID_CONTENT
|
||||
import androidx.core.view.ViewCompat
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -79,7 +73,7 @@ class NavigationDrawerFragment : DialogFragment() {
|
|||
private var subscriptions: CompositeDisposable? = null
|
||||
|
||||
val isDrawerOpen: Boolean
|
||||
get() = drawerLayout?.isDrawerOpen(fragmentContainerView!!) ?: false
|
||||
get() = drawerLayout?.isDrawerOpen(Gravity.LEFT) ?: false
|
||||
|
||||
private val actionBar: ActionBar?
|
||||
get() = activity?.actionBar
|
||||
|
|
@ -194,7 +188,7 @@ class NavigationDrawerFragment : DialogFragment() {
|
|||
}, RxErrorHandler.handleEmptyError()))
|
||||
|
||||
subscriptions?.add(socialRepository.getGroup(Group.TAVERN_ID)
|
||||
.doOnNext({ quest = it.quest })
|
||||
.doOnNext { quest = it.quest }
|
||||
.filter { it.hasActiveQuest }
|
||||
.flatMapMaybe { inventoryRepository.getQuestContent(it.quest?.key ?: "").firstElement() }
|
||||
.subscribe(Consumer {
|
||||
|
|
@ -207,8 +201,8 @@ class NavigationDrawerFragment : DialogFragment() {
|
|||
questMenuView.configure(it)
|
||||
}, RxErrorHandler.handleEmptyError()))
|
||||
|
||||
messagesButton.setOnClickListener { setSelection(SIDEBAR_INBOX) }
|
||||
settingsButton.setOnClickListener { setSelection(SIDEBAR_SETTINGS) }
|
||||
messagesButton.setOnClickListener { setSelection(R.id.inboxFragment) }
|
||||
settingsButton.setOnClickListener { setSelection(R.id.prefsActivity) }
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
|
|
@ -222,111 +216,41 @@ class NavigationDrawerFragment : DialogFragment() {
|
|||
private fun initializeMenuItems() {
|
||||
val items = ArrayList<HabiticaDrawerItem>()
|
||||
context.notNull {context ->
|
||||
items.add(HabiticaDrawerItem(SIDEBAR_TASKS, context.getString(R.string.sidebar_tasks)))
|
||||
items.add(HabiticaDrawerItem(SIDEBAR_SKILLS, context.getString(R.string.sidebar_skills)))
|
||||
items.add(HabiticaDrawerItem(SIDEBAR_STATS, context.getString(R.string.sidebar_stats)))
|
||||
items.add(HabiticaDrawerItem(SIDEBAR_SOCIAL, context.getString(R.string.sidebar_section_social), true))
|
||||
items.add(HabiticaDrawerItem(SIDEBAR_TAVERN, context.getString(R.string.sidebar_tavern)))
|
||||
items.add(HabiticaDrawerItem(SIDEBAR_PARTY, context.getString(R.string.sidebar_party)))
|
||||
items.add(HabiticaDrawerItem(SIDEBAR_GUILDS, context.getString(R.string.sidebar_guilds)))
|
||||
items.add(HabiticaDrawerItem(SIDEBAR_CHALLENGES, context.getString(R.string.sidebar_challenges)))
|
||||
items.add(HabiticaDrawerItem(SIDEBAR_INVENTORY, context.getString(R.string.sidebar_section_inventory), true))
|
||||
items.add(HabiticaDrawerItem(SIDEBAR_SHOPS, context.getString(R.string.sidebar_shops)))
|
||||
items.add(HabiticaDrawerItem(SIDEBAR_AVATAR, context.getString(R.string.sidebar_avatar)))
|
||||
items.add(HabiticaDrawerItem(SIDEBAR_EQUIPMENT, context.getString(R.string.sidebar_equipment)))
|
||||
items.add(HabiticaDrawerItem(SIDEBAR_ITEMS, context.getString(R.string.sidebar_items)))
|
||||
items.add(HabiticaDrawerItem(SIDEBAR_STABLE, context.getString(R.string.sidebar_stable)))
|
||||
items.add(HabiticaDrawerItem(SIDEBAR_PURCHASE, context.getString(R.string.sidebar_purchaseGems)))
|
||||
items.add(HabiticaDrawerItem(SIDEBAR_ABOUT_HEADER, context.getString(R.string.sidebar_about), true))
|
||||
items.add(HabiticaDrawerItem(SIDEBAR_NEWS, context.getString(R.string.sidebar_news)))
|
||||
items.add(HabiticaDrawerItem(SIDEBAR_HELP, context.getString(R.string.sidebar_help)))
|
||||
items.add(HabiticaDrawerItem(SIDEBAR_ABOUT, context.getString(R.string.sidebar_about)))
|
||||
items.add(HabiticaDrawerItem(R.id.tasksFragment, SIDEBAR_TASKS, context.getString(R.string.sidebar_tasks)))
|
||||
items.add(HabiticaDrawerItem(R.id.skillsFragment, SIDEBAR_SKILLS, context.getString(R.string.sidebar_skills)))
|
||||
items.add(HabiticaDrawerItem(R.id.statsFragment, SIDEBAR_STATS, context.getString(R.string.sidebar_stats)))
|
||||
items.add(HabiticaDrawerItem(0, SIDEBAR_SOCIAL, context.getString(R.string.sidebar_section_social), true))
|
||||
items.add(HabiticaDrawerItem(R.id.tavernFragment, SIDEBAR_TAVERN, context.getString(R.string.sidebar_tavern)))
|
||||
items.add(HabiticaDrawerItem(R.id.partyFragment, SIDEBAR_PARTY, context.getString(R.string.sidebar_party)))
|
||||
items.add(HabiticaDrawerItem(R.id.guildsOverviewFragment, SIDEBAR_GUILDS, context.getString(R.string.sidebar_guilds)))
|
||||
items.add(HabiticaDrawerItem(R.id.challengesOverviewFragment, SIDEBAR_CHALLENGES, context.getString(R.string.sidebar_challenges)))
|
||||
items.add(HabiticaDrawerItem(0, SIDEBAR_INVENTORY, context.getString(R.string.sidebar_section_inventory), true))
|
||||
items.add(HabiticaDrawerItem(R.id.shopsFragment, SIDEBAR_SHOPS, context.getString(R.string.sidebar_shops)))
|
||||
items.add(HabiticaDrawerItem(R.id.avatarOverviewFragment, SIDEBAR_AVATAR, context.getString(R.string.sidebar_avatar)))
|
||||
items.add(HabiticaDrawerItem(R.id.equipmentOverviewFragment, SIDEBAR_EQUIPMENT, context.getString(R.string.sidebar_equipment)))
|
||||
items.add(HabiticaDrawerItem(R.id.itemsFragment, SIDEBAR_ITEMS, context.getString(R.string.sidebar_items)))
|
||||
items.add(HabiticaDrawerItem(R.id.stableFragment, SIDEBAR_STABLE, context.getString(R.string.sidebar_stable)))
|
||||
items.add(HabiticaDrawerItem(R.id.gemPurchaseActivity, SIDEBAR_PURCHASE, context.getString(R.string.sidebar_purchaseGems)))
|
||||
items.add(HabiticaDrawerItem(0, SIDEBAR_ABOUT_HEADER, context.getString(R.string.sidebar_about), true))
|
||||
items.add(HabiticaDrawerItem(R.id.newsFragment, SIDEBAR_NEWS, context.getString(R.string.sidebar_news)))
|
||||
items.add(HabiticaDrawerItem(R.id.FAQOverviewFragment, SIDEBAR_HELP, context.getString(R.string.sidebar_help)))
|
||||
items.add(HabiticaDrawerItem(R.id.aboutFragment, SIDEBAR_ABOUT, context.getString(R.string.sidebar_about)))
|
||||
}
|
||||
adapter.updateItems(items)
|
||||
}
|
||||
|
||||
fun setSelection(identifier: String?, openSelection: Boolean = true) {
|
||||
adapter.selectedItem = identifier
|
||||
fun setSelection(transitionId: Int?, openSelection: Boolean = true) {
|
||||
adapter.selectedItem = transitionId
|
||||
closeDrawer()
|
||||
|
||||
if (!openSelection) {
|
||||
return
|
||||
}
|
||||
|
||||
var fragment: BaseMainFragment? = null
|
||||
var newActivityClass: Class<*>? = null
|
||||
|
||||
when (identifier) {
|
||||
SIDEBAR_TASKS -> {
|
||||
fragment = TasksFragment()
|
||||
}
|
||||
SIDEBAR_SKILLS -> {
|
||||
fragment = SkillsFragment()
|
||||
}
|
||||
SIDEBAR_STATS -> {
|
||||
fragment = StatsFragment()
|
||||
}
|
||||
SIDEBAR_INBOX -> {
|
||||
fragment = InboxFragment()
|
||||
}
|
||||
SIDEBAR_PARTY -> {
|
||||
fragment = PartyFragment()
|
||||
}
|
||||
SIDEBAR_GUILDS -> {
|
||||
fragment = GuildsOverviewFragment()
|
||||
}
|
||||
SIDEBAR_TAVERN -> {
|
||||
fragment = TavernFragment()
|
||||
}
|
||||
SIDEBAR_CHALLENGES -> {
|
||||
fragment = ChallengesOverviewFragment()
|
||||
}
|
||||
SIDEBAR_SHOPS -> {
|
||||
fragment = ShopsFragment()
|
||||
}
|
||||
SIDEBAR_AVATAR -> {
|
||||
fragment = AvatarOverviewFragment()
|
||||
}
|
||||
SIDEBAR_EQUIPMENT -> {
|
||||
fragment = EquipmentOverviewFragment()
|
||||
}
|
||||
SIDEBAR_ITEMS -> {
|
||||
fragment = ItemsFragment()
|
||||
}
|
||||
SIDEBAR_STABLE -> {
|
||||
fragment = StableFragment()
|
||||
}
|
||||
SIDEBAR_PURCHASE -> {
|
||||
newActivityClass = GemPurchaseActivity::class.java
|
||||
}
|
||||
SIDEBAR_NEWS -> {
|
||||
fragment = NewsFragment()
|
||||
}
|
||||
SIDEBAR_SETTINGS -> {
|
||||
newActivityClass = PrefsActivity::class.java
|
||||
}
|
||||
SIDEBAR_HELP -> {
|
||||
fragment = FAQOverviewFragment()
|
||||
}
|
||||
SIDEBAR_ABOUT -> {
|
||||
newActivityClass = AboutActivity::class.java
|
||||
}
|
||||
}
|
||||
|
||||
val activity = activity as? MainActivity
|
||||
if (activity != null) {
|
||||
if (fragment != null) {
|
||||
fragment.fragmentSidebarIdentifier = identifier
|
||||
activity.displayFragment(fragment)
|
||||
}
|
||||
if (newActivityClass != null) {
|
||||
val passUserId = Intent(activity, newActivityClass)
|
||||
passUserId.putExtra("userId", activity.userID)
|
||||
if (identifier == SIDEBAR_PURCHASE) {
|
||||
activity.startActivityForResult(passUserId, MainActivity.GEM_PURCHASE_REQUEST)
|
||||
} else {
|
||||
activity.startActivity(passUserId)
|
||||
}
|
||||
if (transitionId != null) {
|
||||
activity.navigate(transitionId)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,19 +8,24 @@ import android.view.ViewGroup
|
|||
import android.widget.TextView
|
||||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.components.AppComponent
|
||||
import com.habitrpg.android.habitica.data.FAQRepository
|
||||
import com.habitrpg.android.habitica.extensions.inflate
|
||||
import com.habitrpg.android.habitica.models.FAQArticle
|
||||
import com.habitrpg.android.habitica.extensions.notNull
|
||||
import com.habitrpg.android.habitica.helpers.RxErrorHandler
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment
|
||||
import com.habitrpg.android.habitica.ui.helpers.MarkdownParser
|
||||
import com.habitrpg.android.habitica.ui.helpers.bindOptionalView
|
||||
import com.habitrpg.android.habitica.ui.helpers.resetViews
|
||||
import io.reactivex.functions.Consumer
|
||||
import javax.inject.Inject
|
||||
|
||||
class FAQDetailFragment : BaseMainFragment() {
|
||||
@Inject
|
||||
lateinit var faqRepository: FAQRepository
|
||||
|
||||
private val questionTextView: TextView? by bindOptionalView(R.id.questionTextView)
|
||||
private val answerTextView: TextView? by bindOptionalView(R.id.answerTextView)
|
||||
|
||||
private var article: FAQArticle? = null
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
||||
super.onCreateView(inflater, container, savedInstanceState)
|
||||
return container?.inflate(R.layout.fragment_faq_detail)
|
||||
|
|
@ -31,24 +36,18 @@ class FAQDetailFragment : BaseMainFragment() {
|
|||
|
||||
resetViews()
|
||||
|
||||
if (this.article != null) {
|
||||
this.questionTextView?.text = this.article?.question
|
||||
this.answerTextView?.text = MarkdownParser.parseMarkdown(article?.answer)
|
||||
arguments.notNull {
|
||||
val args = FAQDetailFragmentArgs.fromBundle(it)
|
||||
compositeSubscription.add(faqRepository.getArticle(args.position).subscribe(Consumer { faq ->
|
||||
this.questionTextView?.text = faq.question
|
||||
this.answerTextView?.text = MarkdownParser.parseMarkdown(faq.answer)
|
||||
}, RxErrorHandler.handleEmptyError()))
|
||||
}
|
||||
|
||||
this.answerTextView?.movementMethod = LinkMovementMethod.getInstance()
|
||||
}
|
||||
|
||||
override fun injectFragment(component: AppComponent) {
|
||||
component.inject(this)
|
||||
}
|
||||
|
||||
fun setArticle(article: FAQArticle) {
|
||||
this.article = article
|
||||
if (this.questionTextView != null) {
|
||||
this.questionTextView?.text = this.article?.question
|
||||
}
|
||||
if (this.answerTextView != null) {
|
||||
this.answerTextView?.text = MarkdownParser.parseMarkdown(article.answer)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -76,6 +76,13 @@ class AvatarCustomizationFragment : BaseMainFragment() {
|
|||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
arguments.notNull {
|
||||
val args = AvatarCustomizationFragmentArgs.fromBundle(it)
|
||||
type = args.type
|
||||
if (args.category.isNotEmpty()) {
|
||||
category = args.category
|
||||
}
|
||||
}
|
||||
|
||||
setGridSpanCount(view.width)
|
||||
if (recyclerView.layoutManager == null) {
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import android.view.ViewGroup
|
|||
import android.widget.AdapterView
|
||||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.components.AppComponent
|
||||
import com.habitrpg.android.habitica.helpers.MainNavigationController
|
||||
import com.habitrpg.android.habitica.helpers.RxErrorHandler
|
||||
import com.habitrpg.android.habitica.models.user.User
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment
|
||||
|
|
@ -73,10 +74,7 @@ class AvatarOverviewFragment : BaseMainFragment(), AdapterView.OnItemSelectedLis
|
|||
}
|
||||
|
||||
private fun displayCustomizationFragment(type: String, category: String?) {
|
||||
val fragment = AvatarCustomizationFragment()
|
||||
fragment.type = type
|
||||
fragment.category = category
|
||||
activity?.displayFragment(fragment)
|
||||
MainNavigationController.navigate(AvatarOverviewFragmentDirections.openAvatarDetail(type, category ?: ""))
|
||||
}
|
||||
|
||||
override fun updateUserData(user: User?) {
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import android.view.ViewGroup
|
|||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.components.AppComponent
|
||||
import com.habitrpg.android.habitica.data.InventoryRepository
|
||||
import com.habitrpg.android.habitica.helpers.MainNavigationController
|
||||
import com.habitrpg.android.habitica.helpers.RxErrorHandler
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment
|
||||
import io.reactivex.functions.Consumer
|
||||
|
|
@ -116,11 +117,7 @@ class EquipmentOverviewFragment : BaseMainFragment() {
|
|||
}
|
||||
|
||||
private fun displayEquipmentDetailList(type: String, equipped: String?, isCostume: Boolean?) {
|
||||
val fragment = EquipmentDetailFragment()
|
||||
fragment.type = type
|
||||
fragment.isCostume = isCostume
|
||||
fragment.equippedGear = equipped
|
||||
activity?.displayFragment(fragment)
|
||||
MainNavigationController.navigate(EquipmentOverviewFragmentDirections.openEquipmentDetail(type, isCostume ?: false, equipped ?: ""))
|
||||
}
|
||||
|
||||
override fun customTitle(): String {
|
||||
|
|
|
|||
|
|
@ -1,8 +1,6 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments.inventory.items
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.recyclerview.widget.DividerItemDecoration
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
|
|
@ -12,22 +10,19 @@ import android.widget.TextView
|
|||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.components.AppComponent
|
||||
import com.habitrpg.android.habitica.data.InventoryRepository
|
||||
import com.habitrpg.android.habitica.events.commands.OpenMenuItemCommand
|
||||
import com.habitrpg.android.habitica.extensions.inflate
|
||||
import com.habitrpg.android.habitica.extensions.notNull
|
||||
import com.habitrpg.android.habitica.helpers.MainNavigationController
|
||||
import com.habitrpg.android.habitica.helpers.RxErrorHandler
|
||||
import com.habitrpg.android.habitica.models.inventory.*
|
||||
import com.habitrpg.android.habitica.models.user.User
|
||||
import com.habitrpg.android.habitica.ui.adapter.inventory.ItemRecyclerAdapter
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseFragment
|
||||
import com.habitrpg.android.habitica.ui.fragments.NavigationDrawerFragment
|
||||
import com.habitrpg.android.habitica.ui.helpers.RecyclerViewEmptySupport
|
||||
import com.habitrpg.android.habitica.ui.helpers.SafeDefaultItemAnimator
|
||||
import com.habitrpg.android.habitica.ui.helpers.bindView
|
||||
import com.habitrpg.android.habitica.ui.helpers.resetViews
|
||||
import io.reactivex.functions.Consumer
|
||||
import io.realm.OrderedRealmCollection
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
import javax.inject.Inject
|
||||
|
||||
class ItemRecyclerFragment : BaseFragment() {
|
||||
|
|
@ -105,7 +100,7 @@ class ItemRecyclerFragment : BaseFragment() {
|
|||
|
||||
compositeSubscription.add(adapter.getQuestInvitationFlowable()
|
||||
.flatMap { quest -> inventoryRepository.inviteToQuest(quest) }
|
||||
.subscribe(Consumer { EventBus.getDefault().post(OpenMenuItemCommand(NavigationDrawerFragment.SIDEBAR_PARTY)) }, RxErrorHandler.handleEmptyError()))
|
||||
.subscribe(Consumer { MainNavigationController.navigate(R.id.partyFragment) }, RxErrorHandler.handleEmptyError()))
|
||||
}
|
||||
}
|
||||
activity.notNull {
|
||||
|
|
@ -186,7 +181,7 @@ class ItemRecyclerFragment : BaseFragment() {
|
|||
}
|
||||
|
||||
private fun openMarket() {
|
||||
EventBus.getDefault().post(OpenMenuItemCommand(NavigationDrawerFragment.SIDEBAR_SHOPS))
|
||||
MainNavigationController.navigate(R.id.shopsFragment)
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
|
|
|||
|
|
@ -10,23 +10,19 @@ import androidx.core.content.ContextCompat
|
|||
import androidx.appcompat.app.AlertDialog
|
||||
import androidx.preference.Preference
|
||||
import android.text.InputType
|
||||
import android.view.View
|
||||
import android.widget.EditText
|
||||
import android.widget.LinearLayout
|
||||
import android.widget.TextView
|
||||
import android.widget.Toast
|
||||
import com.habitrpg.android.habitica.HabiticaApplication
|
||||
import com.habitrpg.android.habitica.HabiticaBaseApplication
|
||||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.events.commands.OpenGemPurchaseFragmentCommand
|
||||
import com.habitrpg.android.habitica.extensions.layoutInflater
|
||||
import com.habitrpg.android.habitica.extensions.notNull
|
||||
import com.habitrpg.android.habitica.helpers.MainNavigationController
|
||||
import com.habitrpg.android.habitica.helpers.RemoteConfigManager
|
||||
import com.habitrpg.android.habitica.helpers.RxErrorHandler
|
||||
import com.habitrpg.android.habitica.models.user.User
|
||||
import com.habitrpg.android.habitica.ui.views.subscriptions.SubscriptionDetailsView
|
||||
import io.reactivex.functions.Consumer
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
import javax.inject.Inject
|
||||
|
||||
class AuthenticationPreferenceFragment: BasePreferencesFragment() {
|
||||
|
|
@ -75,7 +71,7 @@ class AuthenticationPreferenceFragment: BasePreferencesFragment() {
|
|||
showSubscriptionStatusDialog()
|
||||
return super.onPreferenceTreeClick(preference)
|
||||
}
|
||||
EventBus.getDefault().post(OpenGemPurchaseFragmentCommand())
|
||||
MainNavigationController.navigate(R.id.gemPurchaseActivity)
|
||||
}
|
||||
"reset_account" -> showAccountResetConfirmation()
|
||||
"delete_account" -> showAccountDeleteConfirmation()
|
||||
|
|
|
|||
|
|
@ -68,6 +68,11 @@ class GuildFragment : BaseMainFragment() {
|
|||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
if (arguments != null) {
|
||||
val args = GuildFragmentArgs.fromBundle(arguments)
|
||||
guildId = args.groupID
|
||||
isMember = args.isMember
|
||||
}
|
||||
|
||||
viewPager?.currentItem = 0
|
||||
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ import com.habitrpg.android.habitica.components.AppComponent
|
|||
import com.habitrpg.android.habitica.data.ChallengeRepository
|
||||
import com.habitrpg.android.habitica.data.SocialRepository
|
||||
import com.habitrpg.android.habitica.extensions.inflate
|
||||
import com.habitrpg.android.habitica.helpers.MainNavigationController
|
||||
import com.habitrpg.android.habitica.helpers.RxErrorHandler
|
||||
import com.habitrpg.android.habitica.models.social.Group
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment
|
||||
|
|
@ -100,20 +101,13 @@ class GuildsOverviewFragment : BaseMainFragment(), View.OnClickListener, android
|
|||
}
|
||||
|
||||
override fun onClick(v: View) {
|
||||
val fragment: BaseMainFragment
|
||||
if (v === this.publicGuildsButton) {
|
||||
val publicGuildsFragment = PublicGuildsFragment()
|
||||
publicGuildsFragment.memberGuildIDs = this.guildIDs
|
||||
fragment = publicGuildsFragment
|
||||
MainNavigationController.navigate(GuildsOverviewFragmentDirections.openPublicGuilds())
|
||||
} else {
|
||||
val guildIndex = (v.parent as? ViewGroup)?.indexOfChild(v)
|
||||
val guildId = this.guilds?.get(guildIndex ?: 0)?.id ?: return
|
||||
val guildFragment = GuildFragment()
|
||||
guildFragment.setGuildId(guildId)
|
||||
guildFragment.isMember = true
|
||||
fragment = guildFragment
|
||||
MainNavigationController.navigate(GuildsOverviewFragmentDirections.openGuildDetail(guildId))
|
||||
}
|
||||
activity?.displayFragment(fragment)
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import com.habitrpg.android.habitica.R
|
|||
import com.habitrpg.android.habitica.components.AppComponent
|
||||
import com.habitrpg.android.habitica.data.SocialRepository
|
||||
import com.habitrpg.android.habitica.extensions.notNull
|
||||
import com.habitrpg.android.habitica.helpers.MainNavigationController
|
||||
import com.habitrpg.android.habitica.helpers.RemoteConfigManager
|
||||
import com.habitrpg.android.habitica.helpers.RxErrorHandler
|
||||
import com.habitrpg.android.habitica.models.social.ChatMessage
|
||||
|
|
@ -162,6 +163,7 @@ class InboxFragment : BaseMainFragment(), androidx.swiperefreshlayout.widget.Swi
|
|||
}
|
||||
|
||||
private fun openInboxMessages(userID: String, username: String) {
|
||||
MainNavigationController.navigate(R.id.prefsActivity)
|
||||
val inboxMessageListFragment = InboxMessageListFragment()
|
||||
inboxMessageListFragment.setReceivingUser(username, userID)
|
||||
this.activity?.displayFragment(inboxMessageListFragment)
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@ package com.habitrpg.android.habitica.ui.fragments.social
|
|||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.graphics.PorterDuff
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
|
|
@ -19,9 +18,9 @@ import com.habitrpg.android.habitica.components.AppComponent
|
|||
import com.habitrpg.android.habitica.data.InventoryRepository
|
||||
import com.habitrpg.android.habitica.data.SocialRepository
|
||||
import com.habitrpg.android.habitica.data.UserRepository
|
||||
import com.habitrpg.android.habitica.events.commands.OpenMenuItemCommand
|
||||
import com.habitrpg.android.habitica.extensions.backgroundCompat
|
||||
import com.habitrpg.android.habitica.extensions.notNull
|
||||
import com.habitrpg.android.habitica.helpers.MainNavigationController
|
||||
import com.habitrpg.android.habitica.helpers.RemoteConfigManager
|
||||
import com.habitrpg.android.habitica.helpers.RxErrorHandler
|
||||
import com.habitrpg.android.habitica.models.inventory.QuestContent
|
||||
|
|
@ -30,13 +29,11 @@ import com.habitrpg.android.habitica.models.social.Group
|
|||
import com.habitrpg.android.habitica.models.user.User
|
||||
import com.habitrpg.android.habitica.modules.AppModule
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseFragment
|
||||
import com.habitrpg.android.habitica.ui.fragments.NavigationDrawerFragment
|
||||
import com.habitrpg.android.habitica.ui.views.HabiticaAlertDialog
|
||||
import com.habitrpg.android.habitica.ui.views.social.UsernameLabel
|
||||
import io.reactivex.functions.Consumer
|
||||
import kotlinx.android.synthetic.main.fragment_tavern_detail.*
|
||||
import kotlinx.android.synthetic.main.shop_header.*
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Named
|
||||
|
||||
|
|
@ -126,11 +123,10 @@ class TavernDetailFragment : BaseFragment() {
|
|||
context?.startActivity(i)
|
||||
}
|
||||
faqButton.setOnClickListener {
|
||||
EventBus.getDefault().post(OpenMenuItemCommand(NavigationDrawerFragment.SIDEBAR_HELP))
|
||||
|
||||
MainNavigationController.navigate(R.id.FAQOverviewFragment)
|
||||
}
|
||||
reportButton.setOnClickListener {
|
||||
EventBus.getDefault().post(OpenMenuItemCommand(NavigationDrawerFragment.SIDEBAR_ABOUT))
|
||||
MainNavigationController.navigate(R.id.aboutFragment)
|
||||
}
|
||||
|
||||
worldBossSection.infoIconView.setOnClickListener {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package com.habitrpg.android.habitica.ui.menu
|
||||
|
||||
class HabiticaDrawerItem(val identifier: String, val text: String, val isHeader: Boolean = false, var additionalInfoAsPill: Boolean = true) {
|
||||
class HabiticaDrawerItem(val transitionId: Int,val identifier: String, val text: String, val isHeader: Boolean = false, var additionalInfoAsPill: Boolean = true) {
|
||||
|
||||
var additionalInfo: String? = null
|
||||
var isVisible: Boolean = true
|
||||
|
|
|
|||
|
|
@ -4,9 +4,7 @@ import android.app.AlertDialog
|
|||
import android.content.Context
|
||||
|
||||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.events.commands.OpenGemPurchaseFragmentCommand
|
||||
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
import com.habitrpg.android.habitica.helpers.MainNavigationController
|
||||
|
||||
/**
|
||||
* Created by phillip on 27.09.17.
|
||||
|
|
@ -19,6 +17,6 @@ class InsufficientGemsDialog(context: Context) : InsufficientCurrencyDialog(cont
|
|||
imageView.setImageResource(R.drawable.gems_84)
|
||||
textView.setText(R.string.insufficientGems)
|
||||
|
||||
setButton(AlertDialog.BUTTON_POSITIVE, context.getString(R.string.purchase_gems)) { _, _ -> EventBus.getDefault().post(OpenGemPurchaseFragmentCommand()) }
|
||||
setButton(AlertDialog.BUTTON_POSITIVE, context.getString(R.string.purchase_gems)) { _, _ -> MainNavigationController.navigate(R.id.gemPurchaseActivity) }
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,17 +4,15 @@ import android.content.Context
|
|||
import androidx.appcompat.app.AlertDialog
|
||||
|
||||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.events.commands.OpenGemPurchaseFragmentCommand
|
||||
import com.habitrpg.android.habitica.helpers.MainNavigationController
|
||||
import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper
|
||||
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
|
||||
class InsufficientHourglassesDialog(context: Context) : InsufficientCurrencyDialog(context) {
|
||||
init {
|
||||
|
||||
imageView.setImageBitmap(HabiticaIconsHelper.imageOfHourglassShop())
|
||||
textView.setText(R.string.insufficientHourglasses)
|
||||
|
||||
setButton(AlertDialog.BUTTON_POSITIVE, context.getString(R.string.get_hourglasses)) { _, _ -> EventBus.getDefault().post(OpenGemPurchaseFragmentCommand()) }
|
||||
setButton(AlertDialog.BUTTON_POSITIVE, context.getString(R.string.get_hourglasses)) { _, _ -> MainNavigationController.navigate(R.id.gemPurchaseActivity) }
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ import com.habitrpg.android.habitica.data.InventoryRepository
|
|||
import com.habitrpg.android.habitica.data.UserRepository
|
||||
import com.habitrpg.android.habitica.events.GearPurchasedEvent
|
||||
import com.habitrpg.android.habitica.events.ShowSnackbarEvent
|
||||
import com.habitrpg.android.habitica.events.commands.OpenGemPurchaseFragmentCommand
|
||||
import com.habitrpg.android.habitica.helpers.MainNavigationController
|
||||
import com.habitrpg.android.habitica.ui.helpers.bindView
|
||||
import com.habitrpg.android.habitica.helpers.RemoteConfigManager
|
||||
import com.habitrpg.android.habitica.helpers.RxErrorHandler
|
||||
|
|
@ -33,7 +33,6 @@ import com.habitrpg.android.habitica.ui.views.insufficientCurrency.InsufficientG
|
|||
import com.habitrpg.android.habitica.ui.views.insufficientCurrency.InsufficientGoldDialog
|
||||
import com.habitrpg.android.habitica.ui.views.insufficientCurrency.InsufficientHourglassesDialog
|
||||
import com.habitrpg.android.habitica.ui.views.insufficientCurrency.InsufficientSubscriberGemsDialog
|
||||
import com.playseeds.android.sdk.inappmessaging.Log
|
||||
import io.reactivex.Flowable
|
||||
import io.reactivex.disposables.CompositeDisposable
|
||||
import io.reactivex.functions.Consumer
|
||||
|
|
@ -266,7 +265,7 @@ class PurchaseDialog(context: Context, component: AppComponent?, val item: ShopI
|
|||
if (throwable.javaClass.isAssignableFrom(retrofit2.HttpException::class.java)) {
|
||||
val error = throwable as retrofit2.HttpException
|
||||
if (error.code() == 401 && shopItem.currency == "gems") {
|
||||
EventBus.getDefault().post(OpenGemPurchaseFragmentCommand())
|
||||
MainNavigationController.navigate(R.id.gemPurchaseActivity)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||
|
||||
buildscript {
|
||||
ext.kotlin_version = '1.3.0'
|
||||
ext.kotlin_version = '1.3.10'
|
||||
ext.build_tools_version = '28.0.3'
|
||||
ext.sdk_version = 28
|
||||
|
||||
|
|
@ -17,6 +17,8 @@ buildscript {
|
|||
classpath "io.realm:realm-gradle-plugin:5.8.0"
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||
classpath "gradle.plugin.io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.0.0.RC4-3"
|
||||
classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0-alpha07"
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue